最近在刷各位大神的博客。然后自己做点练习。我做demo都是用maven,然后在一篇文章
http://blog.youkuaiyun.com/shan9liang/article/details/8690179
在使用调用Action的接口的时候发现他是用前面那个包引入Struts2但是我在实际项目中却是自动引入了opensymfony
搜了下发现这是struts1和struts2的区别。好吧,对struts的历史,那么刚好补补课
理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法。
Struts1是抽象类编程,Action是个抽象函数,Struts2的Action是接口。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
Struts1.x最大的革命性的不同是,Struts2处理Action过程中调用的方法(“execute”方法)是不带参数的。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
详细的不同点可以参照这篇文章。
http://blog.youkuaiyun.com/john2522/article/details/7436307