15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Java Web开发实战—JSP详解—JSP概述、JSP脚本元素、JSP指令元素、JSP动作元素、

Java Web开发实战—JSP详解—JSP概述、JSP脚本元素、JSP指令元素、JSP动作元素、

时间:2023-08-29 19:48:01 | 来源:网站运营

时间:2023-08-29 19:48:01 来源:网站运营

Java Web开发实战—JSP详解—JSP概述、JSP脚本元素、JSP指令元素、JSP动作元素、JSP内置对象:本文主要讲解了JSP的相关知识,包括JSP的概念、工作原理,JSP脚本元素、JSP指令元素、JSP动作元素、JSP内置对象等。通过学习,大家要能够理解JSP在Web开发中的角色,理解JSP的工作原理,掌握JSP的语法,熟练应用指令元素、动作元素、内置对象等完成JSP开发。

JSP概述

² JSP简介

JSP的全称是Java Server Pages,是为了简化Servlet的工作而出现的动态网页开发技术。它在HTML代码中嵌入Java代码片段和JSP标签,构成JSP页面。其中,HTML代码用于显示静态内容,Java代码片段用于显示动态内容,这就避免了直接使用Servlet逐句响应HTML页面的烦琐,同时降低了代码冗余。

例如,现在编写一个登录程序,要求该程序能够根据用户名生成相应的欢迎信息。当登录用户为xiaoqian时,页面显示“Hello,xiaoqian”,当登录用户为xiaofeng时,页面显示“Hello,xiaofeng”,下面将通过Servlet和JSP分别实现这个功能,步骤如下。

(1)打开Eclipse,新建Web工程chapter09,在工程chapter09的WebContent目录下创建login.html,具体代码如书中例9.1所示。

2)在工程chapter09的src目录下创建com.qfedu.example包,在该包下新建一个Servlet类TestJSP01,具体代码如书中例9.2所示。

(3)在工程chapter09的WebContent目录下新建jsp目录,右击jsp目录,在弹出的菜单中选择NEW→JSP File选项,弹出New JSP File窗口,如图所示。

(4)在File name文本框中输入hello.jsp,单击Finish按钮完成创建。hello.jsp创建完成后的界面如图所示。

(5)在hello.jsp文件中的<body>元素中输入如书中例9.3所示。

代码中,“<%@ page %>”是JSP文件的一个指令,用于设置JSP文件的页面属性,其中,language属性指定所使用的语言,contentType属性指定服务器响应的内容类型,charset属性指定JSP页面的编码。JSP文件中大部分是HTML代码,在HTML代码的<body>元素中,使用<% %>声明一段Java脚本,脚本使用request对象获取表单提交的用户信息。

(6)将工程chapter09添加到Tomcat服务器中,启动Tomcat服务器,打开浏览器,访问http://localhost:8080/chapter09/login.html,浏览器显示的页面如图1所示。

(7)在“用户名”文本框中输入xiaoqian,在“密码”文本框中输入12345,单击“提交”按钮,浏览器显示的页面如图所示。

从图中可以看出,TestJSP01以HTML页面的形式将用户信息返回。通过分析发现,TestJSP01在获取表单提交的信息后,必须调用PrintWriter类的println()方法,才能把结果响应为客户端能够解析的HTML页面。

(8)打开login.html文件,将<form>元素的action属性修改为:action=“/chapter09/jsp/hello.jsp”,重启浏览器,重新访问login.html,浏览器出现如图1所示的页面,在对应的文本框中分别输入xiaoqian和12345,单击提交按钮。

浏览器显示的页面如图所示。

从图中可以看出,hello.jsp实现了和TestJSP01类同样的功能,它不仅直接兼容HTML代码,还能获取Java代码片段中传输的内容。

(9)点击浏览器菜单栏中的“查看”→“源文件”命令,这时可看到JSP页面执行结果的源代码,如图所示。

从图中可以看到,hello.jsp页面中的<% %>脚本被解释成了HTML内容。




² JSP工作原理

JSP的引入避免了Servlet编写页面的烦琐,并且降低了开发人员的编码量。为了更好地使用JSP进行Web开发,大家必须深入理解JSP的工作原理。

作为一种服务器端的页面开发技术,JSP运行在服务器中,它本质上是一种Servlet类,因此要被转换成Servlet类后才能编译运行。当客户端访问JSP页面时,服务器的处理过程如图所示。

图 JSP页面的执行过程

