(1)struts1必须要继承一个抽象基类(DispatchAction)
struts2 只要是一个有execute方法的POJO就可以,不用一定继承
但是,struts2一般继承一个com.opensymphany.xwork2.ActionSupport来实现一些常用方法。
(2)struts1的Action是单例,所以必须是线程安全并且同步的。(servlet也是单例)
struts2的Action是针对每一个请求,所以不存在线程安全的问题。
(3)表达式
struts1和JSTL结合,所以可以用JSTL的EL表达式
struts2也支持JSTL,但是框架也支持更加强大的OGNL表达式
(4)servlet的依赖
struts1的Action依赖servletAPI
struts2对容器的连接并不紧密
(5)输入处理
struts1使用一个ActionFrom对象来获取用户的输入
struts2使用Action的属性作为输入的属性,除去了输入对象的要求。
针对4 例如:
struts1 必须要新建一个XXXfrom,继承一个ActionFrom,并配置在struts.xml中。这个from的属性对应页面from
然后方法是 XXlogin(ActionMapping a,ActionFrom b,HttpServletRequest r,HttpServletResponse p)
其中,actionFrom是用来强转XXXfrom然后获取页面表单内容的。ActionMapping是用来跳转的。
struts2 无要求
方法 XXXlogin();
无入参,页面的值都是Action的属性,能自动对上
如果要获取request
ServletActionContext.getRequest来这么获取request