Java最新实用教程第 13章
JSP程序设计
Java最新实用教程
2009年 7月 27日星期一 2
学习目的:
理解掌握 JSP的基本语法
掌握 JavaBean的编写与应用
掌握 JSP中标签库的应用以及自定义标签的设计
了解 Servlet的应用
学习重点:
掌握 JavaBean的编写与应用
掌握 JSP中标签库的应用以及自定义标签的设计
Java最新实用教程
2009年 7月 27日星期一 3
第 13章
JSP程序设计本章提要:
1,JSP基本语法及内置对象的使用
2 2,JavaBean的使用
2 3,标签库
4,JSP与 Servlet应用
Java最新实用教程
2009年 7月 27日星期一 4
13.1 JSP简介
13.1.1 JSP程序
JSP( Java Server Pages) 是由 Sun Microsystems公司倡导,许多公司参与建立的一种动态网页技术标准 。
JSP技术是在传统的网页 HTML文件 (*.htm,*.html)中插入 Java程序段 (Scriptlet)和 JSP标记 (tag),从而形成
JSP文件 (*.jsp)。
Java最新实用教程
2009年 7月 27日星期一 5
Web服务器在遇到访问 JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同 JSP文件中的 HTML代码一起返回给客户 。 插入的 Java程序段可以操作数据库,重新定向网页等,以实现建立动态网页所需要的功能 。
JSP是在服务器端执行的,通常返回给客户端的就是一个 HTML文本,因此客户端只要有浏览器就能浏览,不需要附加任何的支持软件。
Java最新实用教程
2009年 7月 27日星期一 6
13.1.2 JSP语法概述
JSP语法分为三类:脚本元素( Scripting),指令元素
( Directive) 和动作元素( Actions)。
JSP的脚本元素,包含注释、声明、脚本和表达式四个部分。在 JSP文件中可以加入两种形式的注释,一种其内容可以被浏览器查看,另一种浏览器不能查看。 声明 用于在 JSP
页面中定义方法或变量,这些方法或变量可被同一个页面中的其它代码访问。 脚本 即在 JSP页面中插入的 Java程序代码段,这些代码段嵌在标记,<%” 与,%>” 之间。 表达式 用于直接将数据输出到页面。
Java最新实用教程
2009年 7月 27日星期一 7
JSP指令元素有三个,分别是 page,include和 taglib
。 这些指令元素是针对 JSP引擎设计的,不会产生任何直接输出。它们包含在标记,<%@” 和,%>” 之间。
page指令用于定义 JSP文件中的全局属性,include指令用于在 JSP页面中包含另外一个文件的内容,taglib指令用于定义一个标签库以及自定义标签的前缀。
Java最新实用教程
2009年 7月 27日星期一 8
在 JSP 2.0规范中定义了 20多个动作元素。在 JSP语法中,用 <jsp:xxx>表示动作,可以用它控制 JSP引擎的动作。以下是常见的动作:
<jsp:useBean>,创建一个 Bean实例并指定它的名字和作用范围;
<jsp:setProperty>,设置 Bean的属性值;
<jsp:getProperty>,获取 Bean实例的属性值;
<jsp:include>,包含一个静态或动态文件;
Java最新实用教程
2009年 7月 27日星期一 9
<jsp:forward>,重定向一个到另一个 JSP页面;
<jsp:plugin>,该指令用于向浏览器插入一个 Java插件来运行一个 applet或者 Bean对象 。
Java最新实用教程
2009年 7月 27日星期一 10
13.1.3 JSP内置对象
1,request对象
request 对象 是与用 户请 求相 关的 对象,它是
HttpServletRequest的一个子类 。 该对象包含了所有来自客户端的请求信息,如请求的来源,标头,类型,
Cookies和 HTML表单变量等 。
2,response对象
response对象是最重要的对象之一,只有通过它,才能响应客户端的请求,才能向客户端输出信息 。 它的作用与 requst对象刚好相反,request对象包含了客户请求的有关信息,而 reponse对象包含了响应客户请求的信息 。
Java最新实用教程
2009年 7月 27日星期一 11
3,session对象
Session 对象表示目前个别用户的会话 (session)
状况,用此项机制可以轻易识别每一个用户,然后针对每一个别用户的要求,给予正确的响应 。
系统是怎样通过 session对象来识别用户的呢? 原来,在用户登录网站时,系统为其生成了一个独一无二的 session对象来记录用户的个人信息 。 即每个登录网站的用户所拥有的 session对象是不同的 。 当用户退出网站时,该 session对象被注销 。
4,application对象
Application对象用于取得或更改 Servlet的设定,
它的生存期是由服务器产生开始至服务器关机为止 。
Java最新实用教程
2009年 7月 27日星期一 12
在 JSP服务器运行时刻,仅有一个 Application对象,
它由服务器创建,也由服务器自动清除,不能被用户创建和清除 。
5,out对象
out对象代表了向客户端发送数据的对象,与
,response”对象不同,通过,out”对象发送的内容将是浏览器需要显示的内容,是文本级的 。
6,ception对象
exception对象处理 JSP文件在执行时所有发生的错误和异常。
Java最新实用教程
2009年 7月 27日星期一 13
7,config对象
config对象是 java.servletConfig接口的一个实例,
它用于初始化参数。
8,pageContext对象
pageContext对象存储当前 JSP页面的相关信息,如属性、内建对象等。
9,page对象
page对象表示当前正在运行的 JSP页面所产生的对象,
该对象只有在当前 JSP页面范围之内使用才合法。
Java最新实用教程
2009年 7月 27日星期一 14
13.2 JSP与 JavaBean
13.2.1 JavaBeans简介
JavaBeans是基于 java的组件模型,由属性、方法和事件 3部分组成,有点类似于 Microsoft的 COM组件概念。
在该模型中,javabeans可以被修改或与其他组件结合生成新组件或完整的程序。它是一种 java类,通过封装成为具有某种功能或者处理某个业务的对象。因此,也可以通过嵌在 JSP页面内的 java代码访问 bean及其方法。
Java最新实用教程
2009年 7月 27日星期一 15
13.2.2 在 JSP程序中使用 JavaBean
1,JavaBean的编写
JavaBean是用 java语言编写的可重用的软件组件 。 编写
JavaBean组件的方法同编写其他 Java类一样 。
2,JavaBean的调用
JavaBean的调用主要包括以下几个方面的内容:
创建 JavaBean的实例,需要使用 <jsp:useBean>指令来完成;利用 <jsp:setProperty>和 <jsp:getProperty>来设置或获取 JavaBean的属性值;调用其方法,格式为:实例名,方法名 。
Java最新实用教程
2009年 7月 27日星期一 16
13.3 JSP标签库
JSP标签库(也被称作定制标签)是一种通过
JavaBean生成基于 XML的脚本的方法。从概念上讲,标签就是很简单而且可重用的代码结构。 JSP标签库最大的作用在于让用户可以自行指定一个标签。
标签处理类是一个标准的 Java类,在该类中定义了各种各样的方法来对标签库描述文件中定义的标签进行处理。我们把该类的定义文件叫做 TEI( Tag Extra
Information files) 文件,TEI文件在被编译为 calss类文件之后,被放到 JSP服务器的相应目录中。
13.3.1 标签处理类
Java最新实用教程
2009年 7月 27日星期一 17
通俗地讲,标签处理类就是用于解释标记的类 。 由于它是一个标准的 Java类,因此编写方法与普通的类一致,但因为应用环境的不同,TEI文件在实现上还是有自己的特殊之处

