- Java Web从入门到精通(第2版)
- 明日科技
- 1077字
- 2020-11-28 17:38:26
6.7 其他内置对象
视频讲解:光盘\TM\lx\6\07其他内置对象.mp4
除了上面介绍的内置对象外,JSP还提供了pageContext、config、page和exception对象。下面对这些对象分别进行介绍。
6.7.1 获取会话范围的pageContext对象
获取页面上下文的pageContext对象是一个比较特殊的对象,通过它可以获取JSP页面的request、response、session、application、exception等对象。pageContext对象的创建和初始化都是由容器来完成的,JSP页面中可以直接使用pageContext对象。pageContext对象的常用方法如表6.4所示。
表6.4 pageContext对象的常用方法
说明
pageContext对象在实际JSP开发过程中很少使用,因为request和response等对象均为内置对象,如果通过pageContext来调用这些对象比较麻烦,都可以直接调用其相关方法实现具体的功能。
6.7.2 读取web.xml配置信息的config对象
config对象主要用于取得服务器的配置信息。通过pageContext对象的getServletConfig()方法可以获取一个config对象。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。config对象的常用方法如表6.5所示。
表6.5 config对象的常用方法
6.7.3 应答或请求的page对象
page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。page对象的常用方法如表6.6所示。
表6.6 page对象的常用方法
【例6.24】创建index.jsp文件,在该文件中调用page对象的各方法,并显示返回结果。(实例位置:光盘\TM\sl\6\8)
关键代码如下:
<%@page language="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>page对象各方法的应用</title> </head> <body> <%! Object object; //声明一个Object型的变量 %> <ul> <li>getClass()方法的返回值:<%=page.getClass()%></li> <li>hashCode()方法的返回值:<%=page.hashCode()%></li> <li>toString()方法的返回值:<%=page.toString()%></li> <li>与Object对象比较的返回值:<%=page.equals(object)%></li> <li>与this对象比较的返回值:<%=page.equals(this)%></li> </ul> </body> </html>
运行本实例,将显示如图6.13所示的效果。
图6.13 在页面中显示page对象各方法的返回值
6.7.4 获取异常信息的exception对象
exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象几乎定义了所有异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕捉到的异常,就会生成exception对象,并把exception对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的exception对象。exception对象的常用方法如表6.7所示。
表6.7 exception对象的常用方法
【例6.25】使用exception对象获取异常信息。(实例位置:光盘\TM\sl\6\9)
(1)创建index.jsp文件,在该文件中,首先在page指令中指定errorPage属性值为error.jsp,即指定显示异常信息的页面,然后定义保存单价的request范围内的变量,并赋值为非数值型,最后获取该变量并转换为float型。index.jsp文件的具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset= UTF-8">
<title>使用exception对象获取异常信息</title>
</head>
<body>
<%
request.setAttribute("price", "12.5元"); //保存单价到request范围内的变量price中
float price=Float.parseFloat(request.getAttribute("price").toString()); //获取单价,并转换为float型
%>
</body>
</html>
说明
当页面运行时,上面的代码将抛出异常,因为非数值型的字符串不能转换为float型。
(2)编写error.jsp文件,将该页面的page指令的isErrorPage属性值设置为true,并且输出异常信息。具体代码如下:
<%@ page language="java" contentType="text/html; charset= UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset= UTF-8"> <title>错误提示页</title> </head> <body> 错误提示为:<%=exception.getMessage() %> </body> </html>
运行本实例,将显示如图6.14所示的效果。
图6.14 显示错误提示信息