从图中可以看出JSP的执行过程,具体来讲,可以细分为以下几个步骤。

(1)客户端向服务器发送请求,访问JSP页面。

(2)服务器接到请求后检索对应的JSP页面,如果该JSP页面是第一次被请求,那么服务器会将此页面中的静态数据(HTML文本)和动态数据(Java元素)全部转化为Java代码,使JSP文件转换成一个Servlet类文件。在转换过程中,服务器若发现JSP文件中存在语法错误,则会中断转换过程,并向客户端返回出错信息。

(3)服务器将转换后的Servlet源代码编译成字节码文件(.class),对于Tomcat服务器而言,生成的字节码文件默认存放在Tomcat安装目录的work目录下。

(4)编译后的字节码文件被加载到内存中执行,并根据用户的请求生成HTML格式的响应内容。

(5)服务器将响应内容发送回客户端。

这里要注意的是,Tomcat服务器能够自动检测JSP页面的改动。当同一个JSP页面再次被请求时,只要该JSP页面没有被修改,服务器就会直接调用已装载的字节码文件,不会执行转换和编译的过程,如果该JSP页面被修改,那么服务器会重新执行转换、编译、执行的整个过程。

² JSP基本结构

JSP页面就是带有JSP元素的常规Web页面,它由模板文本和JSP元素组成。

模板文本主要是指HTML代码,它的内容是固定的,既不会控制程序的流程,也不影响程序运行的结果。JSP元素是指JSP中的Java部分,它能够影响程序的流程,包括JSP脚本元素、JSP指令以及JSP动作元素等。

在处理一个JSP页面请求时,模板文本和JSP元素生成的内容会合并,合并后的结果作为响应内容发送给浏览器。




JSP脚本元素

脚本元素是JSP中使用最频繁的元素,它允许开发者将Java代码片段添加到JSP页面中。所有的可执行的Java代码,都可以通过JSP脚本来执行。JSP脚本元素包括表达式、脚本片段、声明和注释等。

² JSP表达式

JSP表达式可以直接把Java的表达式结果输出到JSP页面中。因为网页中显示的文字都是字符串,所以表达式的最终运算结果将被转化为字符串类型。JSP表达式的语法格式如下。

<%= 表达式 %>

其中,表达式必须能够直接求值,“<%=”是一个完整的符号,“<%” 和“=”之间不能有空格,表达式结尾处不加分号。

接下来通过一个实例来演示JSP表达式的使用,具体步骤如下。

(1)打开Eclipse,选择工程chapter09,在WebContent目录的jsp目录下新建test01.jsp。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test01.jsp,浏览器显示的页面如图所示。

从图中可以看出,test01.jsp成功地返回表达式的值。




² JSP脚本片段

JSP脚本片段是指用“<%”和“%>”括起来的一段Java代码。开发者需要在JSP中使用一段Java代码实现复杂操作时,就要用到JSP脚本片段。JSP脚本片段的语法格式如下。

<% Java 代码 %>

其中,Java代码可以包含变量、方法、表达式等。如果去掉“<%”和“%>”,Java代码的内容将被视为模板文本,直接返回到客户端。

接下来通过一个实例来演示JSP脚本片段的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test02.jsp。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test02.jsp,浏览器显示的页面如图所示。

从图中可以看出,test02.jsp成功地返回Java代码片段的执行结果。




² JSP声明

JSP声明用于声明变量和方法,在JSP的声明语句中定义的变量和方法将在JSP页面初始化时进行初始化。在JSP中声明语句的语法格式如下。

<%! 变量或方法的定义语句 %>

其中,“<%!”和“%>”标记之间用于放置Java变量或方法的定义语句。变量的类型可以是Java语言提供的任意类型,使用JSP声明语句定义的变量将来会被转换成Servlet类中的成员变量,这些变量在整个JSP页面内都有效。使用JSP声明语言定义的方法将来会被转换成Servlet类中的成员方法,当方法被调用时,方法内定义的变量被分配内存,调用完毕后即释放所占的内存。

接下来通过一个实例来演示JSP声明的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test03.jsp。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test03.jsp,浏览器显示的页面如图所示。

从图中可以看出,test03.jsp成功返回变量a的值和方法getString()的执行结果。

(3)刷新浏览器,浏览器显示的页面如图所示。

从图中可以看出,变量a的值增加了1,这说明变量a被服务器转换为Servlet的成员变量,它只在创建Servlet实例时被初始化一次,此后,该变量的值一直被保存,直到该Servlet实例被销毁掉。