TEI中的 Java类一般继承自 TagSupport类或 dyTagSupport
类,但如果是继承自 TagSupport类,则必须重载
doStartTag()和 doEndTag()方法。
Java最新实用教程
2009年 7月 27日星期一 18
13.3.2 标签库描述文件
JSP标签库需要一个标签库描述符 ( TLD) 文件来定义标签的名称,属性以及操作该标签的 Java类 。
TLD文件通常就以标签处理器命名并被存放在 "\WEB-
INF\"目录之下。该文件的文件扩展名是,tld。
TLD文件是一个普通的 XML格式的标记定义文件,要使这个 TLD文件被 JSP文件访问,它必须定义 Tlibversion、
jspversion,shortname,uri,info,tag六个属性。
由于 TLD文件是一个 XML文件,因此它也必须符合 XML
文件的规范。
Java最新实用教程
2009年 7月 27日星期一 19
13.3.3 在 JSP程序中使用标签
JSP程序中使用的标签库有两种,一种是标准标签库(
JSTL),另一种是用户自定义标签库。标准标签库是一个为实现 Web应用程序的常用功能而定制的标记库集,这些功能包括基本输入输出、流程控制、循环,XML文件剖析、数据库查询、国际化和文字格式化的应用等。
在 JSP程序中使用标签,是利用 taglib指令来实现的。
Java最新实用教程
2009年 7月 27日星期一 20
13.3.4 自定义标签库一个自定义的 tag标签是用户定义的一种 JSP标记 。
当一个含有自定义的 tag标签的 JSP页面被 jsp引擎编译成 servlet时,tag标签被转化成了对一个称为 tag处理类的对象进行的操作 。 于是当 JSP页面被 jsp引擎转化为 servlet后,实际上 tag标签被转化成为了对 tag处理类的操作 。
Java最新实用教程
2009年 7月 27日星期一 21
JSP标签都实现了 javax.servlet.jsp.tagext.JspTag
接口 。 这个接口有两个直接子接口 。
SimpleTag接口:它是 JSP2.0新增加的接口,代表了简单的标签;
Tag接口:它是必须要实现的接口,它有一个直接子接口就是 IterationTag。
IterationTag接口有一个简单的实现类为 TagSupport
,从 TagSupport扩展可以开发出迭代标签 。 IterationTag
还有一个子接口 BodyTag。 这种标签允许带有 Body,
BodyTag也有一个实现类,就是 BodyTagSupport,在开发
BodyTag时,往往直接从它继承就可以了 。
Java最新实用教程
2009年 7月 27日星期一 22
使用 Tag接口开发自定义标签程序有以下 4个步骤:
( 1) 开发标签实现类
( 2) 编写标签描述,这个描述通常是以,tld结尾的文件 。 tld文件描述和说明了属性,信息和标签处理器文件位置等信息 。 JSP容器使用这一文件来映射被调用标签库的位置和用法
( 3) 在 web.xml文件中指定标签库的引用
( 4) 编写 JSP页面调用定义的标签
Java最新实用教程
2009年 7月 27日星期一 23
13.4 JSP与 Servlet
13.4.1 Web应用程序的一般结构现在的 Web应用程序一般都采用了三层架构,将整个应用划分为显示层,商业逻辑层和控制层 。
显示层包括 HTML,XML和 Applets等内容,主要功能是提供操作接口,接收用户的数据输入和向用户显示数据 。
显示层位于客户端 。
商业逻辑层是三层结构中的核心部分,它的主要功能是进行数据的处理,连接数据库并产生相应的数据 。
控制层主要完成信息传递,而不是数据处理 。
Java最新实用教程
2009年 7月 27日星期一 24
对于使用 JSP开发 Web应用程序的模式,Sun公司总结了两种模式,分别称为 Model1( 模型一 ) 和 Model2
( 模型二 ) 。
在 Model1体系中,JSP页面单独完成响应用户请求并将处理结果返回客户的工作 。 它又包括两种结构 。
第一种是仅包含 JSP页面的 Web应用程序;
Java最新实用教程
2009年 7月 27日星期一 25
第二种是由 JSP和 JavaBean组合的应用程序
Java最新实用教程
2009年 7月 27日星期一 26
13.3.4 自定义标签库
MVC设计模式由三部分组成 。
模型是应用对象,没有界面;视图表示它在屏幕上的数据显示,可能的形式为 HTML,XML和
Applet,主要功能是对采集用户的数据输入,用户请求和对模型响应用户操作处理结果数据的显示;
控制器定义用户界面对用户输入的响应方式,负责把用户的动作转换成针对模型的操作,它不做任何的数据处理;模型则通过更新视图的数据来反映数据的变化 。
Java最新实用教程
2009年 7月 27日星期一 27
13.4.2 JSP与 Servlet间的信息共享
1,JSP向 Servlet传递数据
2,Servlet向 JSP传递数据在 Servlet 中,可 以 通 过 标 准 的
javax.Servlet.RequestDispatcher接口所提供的功能来调用 JSP页面,同时传递参数到 JSP页面
Java最新实用教程
2009年 7月 27日星期一 28
13.4.3 JSP与 Servlet间的控制传递重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向 。 客户端重定向可以通过设置特定的 HTTP头,或者写 JavaScript脚本实现 。
服务器端的重定向可以有两种方式,一是使用
HttpServletResponse的 sendRedirect()方法,一是使用 RequestDispatcher的 forward()方法。
Java最新实用教程
2009年 7月 27日星期一 29
有三种方法可以得到 RequestDispatcher对象 。
1,javax.servlet.ServletRequest 的
getRequestDispatcher( String path)方法
2,javax.servlet,ServletContext 的
getRequestDispatcher(String path)方法
3,使用 javax.servlet,ServletContext 的
getNamedDispatcher(String name)得到名为 name的一个 Web资源
Java最新实用教程
2009年 7月 27日星期一 30
13.4.4 Web应用程序举例利用 JSP和 JavaBean设计一个站点记数器程序
Java最新实用教程
2009年 7月 27日星期一 31
13.5 本章小结本章主要对 JSP网页设计方面的内容做了详细的讲解 。
在 JSP语法方面,介绍了 JSP的文件构成,脚本元素,指令元素和动作元素 。 另外,JSP还准备了 9个内置对象 。
JavaBean部分简单介绍了 JavaBean的编写方法和在 JSP
页面文件中的调用方法 。
标签库部分介绍了自定义标签的逐个开发过程,并定义了一个比较简单的标签作实例讲解 。
最后,分析了 JSP应用程序的一般结构,以及 JSP与
Servlet之间的信息共享和控制传递 。 对 MVC模式的应用有了基本的了解和认识 。