《JSP开发模式与技术.ppt》由会员分享,可在线阅读,更多相关《JSP开发模式与技术.ppt(51页珍藏版)》请在三一办公上搜索。
1、JSP开发模式与技术,赵宁2011-6-5,JSP 开发模式与技术,JSP 是当今最流行的动态网站开发技术之一。自 JSP 推出后,众多大公司都支持 JSP 技术的服务器,如 IBM、Oracle、Bea 公司等,所以 JSP 迅速成为商业应用的服务器端语言。在这种背景下,如何开发出健壮、高效的 Web 程序就是一个需要解决的问题。因此我们就需要一些设计模式的帮助,如基于 MVC(Model-View-Controller,模型-视图-控制器)模式的开发框架。除此之外,有了 Hibernate 技术就可以使用面向对象的 Java 语言操作和管理关系数据库,从而使得开发 Web 应用程序变得简单
2、。,10.1 JSP 开发模式,为了更好的利用 JSP 来开发 Web 应用程序,下面主要介绍两种 JSP 的开发模式。10.1.1 JSP+JavaBean 模式这一模式中 JSP 页面负责处理请求和输出响应结果,并将其中发生的一些业务逻辑交给JavaBean 处理。该模式最大的特点就是将一次请求的响应过程完全交给一个 JSP 页面负责,通过使用该模式可以实现页面的显示和页面的内容(逻辑)分离,但是大量使用此模式可能带来一个副作用,那就是会导致在页面里面嵌入大量的 Java 控制代码,大量的内嵌代码使得页面变得庞大,同时也非常复杂。当页面的功能实现后交给美工或者页面内容设计人员进行包装时,问
3、题就变得严重了。所以大型的项目里,这种方法将会导致页面的维护困难。,10.1 JSP 开发模式,10.1.2 Servlet+JSP+JavaBean 模式1.MVC模式在介绍第二种开发模式之前,让我们首先来了解一下 MVC 模式。MVC(模型-视图-控制器)是 20 世纪 80 年代为 Smalltalk-80 编程语言发明的一种软件设计模式,它是一种分离业务逻辑与显示界面的设计方法,它强制性的使应用程序的输入、处理和输出分开。使用MVC 应用程序被分成三个核心部件:模型、视图、控制器它们各自处理自己的任务。,10.1 JSP 开发模式,MVC设计模式如下图所示:,10.1 JSP 开发模式
4、,其中,视图是用户看到并与之交互的界面。在 MVC 模式下,视图并不处理数据。事实上,界面的每一部分都只能包含采集数据的足够逻辑,并把数据传递给设计模式中的其他组成部分进行处理;模型表示企业数据和业务规则。在 MVC 的三个部件中,模型拥有最多的处理任务,它是真正完成任务的代码。模型通常被称为“业务逻辑”;控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击 Web 页面中的超链接和发送 HTML 表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。采用 MVC 模式构建的系统具有极高的可维护性
5、、可扩展性、可移植性和组件的可复用性。,10.1 JSP 开发模式,2.Servlet+JSP+JavaBean技术Servlet+JSP+JavaBean 技术借鉴了 MVC 模式来实现显示内容与业务逻辑的完全分离,它综合采用由 Servlet 处理请求和控制业务流程,JSP 输出响应结果,JavaBean 负责具体的业务数据和业务逻辑。在该模式中,Servlet 不再担负生成显示内容的任务,而 JSP 也只是简单的从 Servlet 创建好的 JavaBean 对象中检索数据,然后将结果插入 JSP 的预定义模板,从而使不懂 Java 代码的普通 HTML 设计人员完全可以编写和维护 JS
6、P 页面。在实际的项目开发过程中,页面设计者可以方便地使用普通的 HTML 工具开发 JSP 页面,Servlet 却更适合于后端开发者使用。开发 Servlets 需要的工具是 Java 集成开发环境。此模式更加明显地把显示和逻辑分离,使得代码比模式一的容易管理,适合大型项目的开发。,10.2 Struts开发框架,Struts 框架是 Apache 开源软件联盟(www.apache.org)的一个开源项目Jakarta StrutsFramework。Struts 框架继承了 MVC 设计模式的特性,遵守了 J2EE 的 Servlet、JSP 等技术规范,并且根据 J2EE 的特点做了
7、相应的变化和扩展,是 J2EE 体系架构的一种轻量级实现。作为一款优秀的 Java Web 应用程序的开发框架,Struts 框架凭借其清晰性、灵活性,成为当前最为广泛应用的轻量级 Java Web 开发框架。,10.2 Struts开发框架,10.2.1 Struts 的工作原理Struts框架实现了 MVC 设计模式,其工作原理如图所示,10.2 Struts开发框架,(1)控制器的实现Struts 框架中采用了 Action 类以及 struts.xml 配置文件作为控制器的实现。struts.xml 配置文件将用户请求映射到具体的 Action 类;而当 Action 类调用模型组件处
8、理好用户请求,并返回了处理结果后,仍然由 Action 类根据 Struts.xml 配置文件将结果转发到视图提供给用户,或者转发另外一个 Action 做进一步处理。,10.2 Struts开发框架,(2)视图的实现Struts 构架主要采用了 JSP 作为视图的实现,它提供了丰富的 JSP 标签库支持应用程序的开发。(3)模型的实现Struts 框架对模型没有提供太多的支持,但是编程人员可以选择合适的技术,比如Hibernate 等等。,10.2.2 Struts的使用,下面就以一个具体的例子说明 Struts 2 的使用方法有关模型的处理请参考下一节。使用 Struts 的具体步骤如下:
9、(1)搭建 Struts 2 开发环境进行 Struts 2 开发首先要搭建好开发环境,注意:在安装 Struts 2 之前,假设已经安装好了 JDK 和 Tomcat。登录 Struts 的官方网站 http:/struts.apache.org/download.cgi,下载 Struts压缩包 struts-2.2.1-all.zip,解压后将解压文件 目录下的 commons-logging-api-1.1.jar、freemarker-2.3.16.jar、ognl-3.0.jar、Struts 2-core-2.2.1.jar 和 xwork-core-2.2.1.jar 复制到
10、Web工程的目录下,然后修改 Web 工程的 web.xml 文件,添加对 Struts 2 的配置,并且要创建一个 struts.xml 文件,目录结构如下图所示。安装后就可以编写 JSP 文件、Action 文件和配置文件,并且编译 Action 文件,最后将该 Web 工程复制到 Web 服务器对应的目录下去发布。,10.2.2 Struts的使用,例如把 Web 工程复制到 Tomcat 的目录下,然后在浏览器中就可以进行访问。,10.2.2 Struts的使用,(2)配置 web.xml 文件任何一个 Struts 2 应用程序都需要配置该文件,可以将 T目录下的 web.xml 进
11、行改写,下面是 web.xml 文件的代码:,10.2.2 Struts的使用,(3)配置 struts.xml 文件所有的 Struts 2 应用也必须配置这个文件。下面是 struts-config.xml 文件的代码:,10.2.2 Struts的使用,可以看出,在和之间定义控制器,一个控制器用一个标签去配置,该标签的 name 属性指定访问该 Action 类的 URL。class 用来指定 Action 的实现类,当 Action 类返回 success 字符串时,调用 success.jsp 去显示;当返回的字符串是 input 时,调用 register.jsp 去显示。,10.
12、2.2 Struts的使用,(4)创建控制器(Action 类)Struts 2 使用一个普通的 Java 类来接收用户请求,然后调用模型组件去处理业务逻辑,最后返回一个字符串,Struts 2 框架会根据这个字符串的值调用相应的页面去显示。下面来看用来处理用户注册请求的控制器 RegAction.Java,代码如下:,10.2.2 Struts的使用,5)创建视图层该示例的视图层是显示注册页面 register.jsp,以及显示注册成功页面 success.jsp。register.jsp 代码如下:,10.2.2 Struts的使用,10.2.2 Struts的使用(6)运行程序现在就可以
13、把整个文件夹复制到 Tomcat 的目录下,在 Web 浏览器中输入http:/localhost:8080/Ch10/register.jsp 就可以了。,10.3 Hibernate技术,在实际开发中,程序员使用面向对象的技术操作数据,而当要把数据存储起来时,使用的却是关系型数据库,这样就造成了很多的不便。那么,有没有这样一种技术呢?这种技术在对象模型和关系数据库的表之间建立了一座桥梁,有了它,程序员就不需要再使用 SQL语句操作数据库中的表,直接操作 JavaBean 对象就可以实现数据的存储、查询、更改和删除等操作。Hibernate 就是这样一种技术。,10.3 Hibernate技
14、术,10.3.1 Hibernate 概述Hibernate 框架是开放源代码的对象关系映射工具(Object-Relational Mapping),它根据对象/关系映射(ORM,Object/Relational Mapping)技术思想,对 JDBC 进行了轻量级封装,使开发人员可以使用一种面向对象的方式来操纵和管理关系数据库。Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web应用中使用。,10.3 Hibernate技术,Hibernate 的概要体系结构如图 所示:,10.3 Hibernate
15、技术,数据库:它指的是关系型数据库,如 MySQL、MSSQL 等。Persistent Objects:指的是程序员建立的对象模型,例如 JavaBean 组件。每个 JavaBean对应一个数据库表,通过 Hibernate,就可以操作这些 JavaBean,从而去操作数据库。XML Mapping:是指关系型数据库(Database)的表到 JavaBean 组件(Persistent Objects)之间的映射关系,这种关系主要通过 XX.hbm.xml 文件去定义。hibernate.properties 文件定义了 Hibernate 的一些属性的配置。应用程序:是指用户定义的非
16、JavaBean 组件的一些 Java 类,比如一个 Servlet 应用程序,有了 Hibernate 的帮助,就可以直接调用 JavaBean 去实现数据库操作。,10.3 Hibernate技术,10.3.2 Hibernate 的使用为了让读者更清楚的了解 Hibernate 的概要体系结构,并能更深刻的体会 Java 成员如何用一种面向对象的方式来操纵和管理关系数据库,下面将具体介绍使用 Hibernate 的流程。1创建数据库,建立表,10.3 Hibernate技术,2配置Hibernate的开发环境在使用 Hibernate 进行开发之前,必须首先配置好开发环境。可以到这个网站
17、http:/www.hibernate.org/。将下载的压缩包解压后,可以看到 hibernate3.jar 文件。复制到 Web 工程的 WEB-INF/lib 目录下即可。3创建PersistentObjects,即JavaBean组件在创建 JavaBean 类之前先在 IDE 中创建一个 JSP 工程,命名为 ch10。在目录下面创建一个包(目录)名字为 demo。然后把目录下的文件有 jar 文件和 mysql-connector-java-5.1.13-bin.jar 复制到 WEB-INF/lib 目录下面。,10.3 Hibernate技术,每个 JavaBean 类对应一个
18、数据库表,这样就可以通过对这些 JavaBean 的对象来实现对数据库的操作,代码如下。在创建时把其属性和数据库表的字段对应起来。,10.3 Hibernate技术,4创建Hibernate映射文件映射文件用来把数据库中的表和 JavaBean 文件建立对应关系,这样就可以通过Hibernate 实现使用 JavaBean 去操作数据库。在 ch10 工程的 WEB-INF/src 目录下面创建model.hbm.xml,代码如下:,10.3 Hibernate技术,从上面的代码可以看出:(1)标签定义 JavaBean 到数据库表之间的映射关系。该标签的 table 属性指定了表的名字,na
19、me 属性指定了 JaaBean 的名字。(2)和之间的标签用来定义 JavaBean 的属性到数据库表字段的映射。5创建Hibernate配置文件Hibernate 的配置文件用来指定连接数据库的信息,并且对 Hibernate 的性能进行配置。在 WEB-INF/src 目录下创建 hibernate.cfg.xml,代码如下:,10.3 Hibernate技术,可以看出,这个配置文件主要对标签的属性进行了设置。,10.3 Hibernate技术,10.3 Hibernate技术,6创建数据库操作类可以使用 Hibernate 提供的接口去操作 JavaBean。从而完成对数据库的操作,为
20、其他组件提供支持。Hibernate 的核心接口一共有 5 个,分别为:Session、SessionFactory、Transaction、Query 和 Configuration。这 5 个核心接口在任何开发中都会用到。下面对这五个核心接口分别加以介绍。Session 接口:Session 接口负责完成与数据库的交流,包含了很多常见的 SQL 语句。SessionFactory 接口:SessionFactory 接口负责初始化 Hibernate。它充当数据存储源的代理,并负责创建 Session 对象。一般情况下,一个项目通常只需要一个 SessionFactory 就够,当需要操作
21、多个数据库时,可以为每个数据库指定一个 SessionFactory。,10.3 Hibernate技术,Configuration 接口:Configuration 接口负责配置并启动 Hibernate,创建 SessionFactory对象。在 Hibernate 的启动的过程中,Configuration 类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory 对象。Transaction 接口:Transaction 接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query 和 Criteria 接口:Query 和 Cri
22、teria 接口负责执行各种数据库查询。,10.3 Hibernate技术,它可以使用HQL 语言或 SQL 语句两种表达方式。(1)创建 Java 类下面创建以上这些 Java 类。在 WEB-INF/src 目录下添加一个包名字为 demo.hibernate。在其中添加一个类名字为 HibernateUtil,其代码如下:,10.3 Hibernate技术,可以看出,HibernateUtil 类包含了一些静态的方法,它们主要用来创建 session 对象,这样就可以使用它去操作数据库,调用 SessionFactory 的 openSession()方法创建一个 session。,10
23、.3 Hibernate技术,(2)操作数据库下面创建一个类 DbOperate,它使用 HibernateUtil 提供的 session 对象去操作数据库,为其它组件提供数据库服务,其代码如下:,10.3 Hibernate技术,插入实体对象所对应的记录:,10.3 Hibernate技术,修改实体对象所对应的记录:,10.3 Hibernate技术,修改实体对象所对应的记录:,10.3 Hibernate技术,可以看出,这个类有 4 个方法。getProducts():用来对商品进行查询,最后返回符合要求的所有 Product 对象。save():用来把一个 JavaBean 对象保存为
24、对应的数据库记录。例如,可以创建一个 Product对象 pd,然后调用 save(pd),这样就可以在数据库表中插入一条记录。update():和 save()方法类似,该方法是用一个 JavaBean 对象去更新数据库表的记录。delete():该方法用来删除对应 JavaBean 对象的记录。,10.3 Hibernate技术,7建立应用程序在 ch10 工程的 WEB-INF/src 目录下创建一个包名字为 demo.test,在其中添加一个类TestAddUser,其代码如下:上述代码仅仅是一个简单的测试代码,也可以将 Struts 和 Hibernate 相结合使用。,10.4 S
25、pring开发框架,本节我们对 Spring 开发框架作简要介绍。Spring 是一个开源框架,由 Rod Johnson 创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB(Enterprise Java Beans)完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度来讲,任何 Java 应用都可以从 Spring 中受益。Spring 框架的主要优势之一就是其分层架构,分层架构允许程序员选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。,10.4 Spring开发
26、框架,Spring 框架如下图 所示:,10.4 Spring开发框架,上图中组成 Spring 框架的七个模块(或组件)都可以单独存在,或者与其它一个或多个模块联合实现。每个模块的功能如下:Spring Core(核心容器):核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring Context(Spring 上下文):Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服
27、务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。,10.4 Spring开发框架,Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异
28、常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。,10.4 Spring开发框架,Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jaka
29、rta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的。这里要特别说明的是,Spring MVC 框架使用的视图并不只限于 JSP 技术,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText和 POI。,JSP开发模式与技术,本章小结在本章的内容中,介绍了 JSP 开发模式,以及目前开发基于 JSP 程序的框架和技术。本章较为详细地介绍了如何使用 Struts 和 Hibernat
30、e,并对 Spring 开发框架做了简单介绍。通过对本章内容的学习,希望读者能够对 MVC 开发模式、基于 Struts 框架的基本开发方法、对象/关系映射技术有所了解。,JSP开发模式与技术,习 题1.JSP 开发模式有哪些?模式一 类似与asp,将所有业务代码,html代码混合在一个jsp页面中。模式二也就是mvc模式。一般都是指用什么框架,有很多,比较常用的有 struts、spring、webwork等。2.MVC 模式的核心思想是什么?个人认为,MVC模式是基于WEB系统模块化框架的大思想,繁衍出的一个把视图和处理做低耦合分离的一种模式。核心就是尽可能让一个后台系统,在几乎不做任何修
31、改的情况下,同时支持多种视图。在视图和后台分离这一点上,不仅仅是MVC,还有多层数据结构也由此特性。MVC的关键在于多种视图(也就是多个客户端)的支持。具体可以参考下面的链接。,JSP开发模式与技术,3.简述 Struts 的工作原理。原理还是封装servlet,能够理解servlet就可以了,就是把url地址请求映射到指定方法上,然后再将方法返回的对象在对应页面上展示4.简述 Hibernate 的概要体系结构。Hibernate使用数据库和配置文件数据来为应用程序提供持久化服务(和持久化的对象)。,JSP开发模式与技术,5.组成 Spring 框架的七个模块有哪些?组成 Spring框架的
32、每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供 Spring框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Sp
33、ring框架中。所以,可以很容易地使 Spring框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。,JSP开发模式与技术,Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。Sprin
34、g ORM:Spring框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。,