² JSP注释

在JSP页面中可以使用“<%-- --%>”的方式来注释, JSP注释的语法格式如下。

<%-- JSP注释 --%>

使用JSP注释之后,服务器把JSP文件转换成Servlet类时会忽略“<%-- ”和“--%>”之间的内容,不会把这些内容响应到客户端。

接下来通过一个实例来演示JSP注释的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test04.jsp,代码如书中例9.8所示。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test04.jsp,浏览器显示的页面如图所示。

从图中可以看出,test04.jsp没有返回JSP注释的内容。

(3)在浏览器的菜单栏选择“查看”→“源文件”命令,这时可看到JSP页面执行结果的源代码,如图所示。

从图中可以看出,JSP注释的内容没有在源文件中显示。

在JSP页面中,除了JSP注释之外,有时会出现HTML注释,HTML注释以“<!--”开始,以“-->”结束,中间包含的内容即为注释部分,其语法格式如下。

在JSP转换为Servlet类的过程中,服务器不会忽略HTML注释的内容,而是最终将这些内容响应给客户端。由于客户端能够“理解”HTML注释,因此HTML的内容不会被显示到浏览器页面。

接下来通过一个实例来演示HTML注释的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test05.jsp,代码如书中例9.9所示。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test05.jsp,浏览器显示的页面如图所示。

从图中可以看出,由于浏览器能够“理解”HTML注释,因此test05.jsp没有返回HTML注释的内容。

(3)在浏览器的菜单栏中选择“查看”→“源文件”命令,这时可看到JSP页面执行结果的源代码,如图所示。

从图中可以看出,HTML注释的内容显示在JSP页面执行结果的源代码中。

JSP指令元素

JSP指令元素用于向服务器提供编译信息,例如编码方式、文档信息等。一般情况下,JSP指令元素在当前的整个页面范围内有效,且不向客户端产生任何输出。JSP指令元素包括page指令、include指令和taglib指令。

² page指令

page指令又被称为页面指令,用于设置和JSP页面相关的信息,如导入所需类包、指明输出内容类型等。page指令一般位于JSP页面的开头部分,其语法格式如下。

<%@ page 属性名1=”属性值1” 属性名2=”属性值2” ……%>

在page指令的属性中,除了import属性外,每种属性只能出现一次。page指令提供了一系列与JSP页面相关的属性,如表9.1所示。

表9.1 page指令的常用属性




属性名说明
language指定JSP页面使用的脚本语言,默认为Java
import指定导入的Java软件包或类名列表,若有多个类,中间用逗号隔开
extends指定JSP页面转换产生的servlet类继承的父类
session指定JSP页面中是否可以使用Session对象,默认为TRUE
buffer指定输出缓冲区的大小,默认值为8K
autoFlush指定输出缓冲区即将溢出时,是否强制输出缓冲区的内容
isThreadSafe指定JSP页面是否支持多线程
errorPage指定JSP页面发生异常时重新指向的页面URL
isErrorPage指定JSP页面是否为处理异常的页面,默认值为FALSE
isELIgnored指定JSP页面是否忽略El表达式,默认值为FALSE
contentType指定JSP页面的编码格式和JSP页面响应的MIME类型
pageEncoding指定JSP页面编码格式
接下来通过一个实例演示page指令的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test06.jsp,为该页面指定发生异常时重新跳转的页面,具体代码如书中例9.10所示。

在代码中,page指令的errorPage属性为该页面指定了一个处理异常的页面,这个处理异常的页面为error.jsp。

(2)在WebContent目录的jsp目录下新建error.jsp,具体代码如书中例9.11所示。

(3)打开浏览器,访问http://localhost:8080/chapter09/jsp/test06.jsp,浏览器显示的页面如图所示。

从图中可以看出,当test06.jsp发生异常时,它会自动跳转到error.jsp页面。




² include指令

include指令又被称为文件加载指令,用于在JSP文件中插入一个包含文本或代码的文件。它把插入文本或代码的文件后与原来的JSP文件合并成一个新的JSP文件。

include指令的语法格式如下。

<%@ include file=”被包含文件的地址” %>

include指令只有一个file属性,该属性用来指定插入到JSP页面的文件,这个文件必须遵循JSP语法,file属性的值一般是该文件的相对路径。

接下来通过一个实例来演示include指令的使用方法,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test07.jsp。

