ssh集成过程

花了几天时间,总算弄懂了ssh各个模块间是如何集成在一起,以及如何互相调用的。做个笔记,错误处欢迎指正。:

先从原理说一下,struts的作用是对servlet做了一层更高抽象的封装。采用活动、拦截器等概念。那么如何使系统识别出应用了struts呢,原因就在web.xml里。

 <servlet>

   <servlet-name>action</servlet-name>

   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

   <init-param>

     <param-name>config</param-name>

     <param-value>/WEB-INF/struts-config.xml</param-value>

   </init-param>

   <init-param>

     <param-name>debug</param-name>

     <param-value>3</param-value>

   </init-param>

   <init-param>

     <param-name>detail</param-name>

     <param-value>3</param-value>

   </init-param>

   <load-on-startup>0</load-on-startup>

 </servlet>

 <servlet-mapping>

   <servlet-name>action</servlet-name>

   <url-pattern>*.do</url-pattern>

  </servlet-mapping>

当应用struts的时候,会在web.xml里加上上面这一段,就表示所有.do结尾的url都交给org.apache.struts.action.ActionServlet处理。这个ActionServlet是一个总入口,称为dispatcher的调度servlet。它再依据struts-config.xml里面的Action配置,把请求分别转到各个Actionservlet去处理。如果只说到这儿的话,似乎只用struts也是完全可以的。

下面该spring上场了。Spring的作用是为组件解耦。试想,如果只用struts,那么在action里势必要写一些调用后台业务模块和数据库访问的代码。将来业务逻辑变更或者数据库变更了,这些代码改动量就太大了。所以spring采用常称的“依赖注入”或“控制反转”,使得在调用后台模块的时候,直接“申请”就是了。不用硬编码为其实例化啊、初始化啊什么的。当然“申请”使用还是要先知道名字才行。但这个名字也不是写死的。在配置文件applicationContext.xml里。这里面定义了各个bean的说明。

那么最常见的是spring为哪些模块解耦呢。对,数据库访问模块。Hibernate是为数据库与组件提供了映射以及自动持久化等工作。所以用hibernate比直接对数据库进行硬sql编码有诸多好处。比如更稳定、更安全、跨数据库,开发也更迅速等。既然hibernate通常与spring一起用,就有个问题。在myeclipse里,我们必须先执行AddSpring Capabilities,再执行AddHibernate Capabilities。因为要往applicationContext.xml里写hibernate的相关信息,顺序反了就得手工加了。(strutes和spring的先后顺序是无关的)。而hibernate本身的数据表映射信息保存在xxx.hbm.xml里。

常见调用场景是在action里通过“查询”applicationContext.xml,“申请”hibernate提供的DAO组件访问数据库。

这样通过这几个xml文件的各自描述,三个常用模块就组成了ssh架构。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值