当前位置:文档之家› Struts2+Spring+Hibernate框架技术

Struts2+Spring+Hibernate框架技术

第1章初识S2SH

轻量级Java EE技术以SSH为代表,即S(Struts)+S(Spring)+H(Hibernate)。2007年Struts 的下一代产品Struts 2诞生,Struts 2是在Struts 和WebWork的技术基础上进行的合并。S2SH 指的是Struts 2+Spring+Hibernate。

1.1 Struts 2框架简介

Apache的Struts 2是一个优雅的、用于创建企业级Java Web应用程序的可扩展的框架。该框架旨在简化整个开发周期,从建设,部署及维护所用的时间。

对于Struts 1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts 1支持的表现层技术单一。由于Struts 1出现的年代比较早,那个时候还没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模板技术进行整合。其次,Struts 1与Servlet API的严重耦合,使应用难于测试。最后,Struts 1代码严重依赖于Struts 1 API,属于侵入性框架。

从目前的技术层面上看,出现了许多与Struts 1竞争的视图层框架,例如,JSF、Tapestry 和Spring MVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts 1中吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展。目前,Struts 已经分化成了两个框架:第一个是在传统的Struts 1的基础上,融合了另外一个优秀的Web 框架——WebWork的Struts 2。Struts 2虽然是在Struts 1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts 2为传统的Struts 1注入了WebWork的先进设计理念,统一了Struts 1和WebWork两个框架。

1.1.1 Struts 2体系结构

Struts 2体系与Struts 1体系的差别非常大,因为Struts 2使用了WebWork的设计核心,而不是Struts 1的设计核心。Struts 2的体系结构如图1-1所示。Struts 2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。Struts 2框架的处理流程如下。

●浏览器发送一个请求。

●核心控制器FilterDispatcher根据请求决定调用合适的Action。

●WebWork的拦截器链自动对请求应用通用功能,如验证等。

●回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。

●Action的execute方法的处理结果信息将被输出到浏览器中,支持多种形式的视图。

图1-1 Struts 2体系结构

1.1.2 Struts 2与Struts 1

经过6年多的发展,Struts 1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。其市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步,Struts 1的局限性也越来越多地暴露出来,并且制约了其继续发展。Struts 2对Struts 1进行了巨大的改进,主要表现在如下几个方面。

●在Action的实现方面:Struts 1要求必须统一扩展自Action类,而Struts 2中可以是

一个普通的POJO。

●线程模型方面:Struts 1的Action工作在单例模式,一个Action的实例处理所有的请

求。Struts 2的Action是一个请求对应一个实例。没有线程安全方面的问题。

●Servlet依赖方面:Struts 1的Action依赖于Servlet API,比如Action的execute方法

的参数就包括request和response对象,这使程序难于测试。Struts 2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。

●封装请求参数:Struts 1中强制使用ActionForm对象封装请求的参数。Struts 2可以选

择使用POJO类来封装请求的参数,或者直接使用Action的属性。

●表达式语言方面:Struts 1中整合了EL,但是EL对集合和索引的支持不强,Struts 2

整合了OGNL(Object Graph NavigationLanguage)。

●绑定值到视图技术:Struts 1使用标准的JSP,Struts 2使用ValueStack技术。

●类型转换:Struts 1中的ActionForm基本使用String类型的属性。Struts 2中使用OGNL

进行转换,可以更方便地使用。

●数据校验:Struts 1中支持覆盖validate方法或者使用Validator框架。Struts 2支持重

写validate方法或者使用XWork的验证框架。

●Action执行控制的对比:Struts 1支持每一个模块对应一个请求处理,但是模块中的

所有Action必须共享相同的生命周期。Struts 2支持通过拦截器堆栈为每一个Action 创建不同的生命周期。

1.1.3 Struts 2与WebWork

Struts和Webwork是同服务于Web的一种MVC框架,从某种程度上看,Struts 2是从

第1章初识S2SH

