SSH框架之我见

来源:互联网 发布:js鼠标移动后单击 编辑:程序博客网 时间:2024/05/16 12:28

SSH不是一个框架,而是多个框架(Struts+Spring+hibernate)的集成,这个是大神说的,我也就照着敲一遍

SSH是web应用程序开源集成框架,从职责上分为:


表示层、业务逻辑层、数据持久层和域模块层(实体层)

Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装



SSH构建系统的基本业务流程:

1在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。

2在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

3在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。


Struts:

Struts对Model,View和Controller都提供了对应的组件

actionServlet:拦截用户请求

action:用户提供,接收actionServlet请求,调用模型的业务逻辑方法,将结果返回给jsp界面


model:actinForm 和javaBean

JavaBean:

可重用组件

一次性编写,任何地方执行,任何地方重用

可使用javaBean对任何可以用java代码创造的对象进行打包

为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器

一种是有用户界面(UI,User Interface)的JavaBean;一种是没有用户界面,负责处理事务(如数据运算,操纵数据库,封装了底层的业务逻辑)的JavaBean;JSP通常访问的是后一种


actinForm:

用户请求封装成actionForm对象

被配置在Struts—config文件中,每个ActionForm对应一个form-bean元素

一种JavaBean,传递表单数据(保存、传递视图页面中的数据:用户名、密码等)

request作用域:实例将保存到request对象中,只在当前请求范围内有效

session作用域:session对象中,整个http会话中有效


view:

JSP实现

Struts提供丰富标签库,减少脚本使用,自定义标签实现model交互,增加实现功能


controller:

系统核心控制器:对应actinServlet、继承了httpservlet类(提供了一个处理HTTP协议的框架)

该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。

业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理;对应Action部分


Strut2

struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,使得业务逻辑控制器能够与ServletAPI完全脱离开



流程:

Web容器收到请求(HttpServletRequest)将请求传递给一个标准的的过滤链(包括流程(ActionContextCleanUp)过滤器)然后经过Other filters(SiteMesh ,etc),接下来需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求那个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。接下来FilterDispatcher将控制权委派ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象,ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N) 一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)然后执行这个Result ,Result会调用一些模版(JSP)来呈现页面,之后拦截器(Interceptor N)会在被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和(核心控制器)(FilterDispatcher)


Spring:

解决企业应用开发的复杂性,一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架

控制反转:容器在对象初始化时不等对象请求就主动将依赖传递给它

面向切面:通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已

框架:简单组件配置、组合为复杂应用;应用对象声明式组合,提供基础功能,留下逻辑开发给you

Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使StrutsHibernate更好地工作。


Hibernate:

对象关系映射框架,对JDBC进行了轻量级的对象封装,便于使用对象编程思维操作数据库,可以应用在任何场合使用JDBC(Java Data Base Connectivity,java数据库连接)


核心接口



后记总结:

以上是一个大概的偏于理论性的介绍,SSH这个框架,使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate;具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate




不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率


参考:

面向对象的编程思维,就是要求我们把事物分成两部分:属性和动作

https://zhidao.baidu.com/question/1989432911293308787.html

https://zhidao.baidu.com/question/73362924.html

控制反转

SSH好文

最后感谢大家的分享

0 1
原创粉丝点击