struts2标签

5、拦截器与标签库

蹲街弑〆低调 提交于 2019-12-02 16:02:22
一、拦截器概述: 拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。拦截是AOP的一种实现策略。在Webwork的中文文档的解释为:拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。 二、拦截器原理: 大部分时候,拦截器方法都是通过代理的方式来调用的。Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。Struts2拦截器是可插拔的

3、Struts2的API访问和数据封装

让人想犯罪 __ 提交于 2019-12-02 13:40:31
一、API的访问 在使用Struts2的框架的过程中,发现Struts2和Servlet的API是解耦合的。在实际开发中,经常使用到Servlet的API,比如进行登录,将用户的信息保存到Session中, 有的时候需要向页面输出一些内容,用到response对象。涉及到Servlet的API的访问。 1、 完全解耦合的方式,通过ActionContext类访问[推荐] Struts2框架提供了ActionContext类来访问Servlet API,ActionContext是Action执行的上下文对象。在ActionContext中保存了Action执行所需要的所有对象, 包括parameters,request,session,application等。 // 将key-value键值对放入ActionContext中,模拟Servlet API中的HTTPServletRequest 的setAttribute()方法 void put(String key,Object value) // 通过参数Key来查找当前ActionContext中的值 Object get(String key) // 返回一个Application级的对象 Map<String,Object> getApplication() // 获取当前线程的ActionContext对象

eclipse搭建Struts2入门小例子

南楼画角 提交于 2019-12-02 11:05:12
利用eclipse创建一个web工程 导入用到的jar包 开发包下载 打开下载的Struts2开发包 struts-2.3.37->lib下的可以发现有106个jar包但是在实际开发中用不到这么多的jar包 要进行struts2的基本的开发,可以参考struts-2.3.24中的apps下的一些示例代码,其中 struts2-blank.war 是一个 struts2的空的工程。我们只需要将struts2-blank.war解压后进入到WEB-INF 下的lib中查看。 注意:需要将 struts2-blank.war 文件修改后缀 修改为(struts2-blank.zip) 然后右键就可以解压了 把lib里的jar包导入到web项目中 jar包的作用 文件名 说明 asm-3.3 jar 操作java字节码的类库 asm-comnwns-3.3 jar 提供了基于事件的表现形式 asm-tree-3.3.jar 提供了基于对象的表现形式 struts2-core-2.3.24.jar struts2框架的核心类库 xwork-core-2.3.24jar WebWork核心库,struts2的构建基础 ognI-3.0.6jar 对象图导航语言(Object Graph Navigation Language), struts2框架通过其读写对象的属性 freemarker-2

1、Struts2基本入门

房东的猫 提交于 2019-12-02 02:49:07
一、了解了这几个主要的优点,会促使你考虑使用Struts2 :     1、POJO表单及POJO操作 - Struts2 去除掉了Struts框架中的Action Forms部分。在Struts2框架下,你可以用任何一POJO来接收表单输入,同样的,你可以把任一POJO视为一个Action类。     2、标签支持 - Struts2 改进了标签表单,而新的标签可让开发人员减少代码编写量。     3、AJAX支持 - Struts2 被认可接收进Web 2.0技术,并创建了功能非常类似于标准的Struts2 标签的AJAX标签,把AJAX支持整合进其结果中。     4、易于整合 - Struts有多种整合方式可使用,现在与其他类型的框架,如Spring、Tiles、SiteMesh之类的,整合更为容易了。     5、模板支持 - 支持使用模板生成视图。     6、插件支持 - 有大量的插件可用于Struts2,而使用插件可以增强和扩大Struts2 核心行为。     7、促进减少配置 - Struts2 使用各种设置的默认值促进减少配置,而你不需要再配置什么除非是偏离了Struts2 设定的默认设置。     8、视图技术 - Struts2 为多种视图选项(JSP、Freemarker、Velocity、XSLT等)提供支持。 二、三层开发模型 MVC 模型

Struts2 配置文件result的name属性和type属性

谁都会走 提交于 2019-12-01 22:38:08
Struts2 配置文件result的name属性和type属性: Name属性 SUCCESS:Action正确的执行完成,返回相应的视图,success是 name属性的默认值; NONE:表示Action正确的执行完成,但并不返回任何视图; ERROR:表示Action执行失败,返回到 错误处理视图; INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进 行验证,如果验证没有通过,将自动返回到该视图; LOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行 登陆验证。 Type属性: dispatcher:请求转发,底层调用RequestDispatcher的forward()或include()方 法,dispatcher是type属性的默认值,通常用于转向一个JSP,localtion指定JSP的位置,parse如果为false表示 location的值不会被当作OGNL解析,默认为true; redirect:重定向,新页面无法显示Action中的数据,因为底层调用 response.sendRedirect("")方法,无法共享请求范围内的数据,参数与dispatcher用法相同; redirect- action:重定向到另一个Action

