中移动杭州研究院Javaweb开发三大框架整理报告Javaweb开发三大框架整理目录1.引言..........................................................................................................................12JavaWeb开发三大框架...........................................................................................22.1Struts框架........................................................................................................22.1.1Struts框架概述......................................................................................22.1.2Struts2处理流程................................................................................32.1.3Struts框架的组件分析.......................................................................412.2Hibernate框架..................................................................................................62.2.1Hibernate工作原理和工作流程...........................................................62.2.2Hibernate框架的组件分析....................................................................72.2.3Hibernate核心接口.............................................................................82.2.4Hibernate缓存管理.............................................................................82.2.5Hibernate框架优势................................................................................92.3Spring框架.......................................................................................................92.3.1Spring框架模块................................................................................102.3.2控制反转(IoC)和依赖注入(DI)...........................................112.3.3面相切面编程(AOP)....................................................................122.3.4Spring框架优势................................................................................123SSH框架整合...........................................................................................................123.1整合理念........................................................................................................123.2整合方案......................................................................................................143.2.1Spring与Struts的集成......................................................................143.2.2Spring与Hibernate的集成................................................................153.2.3系统分析..............................................................................................154小结..........................................................................................................................161.引言随着计算机网络技术的日益普及,基于Java的Web技术也得到了广泛的应用。然而,利用Java进行Web应用程序的软件架构非常复杂,这在很大程度上限制了Web系统的开发效率,因此轻量级J2EE框架应运而生。优秀的轻量级J2EE框架不仅保留了传统J2EE框架良好的可扩展性、可维护性等特点,还具有开发效率高、各层无缝集成等优点。2Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践。所谓的三层开发就是将系统的整个业务应用划分为“表示层—业务逻辑层—数据访问层”,这样有利于系统的开发、维护、部署和扩展,分层是为了实现“高内聚、低耦合”。三层体系将业务规则、数据访问及合法性校验等工作放在业务逻辑层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。本报告探讨现在主流一种轻量级J2EE架构,即SSH(Struts+Spring+Hibernate)框架,并对各层之间的整合技术进行研究。首先,分析了Struts、Spring和Hibernate三种框架和各自的特点;其次,阐述了它们整合的理念,选取了一种比现有SSH框架更加合理有效的整合方案,使其各层能够无缝集成、有机整合,最大限度地实现SSH框架的高内聚低耦合的特点。2JavaWeb开发三大框架2.1Struts框架2.1.1Struts框架概述Struts是一个基于MVC(Model-View-Controller)模式的应用架构开源框架,采用Servlet和JSP技术实现,它减弱了业务逻辑接口和数据接口之间的耦合,为开发人员节约了时间。其中Struts的控制文件struts-config.xml、Action和ActionServlet实现MVC的控制器,JavaBean或者EJB完成MVC的模型部分,JSP页面承担MVC的视图组件,而且所有的控制逻辑都是由struts-config.xml配置文件来完成。Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。在使用Struts框架应该遵守以下原则:尽量使用Struts标签,避免嵌入Java代码;避免在视图层处理对数据库的访问。32.1.2Struts2处理流程当用户端的Http请求到达时,Struts2处理流程如图2-1所示图2-1Struts2处理流程一个客户端请求在Struts2框架中的处理大概分为以下几个步骤:客户端提交一个(HttpServletRequest)请求;请求被提交到一系列(主要是3层)的过滤器(Filter),如ActionContextCleanUp、FilterDispatcher等。注意:这里是有顺序的,先ActionContextCleanUp,再其他过滤器(OtherFilters、SiteMesh等),最后到FilterDispatcher;FilterDispatcher是控制器的核心,就是MVC的Struts2实现中控制层(Controller)的核心;FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServletRequest)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy;ActionProxy通过ConfigurationManager(struts.xml)询问框架的配置文件,找到需要调用的Action类;4ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器);一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result,最后将该result通过(HttpServletResponse)请求返回给客户端。2.1.3Struts框架的组件分析(1)Struts2配置文件Struts2配置文件是用户请求(View)和业务逻辑模块(Model))Action之间联系的桥梁,可以通过修改Struts2的配置文件来快速适应业务需求,它是整个Struts2的精髓之一。Struts2框架配置文件分为XML文件和属性资源文件两种。web.xml对web应用中一些初始信息进行了配置。web.xml可以配置过滤器用于同时拦截多个请求的URL。除此之外web.xml还可以用来配session-config的会话时间、欢迎页、错误页、监听器、控制器等等。struts.xml文件主要用来配置Action和Http请求的对应关系,以及配置逻辑视图和物理视图资源的对应关系。struts.xml文件中包含了Action的定义以及Action的返回值对应的视图资源、命名空间等信息。此外,用户也可以定义自己的XML文件,然后通过include指令将其包含到struts.xml文件中。另一类配置文件是属性资源文件。资源文件中一般采用固定的Key-Value形式,用于定义Struts2全局或者局部的资源数据。例如定义国际化、开发模式等信息。(2)Struts2控制器Struts2的控制器组建是Struts2框架的核心,事实上所有MVC框架都是以控制器组件为核心的。正如前面提到的,Struts2的控制器由两个部分组成:FilterDispatcher和业务控制器Action。前者由框架提供,负责拦截所有的用户请求。FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的Action,让这个Action来处理用户的请求。FilterDispatcher其实是一个过滤器Filter5(Serv