码迷,mamicode.com
首页 > 其他好文 > 详细

struts2学习笔记(一)

时间:2014-08-10 01:43:19      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:http   使用   io   for   问题   cti   res   学习   

一、struts2和struts1的区别

1.Action类

a) Struts1要求Action类继承于一个抽象类,Struts1普遍使用抽象类编程而不是接口

b) Struts2的Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以作为Struts2的Action对象。

2.线程模式

a) Struts1的Action是单例模式并且必须是线程安全的,因为仅有一个Action类来处理所有请求。

b) Struts2的Action对象为每一个请求产生一个实例,因此没有线程安全问题。实际上Servlet容器为每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收的问题。

3.Servlet依赖

a) Struts1 Action依赖于Servlet API,因为当一个Action被调用时,HttpServletRequest和HttpServletResponse被传递给execute方法。

b) Struts2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action依然可以访问原始的request和response。但是,其他的元素减少或者消除了,有直接访问HttpServletRequest和HttpServletResponse的必要性。

4.可测性

a) 测试Struts1 Action的一个主要问题是execute方法暴露了Servlet API(这使得测试要依赖于容器)。一个第三方拓展-Struts TestCase提供了一套Struts1 的模拟对象来进行测试。

b) Struts2 Action可以通过初始化、设置属性、调用方法来测试,"依赖注入"支持使得测试更加容易

5.表达式语言

a) Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对乡土便利,但是对于集合和索引属性的支持很弱。

b) Struts2 可以使用JSTL,它更支持一个更强大和灵活的表达式语言OGNL(Object-Graph Navigation Language)对象图导航语言。

c) Struts1使用标砖JSP机制把对象绑定到页面中来进行访问

d) Struts2使用ValueStack技术,是她个礼拜能够访问值而不需要把页面和对象绑定起来。ValueStack策略允许通过一系列名称相同单类型不同的属性重用页面

6.类型转换

a) Struts1 ActionForm属性通常是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。

b) Struts2 使用OGNL进行类型转换。由它(OGNL)提供基本和常用对象的转换器。

7.校验

a) Struts1 支持在ActionForm的validate()方法中手动校验,或者通过Commons Validator的拓展来校验。同一个类可以有不同的校验内容,但不能校验子对象。

b) Struts2 支持通过validate()方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

8.Action执行的控制

a) Struts1 支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期

b) Struts2 支持通过拦截器堆栈(Interceptor Stacks)为每个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

struts2学习笔记(一),布布扣,bubuko.com

struts2学习笔记(一)

标签:http   使用   io   for   问题   cti   res   学习   

原文地址:http://www.cnblogs.com/Xuen-zhang/p/3896455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!