黑马程序员——对struts2的理解总结

来源:互联网 发布:d3.js 百度百科 编辑:程序博客网 时间:2024/05/29 07:44

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Struts2是在WebWork基础发展而来的。webwork是一个面向切面的开源框架,而webWork是基于xwork发展而来的,

Xwork它是一个命令模式 Struts2也属于MVC框架。把webwork改了一个名字就变成了strust2,

来源:struts2为了解决Struts1表现层的单一以及与Servlet API的严重耦合而出现的, 使应用难于测试。属于侵入性框架。所以产生了在webwork的基础上发展起来的struts2。

2. strust2的优缺点

优点:支持Ajax

支持Ognl标签

提供了强大的拦截器

线程安全 因为每次请求都会产生一个实例

缺点:耦合度低 比较复杂,源代码不好调试。

国际化 :提供了全局范围、包范围和Action范围的国际化资源文件

struts2有30多个拦截器,但我们最常用的有18个拦截器

拦截器的好处:可以进行面象切面编程

4.经验和教训:strust2双向类型转换(页面----action----页面回显)

1.关闭开发模式

3.不要使用不需要的拦截器 因为会把每个类都拦截一次,这样

会导致性能比较慢

4.尽量使用页面缓存

5.web-inf下创建一个freemarker.properties文件,因为strust的标签都是freemarker做的

6.使Freemarker模版定制标签缓存

7.不要在session里面放东西。尽量放在request里面

ActionSupport:1.实现了Action接口;2.实现了国际化;3.实现了校验

继承ActionSupport的好处:

继承了Action,Action提供了5个常量:SUCCESS、ERROR、LOGIN、INPUT、NONE。

实现了国际化

实现了校验(struts2中Action要实现国际化和校验必须继承ActionSupport)

Struts2请求处理流程

1、客户端发送请求 (客户端初始化一个指向Servlet容器(如Tomcat)的请求)

2、请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等),ActionContextCleanUp-->FilterDispatcher

3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action 如果不是调用action 则直接执行你的资源

4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,

5、ActionProxy通过Configuration Manager询问Struts配置文件(Struts.xml),找到需要调用的Action类。

6、ActionProxy创建一个ActionInvocation的实例

7、ActionInvocation通过一系列的拦截器调用真正的Action,当然这涉及到相关拦截器的调用

8、Action执行完毕,ActionInvocation创建Result并返回,返回结果前要做些动作也是可以的

Filter与servlet的区别:

Filter必须实现javax.Servlet.Filter接口,并且必须定义以下三个方法:init(),destory(),doFilter().

Servlet一般继承HttpServlet,当Url匹配这个Servlet时候运行处理请求;如果加上load-on-start为1时候,Web应用启动时候加载此Servlet;

struts2与struts1的比较

1 核心控制器改为了过滤器

2 struts1要求我们的业务控制器必须继承action或者dispatchaction struts2不强制你这么做

只需提供一个返回string类型的execute方法

3 绑定值到业务类 struts1 通过actionform struts2直接绑定到action属性

4 struts1严重依赖于servle方法的校验。struts2则不然

5 管理action struts1 单例因为仅有Action的一个实例来处理所有的请求。 struts2 每个请求都会产生一个实例 (原型)

6 从表达式的支持上,struts2不仅支持jstl,还支持功能更为强大的ognl表达式

7 strust1类型转换是单向的(页面到ActionForm),strust2双向类型转换(页面----action----页面回显)

8 校验 strust没有针对具体方法的校验 当然它有自己的针对path验证

9 struts2支持的视图技术除了jsp之外 还有freemaker velocity 源代码等 struts1只是单一的表现层技术jsp

截等功能。

10 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦

11 提供了全局范围、包范围和Action范围的国际化资源文件管理实现


0 0
原创粉丝点击