以前都用的struts1,最近公司要用到struts2,就研究了一下,说的不对请指正,都是自己的一点认识吧,写在其他地方怕掉了,写在这里以后可以常来看。。。
刚听说struts2的时候还以为是struts1的升级版呢,后来才知道,struts2是从webwork的基础上发展起来的.struts2应该是优于struts1的。
我们来分析一下struts1的缺陷:
1、struts1只支持jsp一种表现层技术,不提供和其他表现层技术的整合(Velocity、FreeMarker),这样严重制约了struts1的发展。
2、struts1和servlet的高耦合性,难于测试也严重制约了struts1的发展。struts1是在Model2的基础上发展起来的,严重依赖于servlet,在struts1的业务控制器里面,存在大量的servlet的API,一个业务控制器里面你需要初始化ActionMapping、ActionForm、HttpServletRequest、HttpServletResponse 4个参数,特别是HttpServletRequest、HttpServletResponse需要web容器来实例化,一旦脱离了web服务器测试相关困难。同时系统需要重构的时候,因为包含了大量的servlet API 所有的action全部没有作用,变成废品。侵入式太严重。
struts2的优点:
1、支持多种表现层的技术(JSP、Velocity、FreeMarker、XLST),这点表现在struts2的配置action的文件里面,有2个属性:name 就是返回的字符串 type:制定转向的资源类型(可以是jsp、FreeMarker、甚至是另一个action)。
2、耦合性降低了,在struts2中通过过滤器来筛选请求,应该发送给哪一个业务控制器。实际上载struts2中起作用的业务控制器不是用户定义的业务控制器,而是系统生成的action代理,action指向用户创建的业务控制器。在用户自己定义的action中不需要实现认识父类,完全就是一个pojo对象,耦合性很低。
刚听说struts2的时候还以为是struts1的升级版呢,后来才知道,struts2是从webwork的基础上发展起来的.struts2应该是优于struts1的。
我们来分析一下struts1的缺陷:
1、struts1只支持jsp一种表现层技术,不提供和其他表现层技术的整合(Velocity、FreeMarker),这样严重制约了struts1的发展。
2、struts1和servlet的高耦合性,难于测试也严重制约了struts1的发展。struts1是在Model2的基础上发展起来的,严重依赖于servlet,在struts1的业务控制器里面,存在大量的servlet的API,一个业务控制器里面你需要初始化ActionMapping、ActionForm、HttpServletRequest、HttpServletResponse 4个参数,特别是HttpServletRequest、HttpServletResponse需要web容器来实例化,一旦脱离了web服务器测试相关困难。同时系统需要重构的时候,因为包含了大量的servlet API 所有的action全部没有作用,变成废品。侵入式太严重。
struts2的优点:
1、支持多种表现层的技术(JSP、Velocity、FreeMarker、XLST),这点表现在struts2的配置action的文件里面,有2个属性:name 就是返回的字符串 type:制定转向的资源类型(可以是jsp、FreeMarker、甚至是另一个action)。
2、耦合性降低了,在struts2中通过过滤器来筛选请求,应该发送给哪一个业务控制器。实际上载struts2中起作用的业务控制器不是用户定义的业务控制器,而是系统生成的action代理,action指向用户创建的业务控制器。在用户自己定义的action中不需要实现认识父类,完全就是一个pojo对象,耦合性很低。