WebWork 2上升级得到的。甚至Apache的官方文档也讲,WebWork 2到Struts 2是平滑的过渡。甚至也可以说Struts 2就是WebWork 2.3而已。

在很多方面,Struts 2仅仅是改变了WebWork下的名称,因此,如果开发者具有WebWork 的开发经验,将可以更加迅速地进入Struts 2的开发领域。除此之外,Struts 2也删除了WebWork 中的少量特性,如下所示。

●AroundInterceptor:Struts 2不再支持WebWork中的AroundInterceptor。如果应用程序中

需要使用AroundInterceptor,则应该自己手动导入WebWork中的AroundInterceptor类。

●富文本编辑器标签:Struts 2不再支持WebWork的富文本编辑器,如果应用中需要使

用富文本编辑器,则应该使用Dojo的富文本编辑器。

●IoC容器支持:Struts 2不再支持内建的IoC容器,而改为全面支持Spring的IoC容

器,以Spring的IoC容器作为默认的Object工厂。

1.1.4 Struts 2下载

读者若要获取Struts 2最新的软件包以及相关的资源文件,可以访问其官方网站。官网网址是https://www.doczj.com/doc/368179780.html,/2.2.3/index.html。下载页面如图1-2所示。

图1-2 Struts 2官网下载页面

读者单击中间并列图标中的第一个,就可以下载到最新的Struts 2文件。当然官网也提供了一些非常不错的教程,网址是https://www.doczj.com/doc/368179780.html,/2.2.3/docs/tutorials.html,有时间也可以看看。教程页面如图1-3所示。

图1-3 Struts 2教程首页

1.2 Spring框架简介

传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无需应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。

Spring致力于J2EE应用的各层解决方案,而不是仅仅专注于某一层的方案。可以说Spring 是企业应用开发的“一站式”选择,并贯穿于表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB来完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

1.2.1 IOC和AOP

控制反转模式(也称作依赖性注入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring 框架中是IOC 容器)负责将这些联系在一起。在典型的IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。

面向方面的编程,即AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如,日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP 和IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问

第1章初识S2SH

题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和Java 类中才能实现日志功能。在AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了Spring 事务管理、日志和其他各种特性的上下文中。

1.2.2 IOC容器

Spring 设计的核心是org.springframework.beans 包,它的设计目标是与JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。BeanFactory 支持以下两个对象模型。

●单态模型:提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。

Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想。

●原型模型:确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原

型模型最适合。

Bean 工厂的概念是Spring 作为IOC 容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。

1.2.3 Spring下载

读者若要下载Spring最新的相关资料,可以访问其官网https://www.doczj.com/doc/368179780.html,/,官网页面如图1-4所示。

图1-4 Spring官网页面

1.3 Hibernate框架简介

目前在Java应用程序开发中,使用广泛的、开源的持久层框架是Hibernate 和Ibatis。

Hibernate和Ibatis都是ORM解决方案,不同的是两者各有侧重。Hibernate提供了Java 对象到数据库表之间的直接映射,开发者无需直接涉及数据库操作的实现细节,实现了一站式的ORM解决方案。而Ibatis则采取了另一种方式,即提供Java对象到SQL(面向参数和结果集)的映射实现,实际的数据库操作需要通过手动编写SQL实现。Ibatis是又一个O/R Mapping解决方案,和Hibernate相比,Ibatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,Ibatis是能满足你的要求又足够灵活的、最简单的解决方案。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,又可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的体系结构如图1-5所示。

图1-5 Hibernate的体系结构

1.3.1 Hibernate的优点

Hibernate的优点如下。

●Hibernate功能强大,数据库无关性好,O/R映射能力强,如果一个程序员精通

Hibernate,而且对其进行了适当的封装,那么项目整个持久层代码对于他而言会相当

简单,需要编写的代码会很少,开发速度也会很快。

●Hibernate体现了OO编程的思想,许多OO的特性都可以用上,例如,继承、多态。

而且有利于代码的重用。假如你有一个DAO,其中有一个save(Object)方法,那么,