(2)在WebContent目录的jsp目录下新建test08.jsp。

在代码中,include指令为test08.jsp引入了test07.jsp文件,在执行过程中,这两个JSP文件会合成一个新的JSP文件。

(3)打开浏览器,访问http://localhost:8080/chapter09/jsp/test08.jsp,浏览器显示的页面如图所示。

从图中可以看出,当访问test08.jsp时,它所引入的test07.jsp的内容同样也被显示。

² taglib指令

taglib指令用于指定JSP页面使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签。

taglib指令的语法格式如下。

<%@ taglib uri=”标签库URI” prefix=”标签前缀” %>

其中,uri指定描述这个标准库位置的URI,可以是相对路径或绝对路径;prefix指定使用标签库中标签的前缀。




JSP动作元素

JSP动作元素用于控制JSP的行为,执行一些常用的JSP页面动作,利用JSP页面动作可以实现很多功能,例如动态插入文件、重用JavaBean组件、重定向页面等。

JSP中的动作元素主要包含以下几种。

l <jsp:include>;

l <jsp:forward>;

l <jsp:param>;

l <jsp:useBean>;

l <jsp:setProperty>;

l <jsp:getProperty>。

接下来将对JSP的常用动作元素作详细讲解。

² <jsp:include>动作元素

<jsp:include>动作元素提供了一种在JSP中包含页面的方式,既可以包含静态文件,也可以包含动态文件。

JSP包含页面,是指当JSP页面运行时才会载入该文件,并不是简单地将被包含文件与JSP页面合并成一个新的JSP页面。如果包含的文件是文本文件,运行时只需将该文件内容发送到客户端,由客户端负责显示;如果包含的文件是JSP文件,服务器就执行这个文件,然后将执行结果发送到客户端并显示出来。

<jsp:include>动作元素的语法格式为如下。

<jsp:include page=”relative URL” flush=”true”/>

其中,page属性指定被包含文件的URL地址,是一个相对路径;flush属性指定当缓冲区满时,是否将其清空,其默认值为false。

include指令和<jsp:include>动作元素都能包含一个文件,但它们之间有很大的区别,具体如下。

l include指令在转换阶段就引入所包含的文件,被包含的文件在逻辑和语法上依赖于当前的JSP页面。

l <jsp:include>动作元素是在JSP页面运行时才引入被包含文件产生的响应文本,被包含的文件在逻辑和语法上独立于当前JSP页面。

接下来通过一个实例来演示<jsp:include>动作元素的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test09.jsp。

在代码中,<jsp:include>动作元素为test09.jsp引入了test07.jsp文件。

(2)打开浏览器,访问http://localhost:8080/chapter09/jsp/test09.jsp,浏览器显示的页面如图所示。

从图中可以看出,当访问test09.jsp时,它所引入的test07.jsp的内容同样也被显示。

从前面的讲解中,大家可以看到,include指令和<jsp:include>动作元素都能包含一个文件,但它们之间有很大的区别,具体如下。

include指令在转换阶段就引入所包含的文件,被包含的文件在逻辑和语法上依赖于当前的JSP页面。

<jsp:include>动作元素是在JSP页面运行时才引入被包含的文件产生的响应文本,被包含的文件在逻辑和语法上独立于当前的JSP页面。




² <jsp:forward>动作元素

<jsp:forward>动作元素用于请求转发,它的功能类似于RequestDispatcher接口的forward()方法,是将客户端的请求转发给其他Web资源,例如,另一个JSP页面、Servlet等。

<jsp:forward>动作元素的语法格式如下。

<jsp:forward page=”relative URL”/>

其中,page属性指定请求转发到的Web资源的路径。

接下来通过一个实例来演示<jsp:forward>动作元素的使用,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test10.jsp。

在代码中,通过<jsp:forward>动作元素,访问test10.jsp的请求被转发到test11.jsp。

(2)在WebContent目录的jsp目录下新建test11.jsp,具体代码如书中例9.16所示。

(3)打开浏览器,访问http://localhost:8080/chapter09/jsp/test10.jsp,浏览器显示的页面如图所示。

从图中可以看出,当访问test10.jsp时,请求被转发到test11.jsp。




² <jsp:param>动作元素

<jsp:param>是一种提供参数的动作元素,它以name/value的形式为其他元素提供附加信息,一般与<jsp:include>、<jsp:forward>动作元素联合使用。

<jsp:param>的语法格式如下。

<jsp:param name=”参数名” value=”参数值”/>

