您的位置:首页 > 编程语言 > Java开发

2011级-csdn-java-张侃— struts2的优点

2013-03-03 15:18 477 查看
ApacheStruts在2000年5月由CraigMcClanahan发起,并于2001年7月发布了1.0版本。从技术的角度上讲,它是在开发Web程序上的一次跨越性的进步,但更重要的是,它是在最恰当的时候出现在了人们的眼前。Struts一出现便大受欢迎,更成为了以后几年内web开发的实际标准。Struts2是Struts的下一代产品。最初提案StrutsTi所设想的发展方向,在Struts的现有代码的基础上是很难完成的。在发起提案的时候,PatrickLightbody把多个不同的Web框架的领导者邀请到了一起,希望大家能够协力完成一个通用的框架。但因种种原因,只有WebWork和Struts走到了一起。Struts2吸取了Struts1.x和WebWork的各种优点,更改了一些不足的地方,比如移走了原来WebWork中的IOC实现,引入Spring的IOC实现等。Struts2的目标就是----使Web开发更加容易。今天摆在web开发人员面前的是众多的web开发框架,有些来自开源社区,有些来自商业公司,以满足各种web开发需要,到目前为止,有最少超过40种的web开发框架,那我们为什么要选择Struts2呢?下面列出一些Struts2的特性。基于pojo易于测试在Struts1.x中我需要Mock出这两个Http对象,使我们很难编写Action的单元测试,与Struts1.x相比,Struts2的Action不再依赖于HttpServletRequest和HttpServletResponse对象,使我们能够更方便的针对Action编写单元测试。Struts2的单元测试看起来就像这样:
<SPANstyle="COLOR:#000000">publicvoidtestEnrol(){
userinfoAction.setUsername("wangwu");
userinfoAction.setUserPassword("123456");
userinfoAction.setMail("");
Stringresult=userinfoAction.enrol();
assertEquals("success",result);
}
</SPAN>
与Spring的集成与Struts1.x相比,Struts2不必再自己编写singleton,进一步的降低了程序间的耦合性,就Struts2内部本身而言,降低了框架本身的偶合性。更加的模块化与Struts1.X相比,Struts2更加的模块化,可以轻松将配置信息按功能界限拆分成多个文件,便于管理和团队协作开发。基于插件的框架Struts2是一个基于插件的框架,社区中提供了很多实用的插件,比如jfreechat/json等等,使用这些插件可以简化我们的开发,加快开发进度。大量的拦截器Struts2本身提供了大量的可重用的拦截器,比如类型转换拦截器,很多时候我们从页面取得参数,这个时候它是String类型的,我们需要手动的把它转成Long型的或是Integer型的再使用,在Struts2中你不必这样做,Struts2中已经帮你做了这些事情了。当然我们也可以实现自定义的拦截器,比如:权限检查拦截器来做访问控制。惯例大于配置惯例大于配置是Struts2的架构目标,比如我们需要对页面输入的数据进行验证,只需取一个跟Action同名的xxAction-validation.xml文件,Struts2就会自动的进行验证。还有很多,比如国际化资源文件等。多种视图的支持多种视图的支持:jsp,freemarker,Veloctiy,只要你愿意,你甚至可以通过轻松的改造让它支持pdf,同一个项目中你可以支持多种视图。申明式的异常处理Struts2提供了方便的申明式异常处理,它看起来像这样:
<SPANstyle="COLOR:#000000"><global-results><resultname="licenceException">/WEB-INF/pages/client/licenceException.jsp</result><resultname="payException">/WEB-INF/pages/client/unPay.jsp</result><resultname="accessDeny">/WEB-INF/pages/client/accessDeny.jsp</result></global-results><global-exception-mappings><exception-mappingexception="com.yeebobo.yeebox.web.licence.LicenceException"result="licenceException"/><exception-mappingexception="com.yeebobo.yeebox.web.licence.PayException"result="payException"/></global-exception-mappings><SPANstyle="FONT-SIZE:14px"></SPAN></SPAN>
如果你以前是WebWork的用户,那么你会觉得Struts2和WebWork实在是太像了,当然如果你以前是Struts1.x的忠实用户,也能够快速的过渡到Struts2的开发中来,如果你重来没有用过任何框架,你也可以通过快速的学习,加入到Struts2的应用开发中来,因为它足够的简单。
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: