480 likes | 630 Views
第四部分 Java 语言高级篇. 第 9 章 Web 开发技术简介. (之二). 学习目的. 熟悉各种 Web 开发技术的下载、安装和配置等基本操作,了解 Servlet 和 JSP 等技术的功能、特点以及与相关技术的区别,了解 Struts 、 Hibernate 和 Spring 等技术的产生的背景、特点和工作原理,掌握在 Eclipse 中 Servlet 和 JSP 应用程序的一般开发过程,掌握在 Eclipse 中利用 Struts 、 Hibernate 和 Spring 等框架建立、配置和运行 Web 应用程序的过程. 主要内容.
E N D
第四部分 Java语言高级篇 第9章 Web开发技术简介 (之二)
学习目的 熟悉各种Web开发技术的下载、安装和配置等基本操作,了解Servlet和JSP等技术的功能、特点以及与相关技术的区别,了解Struts、Hibernate和Spring等技术的产生的背景、特点和工作原理,掌握在Eclipse中Servlet和JSP应用程序的一般开发过程,掌握在Eclipse中利用Struts、Hibernate和Spring等框架建立、配置和运行Web应用程序的过程
主要内容 • Tomcat和JBoss • Servlet • JSP • Struts • Hibernate • Spring
9.4 Struts • 主要介绍Struts框架的起源、优缺点和工作原理以及Struts的下载、安装过程,介绍了MVC模式以及该模式与Struts的关系。重点通过案例讲解在Eclipse中如何运用Struts框架建立、配置和运行Web应用程序。 • 知识学习要求掌握为: 了解Struts框架的起源、优缺点和工作原理,了解MVC模式以及该模式与Struts的关系,掌握Struts的下载、安装过程,熟练掌握在Eclipse中如何运用Struts框架建立、配置和运行Web应用程序。
路线图 • Struts简介 • Struts的工作原理 • Struts的下载与安装 • Struts案例
9.4.1 Struts简介1 • Struts的起源 • Struts是作为Apache Jakarta项目的组成部分,该项目目标是为建立Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.2。通过使用struts 框架可以改进和提高JSP、Servlet、标记库及面向对象的技术在web应用程序中的应用。 • Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。同样,软件工程师使用Struts为业务应用的每一层提供支持,可以帮助我们减少在运用MVC(Model- View -Controller)设计模型来开发Web应用的时间,提高开发效率。
9.4.1 Struts简介2 • Struts 优点与缺点 Struts作为最受开发者欢迎的Web框架之一,有其突出的优点: • Struts提供Taglib标记库,能大大提高开发 效率,可以大大节约开发时间。 • 表现与逻辑分离,Struts将MVC的 Controller一分为三,使结构更加清晰。 • 提供页面导航,使系统的脉络更加清晰, 维护扩展比较方便。 • 便于团队开发
9.4.2 Struts的工作原理1 • MVC 模式(Model-View-Controller Patterns ) • 谈到Struts,我们就不得不提到MVC设计模式。MVC即Model-View-Controller的缩写,它是web应用当中的常用的设计模式。早期Smalltalk 程序语言便采用了MVC模式以增加程序代码弹性。 • MVC 设计模式很清楚的划定了程序员与设计者的角色界限。这种模式是让设计者集中于设计应用程序的显示部分,而开发者则集中于开发驱动应用程序功能所需的组件。
9.4.2 Struts的工作原理2 • MVC 模式 (Model-View-Controller Patterns )
9.4.2 Struts的工作原理3 • 数据模型(Model)描述并处理应用程序数据; • 视图(View)指的是用户界面,它反映的是模型数据并把它递交给用户; • 程序控制逻辑( Controller) 是将视图上的行为(例如,按下 Submit 按钮)映射到模型上的操作(例如,检索用户详细信息)。模型更新后,视图也被更新,用户就能够完成更多行为。 • MVC 模式使代码易懂而且使代码更容易重用;另外,在很多工程中视图经常要被更新,MVC 模式将模型和控制器与这些所做的更改独立开来。
9.4.2 Struts的工作原理4 • Struts的运行过程图
9.4.2 Struts的工作原理5 • Struts的运行过程 • 控制:在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进行处理。
9.4.3 Struts的下载与安装 • 案例使用的是比较经典的、目前应用较多的 Struts1.2.9版本 • Struts1.2.9安装包下载地址是 http://archive.apache.org/dist/struts/binaries/。 • Windows下的安装包是 “struts-1.2.9-bin.zip” • Struts的安装很简单,将struts-1.2.9-bin.zip解 压缩到E:\eclipse\struts-1.2.9-bin即可
9.4.4 Struts案例1 • 案例引入: 为了使读者对Struts框架的使用有初步的了解,本节引入一个功能非常简化的Web应用程序,只需要在页面显示“Hello! I like Struts, it is great!!”即可,关键让读者掌握在Eclipse中利用Struts框架建立Web应用程序的一般开发过程。 • 知识学习要求掌握为: 掌握在Eclipse中利用Struts框架建立Web应用程序的一般开发过程;掌握Eclipse中构建路径的配置。掌握MessageResources.properties、struts-config.xml文件的配置方法;掌握程序的运行方法。
9.4.4 Struts案例2 【综合案例9-3】在Eclipse利用Struts建立简单的Web应用程序 • 建立项目 • 添加Struts框架 • 配置Java构建路径 • 建立StrutsprojectAction类 • 建立StrutsProjectJSP.jsp文件 • 配置MessageResources.properties和 struts-config.xml文件 • 运行程序
9.5 Hibernate • 主要介绍Hibernate框架的特点、Hibernate应用程序的结构和体系结构,介绍了四层体系结构模型与Hibernate产生的关系,介绍了Hibernate的下载和安装过程。重点通过案例讲解了在Eclipse中如何运用Hibernate框架建立、配置和运行Web应用程序。 • 知识学习要求掌握为: 了解Hibernate框架的特点、Hibernate应用程序的结构、体系结构和四层体系结构模型,掌握Hibernate的下载、安装过程,熟练掌握在Eclipse中如何运用Hibernate框架建立、配置和运行Web应用程序。
路线图 • Hibernate简介 • Hibernate工作原理 • Hibernate的安装 • Hibernate案例
9.5.1 Hibernate简介1 • Hibernate产生的背景 在软件开发过程中,持久(Persistence)的数据是对保存在掉电后也不会丢失数据的存储设备中的数据的一种形象的表述,相对应的持久化操作通常表示将内存中的数据保存到磁盘的操作,在完成了数据的保存后,就表示相应的数据被持久化了。 数据保存在磁盘的手段有很多种,如格式化的文本文件、XML文件,也可以是数据库系统,为了方便的进行数据的保存、处理、管理和查询,绝大多数的应用系统都采用数据库进行数据的持久化操作。
9.5.1 Hibernate简介2 • 三层体系结构模型 即经典的MVC模式开发架构。如图所示, 其中的表示层提供用户界面的显示和用户与应用系统的交互操作,业务逻辑层提供业务逻辑的处理和数据的持久化操作,数据层主要用于保存需要持久化的数据。这一模型中,实现了业务逻辑和显示的分离,降低了程序开发的复杂度,特别适合开发基于B/S模式的应用系统。
9.5.1 Hibernate简介3 • 四层体系结构模型 为了降低软件的开发难度以提高软件的开发效率,可以在三层模型中把业务逻辑层中进行数据持久化的操作分离出来,形成独立的持久层,这样就形成了如图9-56所示的四层体系结构模型,在这一模型中,业务逻辑层尽心核心业务逻辑的处理,持久层专注于对象的持久化操作,表示层和数据层功能不变。
9.5.1 Hibernate简介4 • 数据持久层的设计目标 为整个应用系统提供一个高层、统一、安全和并发的数据持久机制,完成对数据进行持久化的编程工作,并为系统业务逻辑层提供服务。 目前比较常用的几种数据持久层实现方案有以下几种: • 通过JDBC和DAO(Data Access Object,数据访问对象)实现数据持久化; • 通过EJB实现数据持久化; • 通过JDO(Java Data Objects,Java 数据对象)实现数据持久化; • 通过DAO和ORM(Object-Relational Mapping,对象关系映射)组件来实现数据持久化。 • 在实践中比较以上的几种方案,使用ORM组件能够很好的平衡服务器资源的消耗,取得较好的性能获得较高的开发效率,并可以应用于绝大多数软件系统。
9.5.1 Hibernate简介5 • ORM • ORM本身并不是一个组件,它是具有实现实体域对象持久化并封装数据访问细节的组件的总称。 • 当前的应用系统多采用多层次体系结构。 • 通过持久层来实现Java对象与数据库中关系型数据之间的转换,以完成对Java对象的持久化操作以及对数据库中数据的读取和转化为Java对象,ORM能实现这一功能的框架。 • 实现ORM功能的组件有很多,如Apache软件基金组织的OJB(Object-Relational Bridge,对象关系桥)组件和JBoss组织的Hibernate。
9.5.1 Hibernate简介6 • Hibernate • Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以方便的运用面向对象的编程思想来操纵数据库。 • Hibernate的第一个正式版本是在2001年末发布的,2002年6月,Hibernate 2发布,随后,2005年3月,Hibernate 3正式发布,这一版本在性能、灵活性和扩展性方面得到了进一步的提升,在很大程度上超越了其他持久层技术。
9.5.1 Hibernate简介7 • Hibernate的特点 • Hibernate不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库, Hibernate可以大大减少操作数据库的工作量。 • Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用HQL(Hibernate Query Language,Hibernate查询语言)从数据库提取数据的代码的编写量,从而节约开发时间和开发成本。 • Hibernate可以和多种Web服务器或者应用服务器良好集成,支持几乎所有的流行的数据库服务器。 • 这些特点使得Hibernate已经成为了最具影响力的ORM工具,被广泛地应用于实现各中应用系统的持久层。
9.5.2 Hibernate工作原理1 • Hibernate应用程序结构 • 下图显示了Hibernate应用程序的结构,可以看出,Hibernate是通过一系列的配置文件和数据库来实现对象持久化操作的,同时可以了解Hibernate在应用程序中的位置。
9.5.2 Hibernate工作原理2 • Hibernate的体系结构 Hibernate的体系结构如图所示,它最大程度的完成了对持久层功能的封装,也就使得在开发中所要完成的工作量最少,这是在开发中最经常使用的一种方式。
9.5.2 Hibernate工作原理3 • Hibernate体系结构中各部分的主要功能 • SessionFactory是生成Session的工厂,是针对单个数据库映射关系经过编译后的内存镜像。 该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存,它也是线程安全的。 • Session 是表示应用程序与持久储存层之间交互操作的一个单线程对象,它隐藏了JDBC连接,也是Transaction的工厂。它会持有一个针对持久化对象的一级缓存,该对象生存期很短,在遍历对象图或者根据持久化标识查找对象时会用到。 • Transaction 是应用程序用来指定原子操作单元范围的对象, 它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。 在一些情况下,一个Session之内可能包含多个Transaction对象。 该对象是单线程的,生存期很短。
9.5.2 Hibernate工作原理3 • Hibernate体系结构中各部分的主要功能 • ConnectionProvider是生成JDBC连接的工厂,同时也起到连接池的作用。 它通过抽象将应用从底层的Datasource或DriverManager隔离开。仅供开发者扩展和实现用,并不暴露给应用程序使用。 • TransactionFactory是生成Transaction对象实例的工厂。 也是仅供开发者扩展和实现用,并不暴露给应用程序使用。 • Transient Object(瞬态对象)是一个持久化类的实例处于三种不同状态中的一种,该实例从未与任何持久化上下文(Persistence Context,即Session对象)关联过。它没有持久化标识(相当于主键)。 • Persistent Object(持久对象))也是一个持久化类的实例处于三种不同状态中的一种,实例与某个持久化上下文有关联。 它拥有持久化标识(相当于主键),并且可能在数据库中有一个对应的行。
9.5.3 Hibernate的安装1 • 下载Hibernate • 登录Hibernate官方网站: http:// www.hibernate.org/ • 案例使用的是Hibernate的3.2.4.SP1版本 • Windows平台使用“hibernate-3.2.4.sp1.zip”安装包。
9.5.3 Hibernate的安装2 • 安装Hibernate • 在Eclipse中开发Hibernate项目时,对Hibernate的安装很简单。 • 先用解压软件将hibernate-3.2.4.sp1.zip文件进行解压,解压后的目录结构如图9-62所示。 • 再将目录中的hibernate3.jar文件和\lib\目录下的所有*.jar文件复制到项目的\WEB-INF\lib目录下。 • 最后在Hibernate项目中将这些文件添加到Eclipse的Java构建路径中即可,具体操作后面详细讲解。
9.5.4 Hibernate案例1 • 案例引入 为了使读者对Hibernate框架的使用有较全面了解,引入简单的存储和显示员工信息的Web应用程序,包括两个JSP程序,HibernateProjectJSP.jsp向Emp表中插入10条数据,DisplayEmp.jsp显示所插入的所有记录。 • 知识学习要求掌握为: 掌握在Eclipse中利用Hibernate框架建立Web应用程序的一般开发过程;掌握Eclipse中构建路径的配置。掌握建立和配置Emp.hbm.xm、hibernate.cfg.xml文件的方法;掌握程序的运行方法。
9.5.4 Hibernate案例2 【综合案例9-4】在Eclipse利用Hibernate框架建立简单的员工信息存储和显示程序 • 建立数据库 • 建立项目 • 添加Hibernate框架 • 配置Java构建路径 • 建立可持久化类 • 建立数据映射文件Emp.hbm.xml • 建立Hibernate的配置文件hibernate.cfg.xml • 建立JSP文件 • 运行项目
9.6 Spring • 主要介绍Spring框架产生的背景、特点、体系结构和主要功能,介绍了控制反转(IoC)与面向切面的编程(AOP)的概念,介绍了Spring的下载和安装过程。重点通过案例讲解了在Eclipse中如何运用Spring框架建立、配置和运行Web应用程序。 • 知识学习要求掌握为: 了解Spring框架产生的背景、特点、体系结构和主要功能,了解控制反转(IoC)与面向切面的编程(AOP)的概念,掌握Spring的下载、安装过程,熟练掌握在Eclipse中如何运用Spring框架建立、配置和运行Web应用程序。
路线图 • Spring简介 • Spring工作原理 • Spring的安装 • Spring案例
9.6.1 Spring简介1 • Spring产生的背景 • 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中。
9.6.1 Spring简介2 • Spring的特点 • 容器功能 • 黏合剂/组装功能 • 企业应用开发实用工具集 • 通用实践抽象
9.6.2 Spring工作原理1 • Spring框架的体系结构 pring框架的总体结构图
9.6.2 Spring工作原理2 • Spring框架的体系结构 • 最底层是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部分。
9.6.2 Spring工作原理3 • Spring的主要功能 • 控制反转 • IoC是Spring的核心概念,IoC的本质是实现了对象之间依赖关系的转移。通过使用Spring框架,开发人员将不必自己在代码中维护对象之间的依赖关系,只需在配置文件中进行设定就可以了。Spring会自动地依据配置信息来维护对象之间的依赖关系,将被依赖的对象设置给依赖对象。(依赖)控制权由应用代码中转到了外部容器,控制权的转移,即所谓的“反转”,换句话说,就是由容器控制程序之间的(依赖)关系,而非传统实现中由程序代码直接操控。这也就是所谓“控制反转”的概念所在。 • IoC属于设计模式上的一个概念,通常情况下IoC的实现方式有两种。分别是Dependency Injection(依赖注入)和Service Locator(服务定位器),Spring框架所采用IoC的实现方式为依赖注入。
9.6.2 Spring工作原理4 • Spring的主要功能 • 面向切面的编程 • AOP是Spring框架的另一核心特色。AOP可以用一种松散耦合的方式来实现独立的关注点,再组合这些实现来建立最终系统。从技术的角度来说,一个典型的软件系统包含一些核心的关注点和系统的关注点。与之对照,用OOP建立的系统则是用松散耦合的模块化实现的一般关注点来实现的。在AOP中,这些模块化单元叫切面(aspect),而在OOP中,这些一般关注点的实现单元叫类。 • AOP与OOP的不同点关键在于它出来横切关注点的方式,在AOP中,每个关注点的实现都不知道其他关注点是否会“关注”它,AOP展示了一个从OOP转化来的强大的开发范型。
9.6.2 Spring工作原理5 • Spring的主要功能 • 持久层的封装和事物管理 对数据库的操作已经成为现代软件所必不可少的一贯环节,减轻持久层的开发工作也就成为了Spring的目的之一。Spring提供了对持久层的整合功能,其中包括对JDBC的使用加以封装已经对各种O/R Mapping工具(例如,Hibernate,iBATIS,OJB等)的整合。
9.6.2 Spring工作原理6 • Spring的主要功能 • 提高了对Web的多种支持 Spring自己实现了MVC(Model-View-Controller)模式Web框架,使用Spring的MVC实现。可以很方便地使用Spring所提供的IoC和AOP服务,实现域模型与页面表单的清晰分离,使得应用程序有更好的结构和更易于维护,同时也支持对其他Web框架(如前面讲的Struts)的整合。
9.6.3 Spring的安装1 • 下载Spring • Spring官方网站:http://www.springframework.org/ • 本案例用的是Spring Framework 2.0.5 • 使用“spring-framework-2.0.5.zip” 安装包
9.6.3 Spring的安装2 • 安装Spring • 安装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文件,因为该文件包含了框架所需的各种类文件)。
9.6.4 Spring案例1 • 案例引入: Spring是一个丰富的框架,为了使读者对Spring框架的使用有初步的了解,本节引入一个简单的信息展示Web应用程序,包括一个叫SpringProjectJSP.jsp的程序,用于显示我们要展示的信息。 • 知识学习要求掌握为: 掌握在Eclipse中利用Spring框架建立Web应用程序的一般开发过程;掌握Eclipse中构建路径的配置。掌握建立和配置bean.xml文件的方法;掌握程序的运行方法。
9.6.4 Spring案例2 【综合案例9-5】在Eclipse利用Spring框架建立简单的信息展示程序 • 建立项目 • 添加Spring框架 • 配置Java构建路径 • 建立WelBean类 • 建立bean.xml文件 • 建立SpringProjectJSP.jsp文件 • 运行程序
本章小结 • 本章从Tomcat、JBoss、Servlet、JSP、Struts、Hibernate和Spring入手,从不同角度向读者展示了Java Web开发中各种技术的应用,循序渐进地引导读者快速掌握Java Web开发。 • 本章涵盖了从事Java Web开发所应掌握的大部分知识。在知识的讲解上,采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。可快速地从Java基础知识的学习中过渡到Java Web的学习与开发上。
习题9 一、概念题 1. MVC模式 2. 软件四层体系结构模型 3. 数据持久化 4. IoC 5. AOP 二、应用题 1. 应用Struts框架建立一个简单的Web应用程序。 2. 应用Hibernate框架建立一个简单的数据存储和展示的Web应用程序。 3、 应用Spring框架建立一个简单的Web应用程序。