struts1和struts2的区别


? Struts1 Action是单例模式并且必须是线程安铨的因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事并且要在开发时特别小心。Action资源必须是线程安全的或同步的 
? Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题(实际上,servlet容器给每个请求产生许多可丢弃的对象并且不会导致性能和垃圾回收问题) 
? Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易  
? Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。 
? Struts 2直接使用Action属性作为输入属性消除了对第二个输入对象的需求。输入属性可能是有自己(子)屬性的rich对象类型Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式rich对象类型,包括业务对象能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入對象的引用 
}

然后在这个Action里面的某一个方法里對这个i进行操作

当访问这个Servlet的时候,你访问多少次i的值就是多少。

所以:我们在用Struts1的时候不能在Action里面定义属性要用到的话只能在方法里面定义。

Struts2的Action是线程安全的它的解决方式是:Struts2会获取到用户的http请求,然后负责给每个请求实例化一个Action对象但这里的Action对象和Struts1的Action对象不昰一个概念,Struts1里的Action类就是一个Servlet类而这里的Action类只是一个普通的Java

Struts2截取Servlet请求,然后给每个请求实例化一个Action对象请求结束后销毁Action对象。

    就是说Tomcat容器对Servlet的实现采用的是单例模式,对于一个Servlet类永远只有一个Servlet对象存在。


}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信