- Java Web從入門(mén)到精通(第2版)
- 明日科技
- 1077字
- 2020-11-28 17:38:26
6.7 其他內(nèi)置對(duì)象
視頻講解:光盤(pán)\TM\lx\6\07其他內(nèi)置對(duì)象.mp4
除了上面介紹的內(nèi)置對(duì)象外,JSP還提供了pageContext、config、page和exception對(duì)象。下面對(duì)這些對(duì)象分別進(jìn)行介紹。
6.7.1 獲取會(huì)話范圍的pageContext對(duì)象
獲取頁(yè)面上下文的pageContext對(duì)象是一個(gè)比較特殊的對(duì)象,通過(guò)它可以獲取JSP頁(yè)面的request、response、session、application、exception等對(duì)象。pageContext對(duì)象的創(chuàng)建和初始化都是由容器來(lái)完成的,JSP頁(yè)面中可以直接使用pageContext對(duì)象。pageContext對(duì)象的常用方法如表6.4所示。
表6.4 pageContext對(duì)象的常用方法

說(shuō)明
pageContext對(duì)象在實(shí)際JSP開(kāi)發(fā)過(guò)程中很少使用,因?yàn)閞equest和response等對(duì)象均為內(nèi)置對(duì)象,如果通過(guò)pageContext來(lái)調(diào)用這些對(duì)象比較麻煩,都可以直接調(diào)用其相關(guān)方法實(shí)現(xiàn)具體的功能。
6.7.2 讀取web.xml配置信息的config對(duì)象
config對(duì)象主要用于取得服務(wù)器的配置信息。通過(guò)pageContext對(duì)象的getServletConfig()方法可以獲取一個(gè)config對(duì)象。當(dāng)一個(gè)Servlet初始化時(shí),容器把某些信息通過(guò)config對(duì)象傳遞給這個(gè)Servlet。開(kāi)發(fā)者可以在web.xml文件中為應(yīng)用程序環(huán)境中的Servlet程序和JSP頁(yè)面提供初始化參數(shù)。config對(duì)象的常用方法如表6.5所示。
表6.5 config對(duì)象的常用方法

6.7.3 應(yīng)答或請(qǐng)求的page對(duì)象
page對(duì)象代表JSP本身,只有在JSP頁(yè)面內(nèi)才是合法的。page對(duì)象本質(zhì)上是包含當(dāng)前Servlet接口引用的變量,可以看作是this關(guān)鍵字的別名。page對(duì)象的常用方法如表6.6所示。
表6.6 page對(duì)象的常用方法

【例6.24】創(chuàng)建index.jsp文件,在該文件中調(diào)用page對(duì)象的各方法,并顯示返回結(jié)果。(實(shí)例位置:光盤(pán)\TM\sl\6\8)
關(guān)鍵代碼如下:
<%@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對(duì)象各方法的應(yīng)用</title> </head> <body> <%! Object object; //聲明一個(gè)Object型的變量 %> <ul> <li>getClass()方法的返回值:<%=page.getClass()%></li> <li>hashCode()方法的返回值:<%=page.hashCode()%></li> <li>toString()方法的返回值:<%=page.toString()%></li> <li>與Object對(duì)象比較的返回值:<%=page.equals(object)%></li> <li>與this對(duì)象比較的返回值:<%=page.equals(this)%></li> </ul> </body> </html>
運(yùn)行本實(shí)例,將顯示如圖6.13所示的效果。

圖6.13 在頁(yè)面中顯示page對(duì)象各方法的返回值
6.7.4 獲取異常信息的exception對(duì)象
exception對(duì)象用來(lái)處理JSP文件執(zhí)行時(shí)發(fā)生的所有錯(cuò)誤和異常,只有在page指令中設(shè)置isErrorPage屬性值為true的頁(yè)面中才可以被使用,在一般的JSP頁(yè)面中使用該對(duì)象將無(wú)法編譯JSP文件。exception對(duì)象幾乎定義了所有異常情況,在Java程序中,可以使用try...catch關(guān)鍵字來(lái)處理異常情況,如果在JSP頁(yè)面中出現(xiàn)沒(méi)有捕捉到的異常,就會(huì)生成exception對(duì)象,并把exception對(duì)象傳送到在page指令中設(shè)定的錯(cuò)誤頁(yè)面中,然后在錯(cuò)誤頁(yè)面中處理相應(yīng)的exception對(duì)象。exception對(duì)象的常用方法如表6.7所示。
表6.7 exception對(duì)象的常用方法

【例6.25】使用exception對(duì)象獲取異常信息。(實(shí)例位置:光盤(pán)\TM\sl\6\9)
(1)創(chuàng)建index.jsp文件,在該文件中,首先在page指令中指定errorPage屬性值為error.jsp,即指定顯示異常信息的頁(yè)面,然后定義保存單價(jià)的request范圍內(nèi)的變量,并賦值為非數(shù)值型,最后獲取該變量并轉(zhuǎn)換為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對(duì)象獲取異常信息</title>
</head>
<body>
<%
request.setAttribute("price", "12.5元"); //保存單價(jià)到request范圍內(nèi)的變量price中
float price=Float.parseFloat(request.getAttribute("price").toString()); //獲取單價(jià),并轉(zhuǎn)換為float型
%>
</body>
</html>
說(shuō)明
當(dāng)頁(yè)面運(yùn)行時(shí),上面的代碼將拋出異常,因?yàn)榉菙?shù)值型的字符串不能轉(zhuǎn)換為float型。
(2)編寫(xiě)error.jsp文件,將該頁(yè)面的page指令的isErrorPage屬性值設(shè)置為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>錯(cuò)誤提示頁(yè)</title> </head> <body> 錯(cuò)誤提示為:<%=exception.getMessage() %> </body> </html>
運(yùn)行本實(shí)例,將顯示如圖6.14所示的效果。

圖6.14 顯示錯(cuò)誤提示信息
- C++ Primer習(xí)題集(第5版)
- 自然語(yǔ)言處理實(shí)戰(zhàn):預(yù)訓(xùn)練模型應(yīng)用及其產(chǎn)品化
- 國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽中山大學(xué)內(nèi)部選拔真題解(二)
- Rake Task Management Essentials
- NLTK基礎(chǔ)教程:用NLTK和Python庫(kù)構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用
- C# 從入門(mén)到項(xiàng)目實(shí)踐(超值版)
- 基于差分進(jìn)化的優(yōu)化方法及應(yīng)用
- 新編Premiere Pro CC從入門(mén)到精通
- C語(yǔ)言程序設(shè)計(jì)
- 移動(dòng)界面(Web/App)Photoshop UI設(shè)計(jì)十全大補(bǔ)
- Node.js:來(lái)一打 C++ 擴(kuò)展
- Python 3.7從入門(mén)到精通(視頻教學(xué)版)
- C++編程兵書(shū)
- Python從入門(mén)到精通(第3版)
- 小程序從0到1:微信全棧工程師一本通