对于任何需要保存的对象,把它当作参数传给这个方法就可以了。

●方便系统的移植,对于已经编写好的系统,一般情况下,只需要修改Hibernate配置

文件的dialect,那么它就会生成对应数据库的SQL语句。

第1章初识S2SH

●有着正确的数据模型。以POJO为基础的模型是个正确的方向;可配置性(例如,对象

之间的关系)是个很好的基础;HSQL正是O/R映射语言应该有的;有着完整的API;

采用简明的Session类作为控制流的清洗器,因为它沿用了Connection的模型。

●开源和免费的License,可以在需要的时候研究源代码,改写源代码,进行功能的定

制。具有可扩展性,API开放,当本身功能不够用的时候,可以自己编码进行扩展。

●Hibernate已经成为了事实上的标准,目前使用的人多,所以技术支持也多,有什么问

题也很容易在网络上寻求解决方案。

1.3.2 Hibernate的缺点

Hibernate是一种非强迫性的解决方案。开发者在编写业务逻辑与持续性类时,不会被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用平稳地集成,而不需要对应用的其余部分作破坏性的改动。

●学习的门槛不低,要精通的门槛则更高,在设计O/R映射,在性能和对象模型之间如

何权衡取得平衡,以及怎样用好Hibernate方面需要丰富的经验。

●Hibernate不适合数据库模式,约束不完整,需要大量复杂查询的系统。

1.3.3 Hibernate下载

Hibernate的官网是https://www.doczj.com/doc/368179780.html,/,读者从该网站可下载关于Hibernate的最新资料。其官网主页如图1-6所示。

图1-6 Hibernate官网页面

Hibernate不仅支持Java开发,还可以用于.net开发中。目前是使用最广泛的持久化框架,Hibernate官网未直接提供下载,但提供了指向下载资源的链接地址:https://www.doczj.com/doc/368179780.html,/projects /hibernate/files/hibernate3/。

1.4 小结

本章简单介绍了Struts 2、Spring和Hibernate三个Java EE轻量级框架,涉及的内容有三个框架的发展历史、体系架构、下载。学习好本章内容有助于后边深入学习这三个框架。

第2章进入S2SH框架开发环境

第1章简单介绍了Struts 2、Spring、Hibernate等轻量级Java EE框架。在企业中为了更快速地开发出应用程序,一般都会使用大型的IDE工具。Java EE方面比较流行的工具有Netbeans、Eclipse等工具,这些工具具有强大的功能,而且大部分是免费开源的,本书将以Eclipse为例。开发环境中还需要服务器(Tomcat、Jboss)、数据库(MySql、Oracle、Sqlserver)等,本书以Tomcat 服务器和MySql数据库为例。

2.1 如何搭建开发环境

基础开发环境的搭建涉及的软件有JDK、Tomcat、Eclipse、MySql、Oracle、Myeclipse等。本节将详细介绍软件的安装及其配置。

2.1.1 JDK的安装

自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库。目前最新的版本是Java SE 6 Update 24,可以从https://www.doczj.com/doc/368179780.html,/technetwork/java/index.html网址下载,页面如图2-1所示。

图2-1 JDK下载页面

下载后得到JDK 安装文件,可以双击其安装文件图标进行安装。本书使用的JDK版本是Java SE 6 Update 23,双击后效果如图2-2所示。

图2-2 安装向导

单击“下一步”按钮之后,将进入JDK的安装目录,如图2-3所示。

图2-3 路径选择

选择好安装路径之后,单击“下一步”按钮进行正式安装,如图2-4所示。

JDK安装完成之后,安装向导还会自动进入到外部JRE安装界面。用户可以选择下一步安装或取消,若要安装还可以选择外部JRE的安装目录,如图2-5所示。

第2章进入S2SH框架开发环境

图2-4 正在安装

图2-5 选择安装外部jre

单击“下一步”按钮之后,安装向导将进入外部jre的安装界面,如图2-6所示。安装完成后的界面如图2-7所示。

