第 9 章 web 开发技术简介
DESCRIPTION
第四部分 Java 语言高级篇. 第 9 章 Web 开发技术简介. (之二). 学习目的. 熟悉各种 Web 开发技术的下载、安装和配置等基本操作,了解 Servlet 和 JSP 等技术的功能、特点以及与相关技术的区别,了解 Struts 、 Hibernate 和 Spring 等技术的产生的背景、特点和工作原理,掌握在 Eclipse 中 Servlet 和 JSP 应用程序的一般开发过程,掌握在 Eclipse 中利用 Struts 、 Hibernate 和 Spring 等框架建立、配置和运行 Web 应用程序的过程. 主要内容. - PowerPoint PPT PresentationTRANSCRIPT
1
第第 99 章 章 WebWeb 开发技术简介开发技术简介
第四部分 第四部分 JavaJava 语言高级篇语言高级篇
(之二)(之二)
2
学习目的学习目的 熟悉各种熟悉各种 WebWeb 开发技术的下载、安装开发技术的下载、安装
和配置等基本操作,了解和配置等基本操作,了解 ServletServlet 和和 JSPJSP等技术的功能、特点以及与相关技术的区等技术的功能、特点以及与相关技术的区别,了解别,了解 StrutsStruts 、、 HibernateHibernate 和和 SpringSpring 等等技术的产生的背景、特点和工作原理,掌技术的产生的背景、特点和工作原理,掌握在握在 EclipseEclipse 中中 ServletServlet 和和 JSPJSP 应用程序的应用程序的一般开发过程,掌握在一般开发过程,掌握在 EclipseEclipse 中利用中利用 StrStrutsuts 、、 HibernateHibernate 和和 SpringSpring 等框架建立、等框架建立、配置和运行配置和运行 WebWeb 应用程序的过程应用程序的过程
3
主要内容主要内容
☻ TomcatTomcat 和和 JBossJBoss☻ ServletServlet☻ JSPJSP☻ StrutsStruts☻ HibernateHibernate☻ SpringSpring
4
9.4 Struts9.4 Struts
☻主要介绍主要介绍 StrutsStruts 框架的起源、优缺点和工框架的起源、优缺点和工作原理以及作原理以及 StrutsStruts 的下载、安装过程,介的下载、安装过程,介绍了绍了 MVCMVC 模式以及该模式与模式以及该模式与 StrutsStruts 的关的关系。重点通过案例讲解在系。重点通过案例讲解在 EclipseEclipse 中如何运中如何运用用 StrutsStruts 框架建立、配置和运行框架建立、配置和运行 WebWeb 应用应用程序。程序。
☻知识学习要求掌握为:知识学习要求掌握为: 了解了解 StrutsStruts 框架的起源、优缺点和工作原框架的起源、优缺点和工作原
理,了解理,了解 MVCMVC 模式以及该模式与模式以及该模式与 StrutsStruts的关系,掌握的关系,掌握 StrutsStruts 的下载、安装过程,的下载、安装过程,熟练掌握在熟练掌握在 EclipseEclipse 中如何运用中如何运用 StrutsStruts 框框架建立、配置和运行架建立、配置和运行 WebWeb 应用程序。 应用程序。
5
路线图路线图
☻ StrutsStruts 简介简介☻ StrutsStruts 的工作原理的工作原理☻ StrutsStruts 的下载与安装的下载与安装☻ StrutsStruts 案例案例
6
9.4.1 Struts9.4.1 Struts 简介简介 11
☻ StrutsStruts 的起源的起源 Struts 是作为 Apache Jakarta 项目的组成部分,该项目目标是为建立 Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为 1.2 。通过使用 struts 框架可以改进和提高 JSP 、 Servlet 、标记库及面向对象的技术在 web 应用程序中的应用。 Struts 这个名字来源于在建筑和旧式飞机中使用的支持金属架。同样,软件工程师使用 Struts 为业务应用的每一层提供支持,可以帮助我们减少在运用 MVC(Model- View -Controller) 设计模型来开发 Web 应用的时间,提高开发效率。
7
9.4.1 Struts9.4.1 Struts 简介简介 22
☻Struts Struts 优点与缺点优点与缺点StrutsStruts 作为最受开发者欢迎的作为最受开发者欢迎的 WebWeb 框架框架
之一,有其突出的之一,有其突出的优点:优点: Struts 提供 Taglib 标记库,能大大提高开发 效率,可以大大节约开发时间。 表现与逻辑分离, Struts 将 MVC 的 Controller 一分为三,使结构更加清晰。 提供页面导航,使系统的脉络更加清晰, 维护扩展比较方便。 便于团队开发
8
9.4.2 Struts9.4.2 Struts 的工作原理的工作原理 11
☻MVC MVC 模式模式 (Model-View-Controller Patterns )(Model-View-Controller Patterns )
谈到 Struts, 我们就不得不提到 MVC 设计模式。MVC 即 Model-View-Controller 的缩写,它是 web 应用当中的常用的设计模式。早期 Smalltalk 程序语言便采用了 MVC 模式以增加程序代码弹性。 MVC 设计模式很清楚的划定了程序员与设计者的角色界限。这种模式是让设计者集中于设计应用程序的显示部分,而开发者则集中于开发驱动应用程序功能所需的组件。
9
9.4.2 Struts9.4.2 Struts 的工作原理的工作原理 22
☻MVC MVC 模式模式(Model-View-Controller Patterns )(Model-View-Controller Patterns )
10
9.4.2 Struts9.4.2 Struts 的工作原理的工作原理 33
☻数据模型数据模型(( ModelModel )描述并处理应用程序数据;)描述并处理应用程序数据;☻视图视图(( ViewView )指的是用户界面,它反映的是模)指的是用户界面,它反映的是模
型数据并把它递交给用户;型数据并把它递交给用户;☻程序控制逻辑程序控制逻辑( ( ControllerController ) 是将视图上的行为) 是将视图上的行为
(例如,按下 (例如,按下 Submit Submit 按钮)映射到模型上的操按钮)映射到模型上的操作(例如,检索用户详细信息)。模型更新后,作(例如,检索用户详细信息)。模型更新后,视图也被更新,用户就能够完成更多行为。视图也被更新,用户就能够完成更多行为。
☻MVC MVC 模式模式使代码易懂而且使代码更容易重用;使代码易懂而且使代码更容易重用;另外,在很多工程中视图经常要被更新,另外,在很多工程中视图经常要被更新, MVC MVC 模式将模型和控制器与这些所做的更改独立开来。模式将模型和控制器与这些所做的更改独立开来。
11
9.4.2 Struts9.4.2 Struts 的工作原理的工作原理 44
☻StrutsStruts 的运行过程图的运行过程图
12
9.4.2 Struts9.4.2 Struts 的工作原理的工作原理 55
☻ StrutsStruts 的运行过程 的运行过程 控制:在 Struts 中, ActionServlet 起着一个控制器( Controller )的作用。 ActionServlet 是一个通用的控制组件。这个控制组件提供了处理所有发送到 Struts 的 HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是 Action类的子类)。 视图:主要是由 Jsp 来控制页面输出的。它接收到 Action Form 中的数据,利用 html , taglib ,bean , logic 等显示数据。 模型:在 Struts 中,主要存在三种 bean, 分别是:Action,ActionForm,EJB或者 Java Bean 。 ActionForm 用来封装客户请求信息, Action取得 ActionForm 中的数据,再由 EJB或者 Java Bean 进行处理。
13
9.4.3 Struts9.4.3 Struts 的下载与安装的下载与安装☻案例使用的是比较经典的、目前应用较多的案例使用的是比较经典的、目前应用较多的 Struts1.2.9Struts1.2.9 版本 版本 ☻Struts1.2.9Struts1.2.9 安装包下载地址是安装包下载地址是 http://archive.apache.org/dist/struts/binaries/http://archive.apache.org/dist/struts/binaries/。。☻WindowsWindows 下的安装包是 “下的安装包是 “ struts-1.2.9-bin.zistruts-1.2.9-bin.zip”p”☻StrutsStruts 的安装很简单,将的安装很简单,将 struts-1.2.9-bin.zipstruts-1.2.9-bin.zip解解 压缩到压缩到 E:\eclipse\struts-1.2.9-binE:\eclipse\struts-1.2.9-bin 即可即可
14
9.4.4 Struts9.4.4 Struts 案例案例 11
☻案例引入:案例引入: 为了使读者对 Struts 框架的使用有初步的了解,本节引入一个功能非常简化的 Web 应用程序,只需要在页面显示“ Hello! I like Struts , it is great!!”即可,关键让读者掌握在 Eclipse 中利用 Struts 框架建立 Web 应用程序的一般开发过程。
☻知识学习要求掌握为:知识学习要求掌握为: 掌握在 Eclipse 中利用 Struts 框架建立 Web应用程序的一般开发过程;掌握 Eclipse 中构建路径的配置。掌握 MessageResources.properties 、 struts-config.xml文件的配置方法;掌握程序的运行方法。
15
9.4.4 Struts9.4.4 Struts 案例案例 22
【综合案例【综合案例 9-39-3 】】在在 EclipseEclipse 利用利用 StrutsStruts建立简单的建立简单的 WebWeb 应用程序应用程序
建立项目 添加 Struts 框架 配置 Java 构建路径 建立 StrutsprojectAction类 建立 StrutsProjectJSP.jsp文件 配置 MessageResources.properties 和 struts-config.xml文件 运行程序
16
9.5 Hibernate9.5 Hibernate☻主要介绍主要介绍 HibernateHibernate 框架的特点、框架的特点、 HibernateHibernate
应用程序的结构和体系结构,介绍了四层体应用程序的结构和体系结构,介绍了四层体系结构模型与系结构模型与 HibernateHibernate 产生的关系,介绍产生的关系,介绍了了 HibernateHibernate 的下载和安装过程。重点通过的下载和安装过程。重点通过案例讲解了在案例讲解了在 EclipseEclipse 中如何运用中如何运用 HibernateHibernate框架建立、配置和运行框架建立、配置和运行 WebWeb 应用程序。应用程序。
☻知识学习要求掌握为:知识学习要求掌握为: 了解了解 HibernateHibernate 框架的特点、框架的特点、 HibernateHibernate 应应
用程序的结构、体系结构和四层体系结构模用程序的结构、体系结构和四层体系结构模型,掌握型,掌握 HibernateHibernate 的下载、安装过程,熟的下载、安装过程,熟练掌握在练掌握在 EclipseEclipse 中如何运用中如何运用 HibernateHibernate 框架框架建立、配置和运行建立、配置和运行 WebWeb 应用程序。 应用程序。
17
路线图路线图
☻ HibernateHibernate 简介简介☻ HibernateHibernate 工作原理工作原理☻ HibernateHibernate 的安装的安装☻ HibernateHibernate 案例案例
18
9.5.1 Hibernate9.5.1 Hibernate 简介简介 11
☻HibernateHibernate 产生的背景产生的背景 在软件开发过程中,持久( Persistence )的数据是对保存在掉电后也不会丢失数据的存储设备中的数据的一种形象的表述,相对应的持久化操作通常表示将内存中的数据保存到磁盘的操作,在完成了数据的保存后,就表示相应的数据被持久化了。 数据保存在磁盘的手段有很多种,如格式化的文本文件、 XML文件,也可以是数据库系统,为了方便的进行数据的保存、处理、管理和查询,绝大多数的应用系统都采用数据库进行数据的持久化操作。
19
9.5.1 Hibernate9.5.1 Hibernate 简介简介 22
☻三层体系结构模型三层体系结构模型 即经典的 MVC 模式开发架构。如图所示 , 其中的表示层提供用户界面的显示和用户与应用系统的交互操作,业务逻辑层提供业务逻辑的处理和数据的持久化操作,数据层主要用于保存需要持久化的数据。这一模型中,实现了业务逻辑和显示的分离,降低了程序开发的复杂度,特别适合开发基于 B/S 模式的应用系统。
20
9.5.1 Hibernate9.5.1 Hibernate 简介简介 33
☻四层体系结构模型四层体系结构模型 为了降低软件的开发难度以提高软件的开发效
率,可以在三层模型中把业务逻辑层中进行数据持久化的操作分离出来,形成独立的持久层,这样就形成了如图 9-56所示的四层体系结构模型,在这一模型中,业务逻辑层尽心核心业务逻辑的处理,持久层专注于对象的持久化操作,表示层和数据层功能不变。
21
9.5.1 Hibernate9.5.1 Hibernate 简介简介 44
☻数据持久层的设计目标数据持久层的设计目标为整个应用系统提供一个高层、统一、安全和并发的数据持久为整个应用系统提供一个高层、统一、安全和并发的数据持久
机制,完成对数据进行持久化的编程工作,并为系统业务逻机制,完成对数据进行持久化的编程工作,并为系统业务逻辑层提供服务。辑层提供服务。
目前比较常用的几种数据持久层实现方案有以下几种:目前比较常用的几种数据持久层实现方案有以下几种: 通过 JDBC 和 DAO ( Data Access Object ,数据访问对象)实现数据持久化; 通过 EJB实现数据持久化; 通过 JDO ( Java Data Objects , Java 数据对象)实现数据持久化; 通过 DAO 和 ORM ( Object-Relational Mapping ,对象关系映射)组件来实现数据持久化。在实践中比较以上的几种方案,使用 ORM 组件能够很好的平衡服务器资源的消耗,取得较好的性能获得较高的开发效率,并可以应用于绝大多数软件系统。
22
9.5.1 Hibernate9.5.1 Hibernate 简介简介 55
☻ORM ORM ORM 本身并不是一个组件,它是具有实现实体域对象持久化并封装数据访问细节的组件的总称。当前的应用系统多采用多层次体系结构。通过持久层来实现 Java 对象与数据库中关系型数据之间的转换,以完成对 Java 对象的持久化操作以及对数据库中数据的读取和转化为 Java 对象,ORM 能实现这一功能的框架。实现 ORM 功能的组件有很多,如 Apache 软件基金组织的 OJB ( Object-Relational Bridge ,对象关系桥)组件和 JBoss 组织的 Hibernate 。
23
9.5.1 Hibernate9.5.1 Hibernate 简介简介 66
☻Hibernate Hibernate Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以方便的运用面向对象的编程思想来操纵数据库。Hibernate 的第一个正式版本是在 2001年末发布的, 2002年 6月, Hibernate 2 发布,随后,2005年 3月, Hibernate 3正式发布,这一版本在性能、灵活性和扩展性方面得到了进一步的提升,在很大程度上超越了其他持久层技术。
24
9.5.1 Hibernate9.5.1 Hibernate 简介简介 77
☻HibernateHibernate 的特点 的特点 Hibernate 不仅提供了从 Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库, Hibernate 可以大大减少操作数据库的工作量。 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 HQL ( Hibernate Query Language , Hibernate查询语言)从数据库提取数据的代码的编写量,从而节约开发时间和开发成本。Hibernate 可以和多种 Web服务器或者应用服务器良好集成,支持几乎所有的流行的数据库服务器。
☻这些特点使得这些特点使得 HibernateHibernate已经成为了最具影已经成为了最具影响力的响力的 ORMORM 工具,被广泛地应用于实现各中工具,被广泛地应用于实现各中应用系统的持久层。应用系统的持久层。
25
9.5.2 Hibernate9.5.2 Hibernate 工作原理工作原理 11
☻HibernateHibernate 应用程序结构 应用程序结构 下图显示了 Hibernate 应用程序的结构,可以看出, Hibernate 是通过一系列的配置文件和数据库来实现对象持久化操作的,同时可以了解 Hibernate 在应用程序中的位置。
26
9.5.2 Hibernate9.5.2 Hibernate 工作原理工作原理 22
☻HibernateHibernate 的体系结构 的体系结构 HibernateHibernate 的体系结构如图所示,它最大程度的完成的体系结构如图所示,它最大程度的完成了对持久层功能的封装,也就使得在开发中所要完了对持久层功能的封装,也就使得在开发中所要完成的工作量最少,这是在开发中最经常使用的一种成的工作量最少,这是在开发中最经常使用的一种方式方式。。
27
9.5.2 Hibernate9.5.2 Hibernate 工作原理工作原理 33
☻HibernateHibernate体系结构中各部分的主要功能 体系结构中各部分的主要功能 SessionFactory 是生成 Session 的工厂,是针对单个数据库映射关系经过编译后的内存镜像。 该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存,它也是线程安全的。 Session 是表示应用程序与持久储存层之间交互操作的一个单线程对象,它隐藏了 JDBC连接,也是Transaction 的工厂。它会持有一个针对持久化对象的一级缓存,该对象生存期很短,在遍历对象图或者根据持久化标识查找对象时会用到。 Transaction 是应用程序用来指定原子操作单元范围的对象, 它通过抽象将应用从底层具体的JDBC 、 JTA 以及 CORBA事务隔离开。 在一些情况下,一个 Session 之内可能包含多个 Transaction对象。 该对象是单线程的,生存期很短。
28
9.5.2 Hibernate9.5.2 Hibernate 工作原理工作原理 33
☻HibernateHibernate体系结构中各部分的主要功能 体系结构中各部分的主要功能 ConnectionProvider 是生成 JDBC连接的工厂,同时也起到连接池的作用。 它通过抽象将应用从底层的 Datasource或 DriverManager隔离开。仅供开发者扩展和实现用,并不暴露给应用程序使用。 TransactionFactory 是生成 Transaction 对象实例的工厂。 也是仅供开发者扩展和实现用,并不暴露给应用程序使用。 Transient Object (瞬态对象)是一个持久化类的实例处于三种不同状态中的一种,该实例从未与任何持久化上下文 (Persistence Context ,即 Session 对象 )关联过。它没有持久化标识(相当于主键)。 Persistent Object (持久对象 ) )也是一个持久化类的实例处于三种不同状态中的一种,实例与某个持久化上下文有关联。 它拥有持久化标识(相当于主键),并且可能在数据库中有一个对应的行。
29
9.5.3 Hibernate9.5.3 Hibernate 的安装的安装 11
☻ 下载下载 HibernateHibernate 登录 Hibernate官方网站: http:// www.hibernate.org/ 案例使用的是 Hibernate 的 3.2.4.SP1 版本 Windows平台使用“ hibernate-3.2.4.sp1.zip” 安
装包。
30
9.5.3 Hibernate9.5.3 Hibernate 的安装的安装 22
☻ 安装安装 HibernateHibernate在 Eclipse 中开发 Hibernate 项目时,对 Hibernate 的安装很简单。 先用解压软件将 hibernate-3.2.4.sp1.zip文件进行解压,解压后的目录结构如图 9-62所示。 再将目录中的 hibernate3.jar文件和 \lib\ 目录下的所有 *.jar文件复制到项目的 \WEB-INF\lib 目录下。 最后在 Hibernate 项目中将这些文件添加到Eclipse 的 Java 构建路径中即可,具体操作后面详细讲解。
31
9.5.4 Hibernate9.5.4 Hibernate 案例案例 11
☻案例引入案例引入为了使读者对为了使读者对 HibernateHibernate 框架的使用有较全框架的使用有较全
面了解,引入简单的存储和显示员工信息面了解,引入简单的存储和显示员工信息的的 WebWeb 应用程序,包括两个应用程序,包括两个 JSPJSP 程序,程序, HiHibernateProjectJSP.jspbernateProjectJSP.jsp 向向 EmpEmp 表中插入表中插入 1010条数据,条数据, DisplayEmp.jspDisplayEmp.jsp 显示所插入的所显示所插入的所有记录。有记录。
☻知识学习要求掌握为:知识学习要求掌握为:掌握在掌握在 EclipseEclipse 中利用中利用 HibernateHibernate 框架建立框架建立
WebWeb 应用程序的一般开发过程;掌握应用程序的一般开发过程;掌握 EclipEclipsese 中构建路径的配置。掌握建立和配置中构建路径的配置。掌握建立和配置 EmEmp.hbm.xmp.hbm.xm 、、 hibernate.cfg.xmlhibernate.cfg.xml 文件的方法;文件的方法;掌握程序的运行方法。掌握程序的运行方法。
32
9.5.4 Hibernate9.5.4 Hibernate 案例案例 22
【综合案例【综合案例 9-49-4】在】在 EclipseEclipse 利用利用 HibernateHibernate 框框架建立简单的员工信息存储和显示程序架建立简单的员工信息存储和显示程序
☻ 建立数据库建立数据库☻ 建立项目建立项目☻ 添加添加 HibernateHibernate 框架框架☻ 配置配置 JavaJava 构建路径构建路径☻ 建立可持久化类建立可持久化类☻ 建立数据映射文件建立数据映射文件 Emp.hbm.xmlEmp.hbm.xml☻ 建立建立 HibernateHibernate 的配置文件的配置文件 hibernate.cfg.xmlhibernate.cfg.xml☻ 建立建立 JSPJSP 文件文件☻ 运行项目运行项目
33
9.6 Spring9.6 Spring☻主要介绍主要介绍 SpringSpring 框架产生的背景、特点、框架产生的背景、特点、体系结构和主要功能,介绍了控制反转(体系结构和主要功能,介绍了控制反转( IoIoCC )与面向切面的编程()与面向切面的编程( AOPAOP )的概念,介)的概念,介绍了绍了 SpringSpring 的下载和安装过程。重点通过案的下载和安装过程。重点通过案例讲解了在例讲解了在 EclipseEclipse 中如何运用中如何运用 SpringSpring 框架框架建立、配置和运行建立、配置和运行 WebWeb 应用程序。应用程序。☻知识学习要求掌握为:知识学习要求掌握为: 了解了解 SpringSpring 框架产生的背景、特点、体系框架产生的背景、特点、体系结构和主要功能,了解控制反转(结构和主要功能,了解控制反转( IoCIoC )与)与面向切面的编程(面向切面的编程( AOPAOP )的概念,掌握)的概念,掌握 SprSpringing 的下载、安装过程,熟练掌握在的下载、安装过程,熟练掌握在 EclipseEclipse中如何运用中如何运用 SpringSpring 框架建立、配置和运行框架建立、配置和运行WebWeb 应用程序。应用程序。
34
路线图路线图
☻ SpringSpring 简介简介☻ SpringSpring 工作原理工作原理☻ SpringSpring 的安装的安装☻ SpringSpring 案例案例
35
9.6.1 Spring9.6.1 Spring 简介简介 11
☻ SpringSpring 产生的背景产生的背景Spring 的基础架构起源于 2000年早期, Spring 使用基本的 JavaBean 来完成以前只可能由 EJB完成的事情。在 2002后期, Rod Johnson 发布了《 Expert One-on-One J2EE Design and Development》一书,后来,Rod Johnson 在 interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架—— Spring 。然而, Spring 的用途不仅限于服务器端的开发。 2003年 2月Spring 框架正式成为一个开源项目,发布于 SourceForge 中。
36
9.6.1 Spring9.6.1 Spring 简介简介 22
☻ SpringSpring 的特点的特点 容器功能 黏合剂 /组装功能 企业应用开发实用工具集 通用实践抽象
37
9.6.2 Spring9.6.2 Spring 工作原理工作原理 11
☻SpringSpring 框架的体系结构框架的体系结构pringpring 框架的总体结构图框架的总体结构图
38
9.6.2 Spring9.6.2 Spring 工作原理工作原理 22
☻ SpringSpring 框架的体系结构框架的体系结构最底层是 Spring 框架的核心 IOC ( Inversion of Control ,控制反转)容器,也是 Spring 最基础的部分。接着 Spring核心容器上是 Spring 的 AOP ( Aspect-oriented programming )层, Spring 有自己单独的 AOP实现,同时还集成了 AspectJ 的 AOP 功能。因为数据访问层都考虑了声明式事务处理等,因此在AOP 层上面是 Spring 的数据访问层。数据访问层包括两大部分, DAO 部分主要是 Spring对 JDBC 的封装以及事务管理, ORM 部分是 Spring与其它各种轻持久层对象-关系映射框架的整合及集成,如 Hibernate 、 JPA 等。还有两大部分, JEE 和 WEB 部分。
39
9.6.2 Spring9.6.2 Spring 工作原理工作原理 33
☻ SpringSpring 的主要功能的主要功能 控制反转IoCIoC 是是 SpringSpring 的核心概念,的核心概念, IoCIoC 的本质是实现了对的本质是实现了对
象之间依赖关系的转移。通过使用象之间依赖关系的转移。通过使用 SpringSpring 框架,开发框架,开发人员将不必自己在代码中维护对象之间的依赖关系,人员将不必自己在代码中维护对象之间的依赖关系,只需在配置文件中进行设定就可以了。只需在配置文件中进行设定就可以了。 SpringSpring会自动会自动地依据配置信息来维护对象之间的依赖关系,将被依地依据配置信息来维护对象之间的依赖关系,将被依赖的对象设置给依赖对象。(依赖)控制权由应用代赖的对象设置给依赖对象。(依赖)控制权由应用代码中转到了外部容器,控制权的转移,即所谓的“反码中转到了外部容器,控制权的转移,即所谓的“反转”,换句话说,就是由容器控制程序之间的(依转”,换句话说,就是由容器控制程序之间的(依赖)关系,而非传统实现中由程序代码直接操控。这赖)关系,而非传统实现中由程序代码直接操控。这也就是所谓“控制反转”的概念所在。也就是所谓“控制反转”的概念所在。
IoCIoC 属于设计模式上的一个概念,通常情况下属于设计模式上的一个概念,通常情况下 IoCIoC 的的实现方式有两种。分别是实现方式有两种。分别是 Dependency InjectionDependency Injection (依(依赖注入)和赖注入)和 Service LocatorService Locator (服务定位器),(服务定位器), SpringSpring框架所采用框架所采用 IoCIoC 的实现方式为依赖注入。的实现方式为依赖注入。
40
9.6.2 Spring9.6.2 Spring 工作原理工作原理 44
☻ SpringSpring 的主要功能的主要功能 面向切面的编程AOPAOP 是是 SpringSpring 框架的另一核心特色。框架的另一核心特色。 AOPAOP 可以可以
用一种松散耦合的方式来实现独立的关注点,再用一种松散耦合的方式来实现独立的关注点,再组合这些实现来建立最终系统。从技术的角度来组合这些实现来建立最终系统。从技术的角度来说,一个典型的软件系统包含一些核心的关注点说,一个典型的软件系统包含一些核心的关注点和系统的关注点。与之对照,用和系统的关注点。与之对照,用 OOPOOP 建立的系统建立的系统则是用松散耦合的模块化实现的一般关注点来实则是用松散耦合的模块化实现的一般关注点来实现的。在现的。在 AOPAOP 中,这些模块化单元叫切面(中,这些模块化单元叫切面( aspeaspectct ),而在),而在 OOPOOP 中,这些一般关注点的实现单元中,这些一般关注点的实现单元叫类。叫类。
AOPAOP 与与 OOPOOP 的不同点关键在于它出来横切关注的不同点关键在于它出来横切关注点的方式,在点的方式,在 AOPAOP 中,每个关注点的实现都不知中,每个关注点的实现都不知道其他关注点是否会“关注”它,道其他关注点是否会“关注”它, AOPAOP 展示了一展示了一个从个从 OOPOOP转化来的强大的开发范型。转化来的强大的开发范型。
41
9.6.2 Spring9.6.2 Spring 工作原理工作原理 55
☻ SpringSpring 的主要功能的主要功能 持久层的封装和事物管理
对数据库的操作已经成为现代软件所必不可对数据库的操作已经成为现代软件所必不可少的一贯环节,减轻持久层的开发工作也就少的一贯环节,减轻持久层的开发工作也就成为了成为了 SpringSpring 的目的之一。的目的之一。 SpringSpring 提供了提供了对持久层的整合功能,其中包括对对持久层的整合功能,其中包括对 JDBCJDBC 的的使用加以封装已经对各种使用加以封装已经对各种 O/R MappingO/R Mapping 工工具(例如,具(例如, HibernateHibernate ,, iBATISiBATIS ,, OJBOJB等)的整合。等)的整合。
42
9.6.2 Spring9.6.2 Spring 工作原理工作原理 66
☻ SpringSpring 的主要功能的主要功能 提高了对 Web 的多种支持Spring自己实现了 MVC ( Model-View-Controller )模式 Web 框架,使用 Spring的 MVC实现。可以很方便地使用 Spring所提供的 IoC 和 AOP服务,实现域模型与页面表单的清晰分离,使得应用程序有更好的结构和更易于维护,同时也支持对其他Web 框架(如前面讲的 Struts )的整合。
43
9.6.3 Spring9.6.3 Spring 的安装的安装 11
☻ 下载下载 SpringSpringSpring官方网站: http://www.springframework.org/ 本案例用的是 Spring Framework 2.0.5 使用“ spring-framework-2.0.5.zip” 安装包
44
9.6.3 Spring9.6.3 Spring 的安装的安装 22
☻ 安装安装 SpringSpring 安装 Spring 的过程与安装 Struts 和 Hibernate类似,在开发项目时,将已下载的 spring-framework-2.0.5.zip文件解压,双击解压后根目录中的 dist文件夹,可以看到 dist文件夹的文件结构如图9-75所示。 将 spring.jar文件或者 dist\modules\ 目录中的所有 *.jar文件(如图 9-76所示)复制到新建项目的 WEB-INF\lib 目录下(也可以只复制 spring.jar文件,因为该文件包含了框架所需的各种类文件)。
45
9.6.4 Spring9.6.4 Spring 案例案例 11
☻案例引入:案例引入:Spring 是一个丰富的框架,为了使读者对
Spring 框架的使用有初步的了解,本节引入一个简单的信息展示Web 应用程序,包括一个叫 SpringProjectJSP.jsp 的程序,用于显示我们要展示的信息。☻知识学习要求掌握为:知识学习要求掌握为:
掌握在 Eclipse 中利用 Spring 框架建立 Web 应用程序的一般开发过程;掌握 Eclipse中构建路径的配置。掌握建立和配置 bean.xml文件的方法;掌握程序的运行方法。
46
9.6.4 Spring9.6.4 Spring 案例案例 22
【综合案例【综合案例 9-59-5 】在】在 EclipseEclipse 利用利用 SprinSpringg 框架建立简单的信息展示程序框架建立简单的信息展示程序☻ 建立项目建立项目☻ 添加添加 SpringSpring 框架框架☻ 配置配置 JavaJava 构建路径构建路径☻ 建立建立 WelBeanWelBean类类☻ 建立建立 bean.xmlbean.xml 文件文件☻ 建立建立 SpringProjectJSP.jspSpringProjectJSP.jsp 文件文件☻ 运行程序运行程序
47
本章小结本章小结☻本章从本章从 TomcatTomcat 、、 JBossJBoss 、、 ServletServlet 、、 JSPJSP 、、 SS
trutstruts 、、 HibernateHibernate 和和 SpringSpring 入手,从不同角入手,从不同角度向读者展示了度向读者展示了 Java WebJava Web 开发中各种技术的开发中各种技术的应用,循序渐进地引导读者快速掌握应用,循序渐进地引导读者快速掌握 Java WeJava Webb 开发。 开发。
☻本章涵盖了从事本章涵盖了从事 Java WebJava Web 开发所应掌握的大开发所应掌握的大部分知识。在知识的讲解上,采用理论与实践部分知识。在知识的讲解上,采用理论与实践相结合的方式,从程序运行的内部机制进行分相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运析讲解,并通过大量的实例和实验来验证并运用本书的知识。可快速地从用本书的知识。可快速地从 JavaJava 基础知识的基础知识的学习中过渡到学习中过渡到 Java WebJava Web 的学习与开发上。 的学习与开发上。
48
习题习题 99一、概念题一、概念题11 . . MVCMVC模式模式22 . 软件四层体系结构模型. 软件四层体系结构模型33 . 数据持久化. 数据持久化44 . . IoCIoC55 . . AOPAOP
二、应用题二、应用题11 . 应用. 应用 StrutsStruts 框架建立一个简单的框架建立一个简单的 WebWeb 应用程应用程
序。序。22 . 应用. 应用 HibernateHibernate 框架建立一个简单的数据存储框架建立一个简单的数据存储
和展示的和展示的 WebWeb 应用程序。应用程序。33、 应用、 应用 SpringSpring 框架建立一个简单的框架建立一个简单的 WebWeb 应用程应用程
序。序。