JSP开发模式与技术.ppt_第1页
JSP开发模式与技术.ppt_第2页
JSP开发模式与技术.ppt_第3页
JSP开发模式与技术.ppt_第4页
JSP开发模式与技术.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论