欢迎来到天天文库
浏览记录
ID:40570134
大小:604.50 KB
页数:21页
时间:2019-08-04
《Struts2集成指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Struts2集成指南关于Struts2Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的Model-View-Controller〔MVC〕设计模式的应用框架〔WebFramework〕,是MVC经典设计模式中的一个经典产品。Struts,ahistory在JavaEE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaSe
2、rverPages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,CraigMcClanahan采用了MVC的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。CraigMcClanahan2006年,WebWork与Struts这两个优秀的JavaEE Web框架(Web Framew
3、ork〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts2”,原Struts的1.x版本产品称为“Struts1”。至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts1与Struts2。Struts1vs.Struts2侵入性Struts1在编程方面是面向抽象类编程,而不是面向接口编程。Struts1要求自定义Action类继承一个特定的抽象基类Action。另一方面,Struts1的Action依赖于ServletAP
4、I,因为Struts1Action的execute方法中有HttpServletRequest和HttpServletResponse方法。e.g.publicclassLogonActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){}}Struts2Action类可以实现一个Action接口,也可以实
5、现其他接口,甚至不实现任何接口。这使得可选的和定制的服务成为可能。e.g.publicclassExampleAction{publicStringdoSomething(){return"success";}}线程模式Struts1Action类是单例模式并且必须是线程安全的,因为在web容器中,仅有Action类的一个实例来处理所有的请求。Struts2Web容器为每一个请求产生一个Action类实例,因此没有线程安全问题。可测试性Struts1由于对ServletAPI的依赖,使得针对于自定义Action类的测试变
6、得复杂。Struts2由于自定义Action可以为POJO,所以可以向测试一个POJO一样来测试Action类。请求参数封装Struts1使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm。普通的JavaBean不能用作ActionForm,并且需要在配置文件中定义ActionForm。e.g.publicclassLogonFormextendsActionForm{privateStringuserpassword;privateStringusernam
7、e;}Struts2直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的Rich对象类型。e.g.publicclassExampleAction{privateStringresponseMessage;privateStringrequestMessage;publicStringgetResponseMessage(){returnresponseMessage;}publicvoidsetResponseMessage(String
8、responseMessage){this.responseMessage=responseMessage;}publicStringgetRequestMessage(){returnrequestMessage;}publicvoidsetRequestMessage(StringrequestMessage){
此文档下载收益归作者所有