流程:
1. StrutsPrepareAndExcuteFilter:StrutsPrepareAndExcuteFilter作为前端控制器,是整个Struts2的调度中心。
2. ActionMapper:ActionMapper负责识别当前的请求是否需要Struts2做出处理。
3. ActionProxy:这个对象作为Action与xwork之间的中间层,会代理Action的运行过程。
4. ActionInvocation:ActionInvocation对象描述了Action运行的整个过程。
5. 进入拦截器
6. Action
7. result:获取页面处理模板
8. 退出拦截器
9. httpServetResponse
Struts2 拦截器 和 过滤器 的区别 :
1. 拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
2. 拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
3. 在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
Struts2 中的默认包 struts-default 有什么作用?
1). struts-default 包是 struts2 内置的,它定义了 struts2 内部的众多拦截器和 Result 类型,而 Struts2 很多核心的功能都是通过这些内置的拦截器实现,如:从请求中把请求参数封装到action、文件上传和
数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使用struts2为我们提供的这些功能。
2). struts-default 包是在 struts-default.xml 中定义,struts-default.xml 也是 Struts2 默认配置文件。Struts2 每次都会自动加载 struts-default.xml文件。
3). 通常每个包都应该继承 struts-default 包。
1. 防止表单重复提交的两种方式:
1). 通过重定向。页面重定向到完成页面。(推荐)
2). 通过session token(token令牌)
2. 在web.xml中设置字符编码
3. * 的运用
4. struts-2.0.dtd用于检查struts2.xml的格式
5. token拦截器的参数名只能是includeMethods,不可以是excludeMethods。
6. default.properties的位置
7. 提交页面后缀加不加action根据web.xml中的过滤器而定。
8. stuts2标签提交方式自动设为post。
9. struts2标签,密码不会显示。
10. strust2每次访问都生成一个新的action对象。
11. action一般继承com.opensymphony.xwork2.ActionSupport。
12. 先类型转换, 后输入校验。 有错误时会自动存入到fieldError中。
13. 使用框架来验证错误信息(有相应的dtd文件和war包中的例子,可以帮助)
里面可以用el表达式。<message>中还可以通过key来取值,可以使用国际化:
type的值是特定的。
对应国际化的properties文件
帮助文档在:xwork-core-2.2.1.jar中的:
defalut.xml中。
框架内部自动会消除网页传过来内容中的空格(doTrim),可以通过<param name="trim">false</param>不让它消除空格。用框架验证来消除填写空格麻烦事。!!!!!!!!!!不配置trim。
14. chain 一个action到另一个action,在 一个请求中 。redirect 两个请求。
15. ActionContext的getSession方法返回的是一个map集合。该map集合是session底层实现,键值对。存到session中的值,可以通过map.get()方法取出来。
16. struts的配置文件中,可以重定向到其他的action。若有参数,那么给谁传,参数跟谁中的属性名保持一致。重定向才能携带参数。请求转发中参数是页面传来的,配置文件中加的参数没效果。配置文件中加参数不常用。
17. 带参数重定向:
18. struts之所以能给参数自动赋值,找的是方法,不是找名字。
19. 可以让action实现接口Preparable接口,实现里面的prepare方法。该方法,在action中方法执行前先执行,可以用于初始化。
20. 无状态:没有可修改的成员变量
21. 拦截过滤的是execute方法。执行方法拦截器时,先检查是否需要拦截,再选择执行。
22.
23. struts中可以新建一个struts.properties文件,它里面放相应的default.propertie中的相应属性等。可以通过struts.properties中配置文件来设置文件的上传大小(里面不要有乘法号(*))等在xml中
配置的constant配置的属性。struts.properties中配置的是全局的。
24.
25. @Action中可以配置很多东西
26. strust2中配置文件加载顺序
27. 方法过滤拦截器,拦截方法。PreResultListener类监听器,它的beforeResult方法在拦截器的invoke执行后执行。
28. web.xml中的配置的文件,原filter不建议被使用了。
29. struts2提供了35拦截器,18个为默认。
30. struts标签hidden中加name值,会自动找到value值。若也加上value值,实际value值将无法显示。
原文:http://www.cnblogs.com/doudouxiaoye/p/5693414.html