1 SSH概述
SSH是Spring,Struts和Hibernate三种技术相结合起来应用的一种建成,实际上其中任何一个技术都不是相互依赖的,甚至可以独立使用,但在J2EE项目中把他们结合起来使用的情况很多,所以渐渐的人们把这三种技术结合起来应用当作一种典型的解决方案了。(忽然想起鲁迅的一句话,“世间本没有路,走的人多了,自然成了路”)。
废话不多说,概括起来,SSH结构包含三个方面:
数据层面:包括业务模型,数据模型
实现层面:包括JSP页面,Action控制,Service逻辑以及DAO数据控制
支撑:包括表现层支撑,应用层支撑和数据层支撑
结构图如下:
图1
该图从上到下,描述了当一个请求发生时,SSH框架会发生的事情:
1) 浏览器会把请求交给Struts,让它指派一个具体的Action来操作这个请求,Struts把请求参数包装成Model对象,并请求Spring提供具体的Action对象。
2) Spring根据配置文件来组装具体的Action对象。
3) Action对象中使用到Service的话,请求Spring提供具体的Service对象。
4) Spring根据配置文件来组装具体的Service对象。
5) Service对象中使用到DAO的话,请求Spring提供具体的DAO对象。
6) Spring根据配置文件来组装具体的DAO对象。
7) DAO利用Hibernate提供的模板,发送HQL或SQL请求,并将数据包装成Entity对象。
8) Hibernate根据HQL或SQL请求,解析成真正的SQL,通过JDBC访问数据库。
请求处理完成后,会顺着从下到上的方面,将请求反馈到客户端。
这是一种典型的MVC架构,各个模块件分工明确,这因如此,SSH很快普及发展开了,而且随着Web2.0的快速发展,针对MVC具体的应用又有了更加丰富的选择。
如UI这层,仅依赖Struts本身的控件满足不了很多需求,如DWR框架为Ajax服务等。