struts2是在struts1和WebWork技术的基础上进行合并后的全新框架。其核心是WebWork。
1、本质区别:struts2的核心是基于Filter实现的,而struts1的核心是ActionServlet。struts2在web.xml中定义了一个FilterDispatcher(StrutsPrepareAndExecuteFilter)来拦截客户端的请求,而struts1在web.xml中定义了一个ActionServlet来拦截客户端的请求。
2、线程方面:struts2采用WebWork的核心,对于每一个request请求都会创建一个Action实例,没有线程安全问题。而struts1中Action是单例模式并且必须是线程安全的(因为只有一个Action实例处理所有请求,所以必须是线程安全的),单例的好处:多个request共用一个Action实例,节省了资源,但由于共用,线程不安全(not thread safe)。
3、Action实现类方面:struts1的Action在实现时必须继承Action类或者Action的子类,而struts2的Action在实现时可以不用实现任何类和接口,也可以实现Action接口和其它接口,实现了可选和定制服务。同时struts2提供了一个ActionSupport基类实现常用的接口,但是不是必须要实现的。只要实现了public String execute()方法的POJO类都可以当做struts2的Action
4、struts2提供了拦截器(Interceptor)等struts1没有的技术。
网友评论