所选框架:SSH(Struts2+Hibernate+Spring)
选择原因:
它是一种Web应用程序开源框架,采用MVC模式分离业务逻辑层、显示层、模型层,它结构清晰,使人容易明白业务逻辑。其连接数据库的方法比起只使用servlet减轻了很大的工作量,连接数据库简便方便。Struts2框架有很多的标签可以使用,其配置文件可以让人很清楚地看到系统各部分之间的联系,明白各个界面之间的跳转关系。Hiberbate将数据库映射到对象上,可以使用对对象的编程思想来操作数据库,可以不用书写大量的SQL语句。Spring控制所有Action和业务逻辑类的生命周期,使程序运行起来效率高。
SSH框架说明:
(1)本程序Struts2负责页面数据提取,页面动作的响应;
(2)使用Hibernate负责将数据对象保存到数据库中;
(3)Spring负责对象创建,Action的创建,DAO创建。
Spring充当一个容器的作用,Spring使用IOC和AOP技术接管Hibernate的DAO和Struts的Action对象,充分管理事物和代理request请求,经过IOC容器处理后,针对面向接口的编程使软件项目的分层更明确。Model层使用Spring,View层使用JSP,Controller层使用Struts,持久层使用Hibernate。Spring对Hibernate的DAO有一个很好的封装,使我们在开发程序时不用去理会事务。
Hibernate的工作原理是读取并解析配置文件,读取并解析映射信息,创建SessionFactory,打开Session,创建事务Transation,持久化操作,提交事务,关闭Session,关闭SessionFactory。它对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。同时,它也是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,很大程度上简化了DAO层的编码工作。它使用Java反射机制来实现透明性,它的灵活性很好,它支持各种关系数据库,从一对一到多对多的各种复杂关系。
Struts的工作流程为:客户端浏览器发出HTTP请求,根据web.xml配置,该请求被FilterDispatcher接收,根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton,Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证,Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面,返回HTTP响应到客户端浏览器。Struts实现了MVC模式,结构清晰,只需要关注业务逻辑的实现即可,它具有丰富的tag可以用,好好使用可以提高开发效率。它的最根本的好处就是方便对程序的修改。
Spring的工作机制:Spring MVC把所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作,DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller,DispatcherServlet把请求提交到目标Controller ,Controller进行业务逻辑处理后,会返回一个ModelAndView,Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象,视图对象负责渲染返回给客户端。Spring既是一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象),然后可以很容易地在需要时替换具有类似接口的协作对象。