struts1和2的区别总结
2016-02-15 17:29
302 查看
Struts2主要改进是取代了Struts1的Servlet和Action。
1、Struts2的核心框架是当作一个filter来实现其功能的,而Struts1是ActionServlet。这是本质区别。struts1通过servlet来拦截客户端的请求,因为在web.xml里定义了一个ActionServlet。struts2通过filter来拦截客户端的请求,因为在web.xml里定义了一个FilterDispatcher。struts1 是struts的核心,是基于servlet的API,struts2 是webwork的核心。基于自己的API。
2、 struts1通过actionform来封装客户端提交的表单数据,struts2通过在action中定义getter setter来获取表单数据。
3、在Action上,Struts1都少不了要传递Request等参数,还要继承Action父类,而Struts2只要实现了一个publicString execute()就可以了,这样Action就可以实现脱离Servlet 测试。
Struts2还提供了拦截器(Interceptot)等Struts1所没有的技术。
4、线程方面,Struts1 Action是单例模式并且必须是线程安全的,因为只有Action的一个实例来处理所有请求。要求线程必须是安全的。Struts2 Action对象为每一个请求创建一个独立的对象实例,因此不存在线程安全的问题。Struts1,server启动后,对用户的每个request, 后台controller会mapping其对应的ACTION,如果是首次访问,则initialize。单例的好处:多个request共享一个ACTION
instance,节省了资源,但由于共享,not thread safe,需要额外小心。Struts 2,采用Webwork的核心引擎,每个request会new 出一ACTION instance, 不用考虑thread safe问题。
5、一个简单的配置文件struts.xml取代了struts1里面的strut-config.xml。
1、Struts2的核心框架是当作一个filter来实现其功能的,而Struts1是ActionServlet。这是本质区别。struts1通过servlet来拦截客户端的请求,因为在web.xml里定义了一个ActionServlet。struts2通过filter来拦截客户端的请求,因为在web.xml里定义了一个FilterDispatcher。struts1 是struts的核心,是基于servlet的API,struts2 是webwork的核心。基于自己的API。
2、 struts1通过actionform来封装客户端提交的表单数据,struts2通过在action中定义getter setter来获取表单数据。
3、在Action上,Struts1都少不了要传递Request等参数,还要继承Action父类,而Struts2只要实现了一个publicString execute()就可以了,这样Action就可以实现脱离Servlet 测试。
Struts2还提供了拦截器(Interceptot)等Struts1所没有的技术。
4、线程方面,Struts1 Action是单例模式并且必须是线程安全的,因为只有Action的一个实例来处理所有请求。要求线程必须是安全的。Struts2 Action对象为每一个请求创建一个独立的对象实例,因此不存在线程安全的问题。Struts1,server启动后,对用户的每个request, 后台controller会mapping其对应的ACTION,如果是首次访问,则initialize。单例的好处:多个request共享一个ACTION
instance,节省了资源,但由于共享,not thread safe,需要额外小心。Struts 2,采用Webwork的核心引擎,每个request会new 出一ACTION instance, 不用考虑thread safe问题。
5、一个简单的配置文件struts.xml取代了struts1里面的strut-config.xml。
相关文章推荐
- struts2拦截器的理解
- 浅析Java中的访问控制权限
- spring中常用工具类介绍
- java程序启动参数设置
- eclipse利用mybatis-generator生成代码
- spring学习笔记(一)快速搭建一个spring boot应用
- 一句话总结java23种设计模式
- java ImageIO处理图像的封装工具类
- 深入浅出学Spring Data JPA
- 在SpringMVC中使用Jackson并格式化时间
- Java多线程编程总结
- java 多线程操作
- java正则表达式去掉所有HTML标签
- 【Java】----宏观感性认识
- java获得系统当前时间
- 解决 RMContainerAllocator: Exception while unregistering java.lang.NullPointerException问题
- Java学习笔记2:Java中Integer与String == 的使用
- hbase java api 类介绍
- eclipse项目中启动项目无法载入类
- java中两种单例模式