- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
整合Struts+Hibernate+Spring的基本流程Struts相对来说算是最简单的了,至于Hibernate,最基本的当然是它的ORM机制了,学了Hibernate,才真正体会到完全的面向对象编程,结合HQL,对数据库的操作进行了很大幅度的封装,它的复杂之处在于缓存的管理和抓取策略,如果处理得不好,不仅不会提高效率,反而会加重系统资源的消耗;当我们用MVC开发程序时,难免会写上很多factory、很多singleton,尤其是Dao的实现,这些东西管理起来还是要花不少代码量的,有了Spring,我们几乎就不需要factory了,以前factory的职责,我们完全由Spring的IoC容器来管理,你也可以配置是否使用singleton,这样一来,我们把对对象的管理全部抽取出来了,放到Spring的配置文件里了,相对来说省了不少事,而且易于维护,另一方面,使用Spring很重要的一方面是使用它的声明式事务,当我们使用Hibernate来操作数据库时,跟Session、Transaction打的交到最多了,N多N多的累赘代码,现在好了,有了Spring和它的AOP思想,把对事务的操作全部以代理的模式切入进去,我们要做的仅仅只是一些配置就够了,用HibernateTemplete封装所有的session的操作,当然web服务(集成Struts)时,别忘了openSessionInViewFilter的设置。每学完一个框架,我都会把以前的项目的某个模块改成由该框架来实现,先是Struts,然后是Struts+Hibernate,然后是Spring+Hibernate,现在是Struts+Hibernate+Spring,呵呵,三者结合,配置文件不少,简单对集成SSH的流程做个总结:第一步:引入SSH三者的jar包,struts1.2还有Hibernate3.2的jar包直接就可以从MyEclipse中引入,当然你也可以手动从二者的开发包中拷贝,Spring相关的jar包建议不要使用MyEclipse中提供的,对orm支持的不是很好,容易出问题,最好直接从官网下的开发包中拷贝。第二步:SSH三者的配置文件,先说Struts的吧,我们习惯在Action中持有一个Dao的引用操作数据库,有了Spring,我们可以把Dao的引用抽取出来交给IoC容器管理,问题是Action不是我们手动New出来的,而是ActionServlet从Map中取出来的,没有经过Spring的BeanFactory,如何让Dao注入到Action中呢?所以这里要使用Spring提供的 DelegatingActionProxy,它也是一个Action,我们将自己的Action配置到Spring中给一个name属性,然后在Struts-config.xml中把Action的type改成DelegatingActionProxy,它会到IoC容器中获取Action,完成Dao的注入并执行自己的execute方法,Struts-config.xml中需要注入其他属性的Action的配置类似下面的代码:?? action path=/basedata/item?? type=org.springframework.web.struts.DelegatingActionProxy??? parameter=command??? name=itemForm??? scope=request?? forward name=success path=/basedata/maint.do?command=list redirect=true/?? forward name=find_success path=/basedata/item_detail.jsp/forward/action我在这个Action中引用了一个Dao来操作数据库,别忘了设置setter,否则无法注入public class ItemAction extends DispatchAction {private ItemManager itemManager;?? //Daopublic void setItemManager(ItemManager itemManager) {?? this.itemManager = itemManager;} public ActionForward add(ActionMapping mapping, ActionForm form,??? HttpServletRequest request, HttpServletResponse response)??? throws Exception {?????????????? //more code}//more
文档评论(0)