震惊!!!SSM居然是这样的!

北战南征 提交于 2019-12-01 19:30:20
SSM框架 SSM ( Spring+SpringMVC+MyBatis )框架集由 Spring 、 MyBatis 两个开源框架整合而成( SpringMVC 是 Spring 中的部分内容)。常作为数据源较简单的 web 项目的框架。 一、 Spring 部分    Spring 就像是整个项目中装配 bean 的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。    Spring 的核心思想是 IoC (控制反转),即不再需要程序员去显式地 `new` 一个对象,而是让 Spring 框架帮你来完成这一切。 1 、 Spring 的运行流程 第一步:加载配置文件 ApplicationContext ac = new ClassPathXmlApplicationCont ext("beans.xml"); , ApplicationContext 接口,它由 BeanFactory 接口派生而来,因而提供了 BeanFactory 所有的功能。配置文件中的 bean 的信息是被加载在 HashMap 中的,一个 bean 通常包括, id , class , property 等, bean 的 id 对应 HashMap 中的 key , value 呢就是 bean 第二步:调用 getBean 方法,

Struts.properties

可紊 提交于 2019-12-01 12:50:05
Struts2提供了很多可配置的属性,通过这些属性的设置,可以改变框架的行 为,从而满足不同的Web应用的需求。这些属性可以在Struts.properties文件中进行设置,struts.properties是标准的 Java属性文件格式,"#"号作为注释字符,文件由键(Key)-值(value)对组成,struts2的属性为键,属性的值为值。 struts.properties文件必须位于classpath下,通常放在Web应用程序的/WEB-INF/classes目录下。 struts2在default.properties文件(位于struts2-core-2.0.11.jar中的org\apache \struts2目录下)中给出了所有属性的列表,并对其中的一些属性设置了默认值。如果你创建了struts.properties文件,那么在该文件 中的属性设置会覆盖default.properties文件中的属性设置。 default.properties文件给出的属性及属性的作用如下: struts.configuration 指定用于配置Struts2的Configuration借口的实现类,默认使用的是 com.opensymphony.xwork2.config.impl.DefaultConfiguration类。你可以实现 com.opensymphony

Struts2 校验框架学习笔记

痴心易碎 提交于 2019-12-01 12:49:44
truts2 校验框架 Struts2 和 Struts1 同样也提供了校验框架 , 但在 Struts2 已经不再把校验框架做为一个插件 , 而是已经内置到了 Struts2 中 , 而且配置起来更为简单方便 , 功能也更强大。 下面以一个例子来说明 Struts2 校验框架的使用。 1 在 myeclipse 中创建一个 web 工程,在 src 目录下创建 struts.xml 配置文件,添加好 xml 标头,配置 web.xml 文件。 1-1 .了解一下我做的简单例子需求,实现一个用户注册的功能,用户信息包括用户名,密码,确认密码,年龄,出生日期,毕业日期等信息。在注册过程需要提供以下校验规则: [1] 用户必填,长度在 6-10 之间 [2] 密码和确认密码必填,两次输入密码要一致长度,在 6-10 之间 [3] 年龄必须是数字 界于 1-150 之间 [4] 出生日期和毕业日期必填,且出生日期必须早于毕业日期 要求:使用 struts2 提供的 xml 配置方式进行校验。 1-2 .首先创建一个 register.jsp 页面,代码如下: <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖)

北城余情 提交于 2019-12-01 12:47:54
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框架的项目访问速度,明显不如原来采用了struts1框架的项目快,带着这些疑惑,我对各类MVC框架的做了一个简单的性能分析比较,其结果应该说是基本符合预期的,可供大家参考。 测试环境:CPU:酷睿2 T5750,内存:DDR2-667 2G,Web容器:Tomcat6.0,最大线程数设置为1000,操作系统:WinXP-sp3 测试步骤:搭建6个Web工程,如下: 1.纯JSP:不包含任何MVC框架,只有一个测试用的JSP页面。 2.struts1:包含一个Action,不做任何逻辑处理,直接转发到一个JSP页面 3.struts2 JSP:不包含Action,只包含测试JSP页面,直接访问该页面。 4.struts2 单例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。 5.struts2 多例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。 6.SpringMVC3:采用Spring来管理Controller实例,包含一个Controller,不做逻辑处理

Web上传文件的三种解决方案

我只是一个虾纸丫 提交于 2019-12-01 05:32:53
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = null; String fileAddre = "/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取系统当前路径 File file1 = new File(filePath);//添加了自动创建目录的功能 ((File)file1).mkdir(); newfileName = System.currentTimeMillis() + file.getFileName().substring( file.getFileName().lastIndexOf('.')); ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + newfileName); newpathname = filePath + "/" +