struts2的由来:利用WebWork2的核心+struts1的名气,由此可见,struts2与struts1的编程风格差别很大。struts2与struts1的区别:1、struts2是无侵入式设计,而struts1是侵入式设计(struts1中的所有action都要继承一个Action类,并覆写其中的execute(abstract)方法,这里引入一个老生常谈的类:
<span style="white-space:pre"> </span>public ActionForward execute(ActionMapping mapping,
ActionForm form,
javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
throws java.lang.Exception
这里的
javax.servlet.ServletRequest request还有response都是当作参数传进来,如果没有这两个参数,
,则使用不了struts1的框架,这里的框架与API的耦合度高。 但是在struts2种的execute方法,变成了这样:
String execute()throws Exception
</pre><pre name="code" class="java"> 这里是空参,这意味着,struts2实现了与servletAPI和strutsAPI的解耦。判断是否为侵入式设计,网上说这个是相对的,struts2相对于struts1来说,没有那么依赖servletAPI和strutsAPI,但是这个框架还是要运行在servlet容器(或者说引擎)里)
2、struts1对于用户输入的数据要进行数据的转换时,要通过底层调用BeanUtils来进行数据转换器的注册,而struts2把这些步骤都写到框架里面了。
3、struts2提供了拦截器(过滤器又名拦截器,俗名:保安),利用拦截器可以实现AOP编程(面向方面编程),在struts1中,Mvc的C是servlet,
在struts2是filter。
4、struts1中对于用户输入的信息进行验证时,必须对所有的字段进行验证,而struts2中,可以对指定的字段进行验证。
5、struts1的显示层只支持jsp,但struts2支持jsp、 velocity(myEclipse的jsp模版就是使用它写的)等。
6、struts2提供了全局范围、包范围、action范围的国际化资源文件的管理(其中国际化资源文件的扩展名为:*.properties)
以上,欢迎纠错