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 显示错误提示信息