SSH框架解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、前言:
鉴于目前还有很多同学对SSH框架编写流程不是非常的熟练与了解,特此写了这个
关于SSH流程的解析!个人认为对于框架流程的熟悉度至关重要的,比如A、B两个人都准备去天安门,A很熟悉去天安门的路线,而B压根就没去过,或者不是很明
确,就去天安门这个路程所需的时间而言A远远大于B,我们编写代码也是同样的
道理,所以在开发或者编写之前一定要先明确思路(流程)!
2、要求(必读):
2.1首先大家要明确SSH分别代表什么?它们分别是什么意思?有什么作用?
定义:SSH 为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web 应用程序开源框架。
如果你现在对struts、spring、hibernate还不了解或者压根就不知道它们是干什么的,那么下面的内容就不用看了。先熟悉了上面3个知识点再看下面的内容吧!
2.2 SSH框架有那些层次,我们为什么要使用它,也就是说它相比其他框架有什么优势?
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的
Web应用程序。其中使用Struts作为系统的整体基础架构,充当MVC里的Controller
层,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO 实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Service完成业务逻辑。
系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓
冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于
Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。(针对struts1)
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,
并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于
不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。
其中struts分为了struts1和struts2从而SSH框架也分成了struts1整合的SSH和struts2整合的SSH框架!
3、架构分析:
为了方便记忆与理解,我特意合成了一组图片,struts1和struts2的结构层次图:
从框架结构的搭建上来看struts1和struts2可以说是大同小异,所以在搭建框架的时候可以以上图作为参考!
4、Struts1整合SSH分析:
首先分析下struts1整合的SSH框架,本次就以《华天动力协同OA系统》的登录为例!
既然是Struts1的整合,流程自然和Struts非常相似,大家可以先回顾一下Struts1的工作流程。
在Struts1工作流程第一点初始化中提到:struts框架的总控制器ActionServlet 是一个Servlet,它在web.xml中配置成自动启动的 Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。
4.1 web.xml分析:
现在咱们就看一下web.xml文件:
查看大图
标记2处已经明确的指出了struts1工作流程中的第一条!
标记1处所对应的位置看下图:
也就是说如果在conf包里还需要添加其他配置文件的话都要在web.xml图标记1的位置处
标记3和4分别是过滤器和验证码,和struts1中的配置一样,在这里不做过多解析。
4.2 struts-config.xml分析:
查看大图
标记1中是一个formbean的配置,其中
指针错误:
查看大图
标记1中
用的form类型是动态form,而
性值对应的是Model包中类的属性值,type即对用其类型。
在这里有一点需要注意如果model包中类的属性有int类型的,在
标记2中path和struts2中namespace是一个意思,并且和spring-struts.xml 文件中name属性相对应(下面会提到),type属性值的意思就是将动态form交给spring管理,看下对比:
查看大图
parameter属性暂时可以理解为固定写法,他和jsp页面form表单中action的路径有联系,
4.3 hibernate.cfg.xml分析:
Hibernate.cfg.cml文件一般是用myeclipse自动生成,也可以复制到eclipse里使用。