1. 与<jsp:include>动作元素一起使用

当<jsp:param>与<jsp:include>动作元素一起使用时,可以将<jsp:param>中提供的参数值传递到被包含的页面中去,在被包含的页面中,通过调用request对象的getParameter()方法获取<jsp:param>指定的参数值。

2. 与<jsp:forward>动作元素一起使用

当<jsp:param>与<jsp:forward>动作元素一起使用时,可以在请求转发的同时向跳转的页面传递参数。在跳转的页面中,通过调用request对象的getParameter()方法获取<jsp:param>指定的参数值。

² 与JavaBean相关的动作元素

<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>三个动作元素都是与JavaBean相关的,因此下面统一对它们进行讲解。

1. <jsp:useBean>动作元素

<jsp:useBean>动作元素用于装载一个将在JSP页面中使用的JavaBean,JSP通过使用JavaBean组件来扩充自身的功能。

<jsp:useBean>动作元素的语法格式如下。

<jsp:useBean id=”id” class=”className”

scope=”page|request|session|application”/>

其中,id指定该JavaBean实例的变量名,通过id可以访问这个实例,class指定JavaBean的类名,服务器根据class指定的类调用其构造方法来创建这个类的实例,scope指定JavaBean的作用范围,可以使用page、request、session、application,默认值为page。

2. <jsp:setProperty>动作元素

<jsp:setProperty>动作元素用于设置或修改JavaBean的属性值。

<jsp:setProperty>动作元素的语法格式如下:

<jsp:setProperty name=”beanName” property=”propertyName”

value=”propertyValue” param=”parameterName”/>

其中,name指定JavaBean的对象名,与<jsp:useBean>动作元素的id属性对应,property指定JavaBean中需要获取的赋值的属性名,value指定要为属性设置的值,其值可以是一个字符串,也可以是一个JSP表达式。param指定请求中的参数名。

3. <jsp:getProperty>动作元素

<jsp:getProperty>动作元素用于获取JavaBean的属性值,并将其转换成字符串,然后输出。

<jsp:getProperty>动作元素的语法格式如下。

<jsp:getProperty name=”beanName” property=”propertyName”/>

其中,name指定JavaBean的对象名,与<jsp:useBean>动作元素的id属性对应,property指定JavaBean中需要获取的属性名。这里需要注意的是,在使用<jsp:getProperty>动作元素时,它的name属性和property属性都必须设置,不能省略。

接下来通过一个实例来演示以上三个动作元素的使用,具体步骤如下。

(1)在工程chapter09的com.qfedu.example包下新建一个JavaBean类User。

(2)在WebContent目录的jsp目录下新建test16.jsp。

(3)打开浏览器,访问http://localhost:8080/chapter09/jsp/test16.jsp,浏览器显示的页面如图所示。

从图中可以看出,在test16.jsp页面中,<jsp:useBean>动作元素创建一个User类的对象,<jsp:setProperty>动作元素为该对象设置属性,<jsp:getProperty>动作元素获取该对象的属性值并输出。




JSP内置对象

² 概述

为了简化开发,JSP内置了一些可以直接在脚本和表达式中使用的对象,这些对象由JSP自动创建,开发者可直接调用,而无须对它们进行实例化。所有JSP的内置对象,具体如表所示。

表 JSP内置对象




内置对象名称类型说明
requestjavax.servlet.HttpServletRequest用于获取客户端请求信息
responsejavax.servlet.HttpServletResponse用于向客户端响应信息
configjavax.servlet.ServletConfig页面配置对象
sessionjavax.servlet.http.HttpSession用于保存会话信息
applicationjavax.servlet.ServletContext用于保存整个Web应用的信息
pageContextjavax.servlet.jsp.PageContext用于存储当前JSP页面的信息
outjavax.servlet.jsp.JspWriter用于页面输出
pagejava.lang.Object当前JSP页面对象
exceptionjava.lang.Throwable用于处理JSP页面中的异常



表中列举了JSP的9个内置对象及其对应的类型。其中,request、response、config、session和application对象对应的类是Servlet的相关API,这些在前面的章节已有详细介绍,此处不再赘述。接下来,本书将对out、pageContext、exception对象做重点讲解。

² out对象

out对象是一个缓冲输出流对象,它与HttpServletResponse类的getWriter()方法返回的PrintWriter对象非常相似,不同的是,当向out对象的输出流中写入数据时,数据会先被存储在缓冲区中,在JSP默认配置下,缓冲区满时数据才会被自动刷新输出。