JDK是最基础的工具,安装完之后就可以安装服务器软件和IDE工具了。下节将介绍服务器Tomcat的安装。

图2-6 安装独立

jre

图2-7 安装完成

2.1.2 Tomcat 的安装

Tomcat 是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,是当前比较流行的Java Web 服务器,因其性能稳定、免费、支持最新的JSP 、Servlet 标准而受到广大Java 开发人员的喜爱。Tomcat 的最新版本是Tomcat 7.x ,可以从Apache 的官网上下载。网址是https://www.doczj.com/doc/368179780.html, ,如图2-8所示。

第2章进入S2SH框架开发环境

图2-8 Tomcat首页

双击左侧Download列表中的Tomcat 7.0,可打开Tomcat 7.x的下载页面,如图2-9所示。

图2-9 Tomcat下载页面

单击图中“64-bit Windows zip (pgp,mds)”即可下载Tomcat,双击图标即可运行安装程序,如图2-10所示。

图2-10 Tomcat安装向导

单击Next按钮,进入如图2-11所示的许可协议界面,单击I Agree按钮即可。

图2-11 同意许可协议

第2章进入S2SH框架开发环境同意许可协议后是定制安装组件界面,全选就可以了,如图2-12所示。

图2-12 定制组件

单击Next按钮进入如图2-13所示的选择安装目录界面,确定目录后单击Next按钮,进入如图2-14所示的界面。

图2-13 选择安装目录

图2-14 设置端口号

单击Next按钮进入图2-15所示的界面,选择Tomcat运行所需的jre,没有jre将不能继续安装,运行后如图2-16所示。

图2-15 选择jre

在图2-15中单击Install按钮,程序将进入正式安装界面,如图2-16所示。

第2章进入S2SH框架开发环境

图2-16 正在安装

安装完成如图2-17所示,选中复选框可以运行服务器,并显示自述文件。

图2-17 安装完成

启动服务器后就可以测试是否安装成功了。打开浏览器,在地址栏中输入http://localhost:8080,如果能看到图2-18所示的页面就表示安装成功。

图2-18 安装成功

2.1.3 Eclipse的安装

Eclipse平台是IBM向开放源码社区捐赠的开发框架,IBM宣称为开发Eclipse投入了4千万美金。Eclipse允许用户安装新的插件来补充其功能。

Eclipse是一个免费、开源的集成开发工具,不仅仅局限于Java的开发,还支持其他多种语言的开发,如C、C++等。Eclipse下载网址是https://www.doczj.com/doc/368179780.html,,该软件为绿色软件,下载解压之后双击Eclipse图标即可运行。Eclipse的启动界面如图2-19所示,其初始界面如

图2-20所示。

图2-19 Eclipse启动界面

第2章进入S2SH框架开发环境

图2-20 Eclipse初始界面

没安装任何插件的Eclipse只能开发JAVA SE程序,要开发JAVA EE应用程序需要安装相关的插件才可以。

2.1.4 安装数据库MySQL

MySQL是一款小型关系型数据库管理系统,由于其体积小、速度快、成本低,开放源代码等被广泛地应用于中小企业。2008年1月MySQL被Sun公司收购,而今的Sun又被Oracle 收购。

(1) 下载MySQL。可以通过网址https://www.doczj.com/doc/368179780.html,/downloads/mysql下载MySQL的最新版本,下载页面如图2-21所示。

图2-21 MySQL下载页面

(2) 启动安装向导。下载后是一个名为mysql-essential-5.1.42-win32.msi的可执行文件,双击即可进入MySQL的安装界面,如图2-22所示。

图2-22 开始安装界面

(3) 安装MySQL。单击Next按钮,进入到安装类型选择页面,默认即可,如图2-23所示。

图2-23 类型选择

单击Next按钮,后边的参数保持默认即可,直到安装完成,如图2-24所示。

在图2-24中有两个复选框。第一个是对MySQL服务器进行配置,第二个是选择是否去MySQL网站注册。

相关主题
文本预览
相关文档 最新文档