out对象提供了一系列的输出数据和处理缓冲区的方法,具体如表9.3所示。

表9.3 out对象的常用方法




属性名说明
void clear()清除缓冲区中的内容,不把数据输出到客户端
void clearBuffer()清除缓冲区中的内容,同时将数据输出到客户端
void close()关闭输出流
void flush()输出缓冲区里的数据
int getBufferSize()获取缓冲区的大小
int getRemainning()获取缓冲区剩余空间的大小
isAutoFlush()返回TRUE表示缓冲区满时会自动刷新输出,返回FALSE表示缓冲区满时不会自动清除并产生异常处理
void newLine()输出一个换行符
void print()向客户端输出数据
void println()向客户端输出数据并换行



² pageContext对象

pageContext对象即页面上下文对象,它代表当前JSP页面的运行环境,用于获取当前JSP页面的其他内置对象。另外,pageContext对象提供了容器功能,作用范围是当前JSP页面。

pageContext对象提供了一系列获取其他内置对象的方法,具体如表9.4所示。

表9.4 pageContext对象获取其他内置对象的方法




属性名说明
ServletRequest getRequest()获取当前JSP页面的request对象
ServletResponse getResponse()获取当前JSP页面的response对象
HttpSession getSession()获取当前JSP页面关联的session对象
ServletConfig getServletConfig()获取当前JSP页面的config对象
ServletContext getServletContext()获取当前JSP页面的application对象
JspWriter getOut()获取当前JSP页面的out对象
Object getPage()获取当前JSP页面的page对象
Exception getException获取当前JSP页面的exception对象



为实现容器功能,pageContext对象提供了一系列存取域属性的方法,具体如表9.5所示。

表9.5 pageContext对象存取域属性的方法




属性名说明
void setAttribute(String name,Object value,int scope)设置指定范围内的name属性
void setAttribute(String name,Object value)设置name属性
Object getAttribute(String name ,int scope)获取指定范围内的名称为name的属性
Object getAttribute(String name)获取名称为name的属性
void removeAttribute(String name, int scope)删除指定范围内名称为name的属性
void removeAttribute(String name)删除名称为name的属性
Object findAttribute(String name)从4个域对象中查找名称为name的属性
Enumeration getAttributeNamesInScope(int scope)获取指定范围内的所有属性名



在以上方法中,参数scope指定的是属性的作用范围,一般通过PageContext类提供的静态变量进行定义。域属性的作用范围共有四种,其中,pageContext.PAGE_SCOPE表示页面范围,pageContext.REQUEST_SCOPE表示请求范围,pageContext.SESSION_SCOPE表示会话范围,pageContext.APPLICATION_SCOPE表示Web应用程序范围。

² exception对象

exception对象即异常对象,用于封装JSP页面抛出的异常信息。需要注意的是,如果一个JSP页面要使用exception对象,必须将此页面中page指令的isErrorPage属性设置为true。

exception对象提供了几种获取异常信息的方法,具体如表9.6所示。

表9.6 exception对象的常用方法




属性名说明
String getMessage()获取异常信息
void printStackTrace()以标准形式输出一个错误和错误的堆栈
String toString()以字符串的形式返回一个对异常的描述
接下来通过一个实例来演示exception对象的使用方法,具体步骤如下。

(1)在WebContent目录的jsp目录下新建test19.jsp,具体代码如例9.25所示。

在代码中,page指令的errorPage属性为该页面指定了一个处理异常的页面,这个处理异常的页面为test20.jsp。

2)在WebContent目录的jsp目录下新建test20.jsp,具体代码如书中例9.26所示。

在代码中,page指令的isErrorPage属性被设置为TRUE,只有满足该条件,才可以直接在test20.jsp页面中使用exception对象。

(3)打开浏览器,点击右上角的

图标,在弹出的菜单中选择“Internet选项”命令,在”Internet选项“对话框中选择“高级”选项卡,取消勾选”显示友好的HTTP错误信息”复选框,如图所示。

IE浏览器自带有默认的错误提示页面,为保证本实例的运行结果不受影响,这里暂时取消该功能。

(4)重新打开浏览器,访问http://localhost:8080/chapter09/jsp/test19.jsp,浏览器显示的页面如图所示。

从图中可以看出,浏览器显示出test19.jsp页面的异常信息。





关键词:脚本,动作,指令,实战

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