JSP中Page指令

jsp文件的三個(gè)指令中,page指令的屬性最多妨猩,今天我們就來(lái)一一學(xué)習(xí)page指令的各個(gè)屬性惭墓。

1.import屬性

import屬性表示導(dǎo)入jar包挺尿,對(duì)應(yīng)著java文件中的import語(yǔ)句,該屬性是page指令中唯一一個(gè)可以重復(fù)出現(xiàn)的屬性门怪,例如:<%@page import=”java.util.*” import=”java.net.*” import=”java.sql.*”%>骡澈,也可以寫成<%@page import=”java.net.*,java.util.*,java.sql.*”%>,多個(gè)包之間用逗號(hào)隔開掷空。

2.errorPage屬性和isErrorPage屬性

我們知道肋殴,如果一個(gè)頁(yè)面出現(xiàn)錯(cuò)誤囤锉,在瀏覽器端訪問(wèn)這個(gè)頁(yè)面時(shí),服務(wù)器會(huì)響應(yīng)錯(cuò)誤信息护锤,但是一般在開發(fā)中官地,為了讓用戶體驗(yàn)更好一些,開發(fā)人員不會(huì)讓用戶看到錯(cuò)誤信息烙懦,這時(shí)我們就可以使用page指令的errorPage屬性指定錯(cuò)誤頁(yè)面驱入,給用戶一種友好的體驗(yàn)。

errorPage屬性的作用:當(dāng)前訪問(wèn)的頁(yè)面如果拋出異常氯析,就轉(zhuǎn)發(fā)到errorPage屬性指定的頁(yè)面亏较。下面我們來(lái)驗(yàn)證一下,如下所示:

(1)在一個(gè)web工程下創(chuàng)建一個(gè)one.jsp掩缓,主要代碼如例1-1所示:

例1-1 one.jsp

<%@ page language="java"?import="java.util.*"?pageEncoding="utf-8"?errorPage="errorPage.jsp"%>

My JSP 'index.jsp' starting page

"pragma"?content="no-cache">

"cache-control"?content="no-cache">

"expires"?content="0">

"keywords"?content="keyword1,keyword2,keyword3">

"description"?content="This is my page">

<%

?int?n=1/0;

%>

例1-1中雪情,在page指令中設(shè)置errorPage屬性的值為“errorPage.jsp”,表示如果one.jsp頁(yè)面出現(xiàn)問(wèn)題你辣,就轉(zhuǎn)發(fā)到errorPage.jsp巡通。

(2)在當(dāng)前web應(yīng)用下再次新建一個(gè)jsp頁(yè)面,errorPage.jsp舍哄,主要代碼如例1-2所示:

例1-2 errorPage.jsp

<%@ page language="java"?contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

"Content-Type"?content="text/html; charset=UTF-8">

Insert title here

哈哈~出錯(cuò)了

(3)將工程發(fā)布到服務(wù)器中宴凉,然后啟動(dòng)服務(wù)器,在瀏覽器端訪問(wèn)one.jsp頁(yè)面表悬,瀏覽器顯示結(jié)果如圖1-1所示:

圖1-1 瀏覽器顯示結(jié)果

由圖1-1可知弥锄,瀏覽器地址欄上的地址仍然是one.jsp頁(yè)面的訪問(wèn)地址,說(shuō)明當(dāng)頁(yè)面拋出異常签孔,使用errorPage屬性會(huì)轉(zhuǎn)發(fā)到指定的頁(yè)面叉讥。

(4)使用HttpWatch工具抓取請(qǐng)求響應(yīng)信息,如圖1-2所示:

圖1-2 響應(yīng)狀態(tài)碼

圖1-2中饥追,響應(yīng)狀態(tài)碼是200图仓,表示響應(yīng)成功。訪問(wèn)one.jsp頁(yè)面但绕,該頁(yè)面有錯(cuò)誤救崔,服務(wù)器本應(yīng)該響應(yīng)500狀態(tài)碼,而現(xiàn)在卻相應(yīng)200狀態(tài)碼捏顺,出現(xiàn)這種現(xiàn)象是由于我們沒有設(shè)置另外一個(gè)屬性:isErrorPage六孵。下面我們來(lái)了解這個(gè)屬性:

isErrorPage屬性的作用是指定當(dāng)前頁(yè)面是否為處理錯(cuò)誤的頁(yè)面,如果值為true幅骄,這個(gè)頁(yè)面會(huì)設(shè)置響應(yīng)狀態(tài)碼500劫窒,并且在該頁(yè)面中可以使用jsp九大內(nèi)置對(duì)象中的exception對(duì)象。

(5)在errorPage.jsp頁(yè)面的page指令中添加一個(gè)屬性拆座,isErrorPage主巍,值為true冠息,如下所示:

<%@ page language="java"?contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"?isErrorPage="true"%>

(6)然后再在瀏覽器端訪問(wèn)one.jsp,使用HttpWatch工具抓取到的信息如圖1-3所示:

圖1-3 響應(yīng)狀態(tài)碼

由圖1-3可知孕索,當(dāng)在errorPage.jsp頁(yè)面中設(shè)置了isErrorPage屬性逛艰,響應(yīng)狀態(tài)碼就為500了。

(7)在errorPage.jsp頁(yè)面使用九大內(nèi)置對(duì)象中的exception對(duì)象搞旭,如例1-3所示:

例1-3 errorPage.jsp

哈哈~出錯(cuò)了

<%

exception.printStackTrace(response.getWriter());

%>

例1-3中散怖,使用九大內(nèi)置對(duì)象將異常信息打印在瀏覽器端。

(8)在瀏覽器端再次訪問(wèn)one.jsp肄渗,瀏覽器顯示結(jié)果如圖1-4所示:

圖1-4 瀏覽器顯示結(jié)果

如果jsp頁(yè)面中沒有isErrorPage=true镇眷,那么該頁(yè)面中就不能使用exception內(nèi)置對(duì)象。

溫馨提示:IE瀏覽器會(huì)在狀態(tài)碼為500時(shí)翎嫡,并且響應(yīng)正文的長(zhǎng)度小于等于512B時(shí)不給予顯示偏灿!而是顯示“網(wǎng)站無(wú)法顯示該頁(yè)面”字樣。這時(shí)你只需要添加一些響應(yīng)內(nèi)容即在瀏覽器端顯示.

3.web.xml中配置錯(cuò)誤頁(yè)面

錯(cuò)誤頁(yè)面不僅可以在jsp頁(yè)面中配置钝的,還可以在web.xml中配置。如例1-4所示:

例1-4 web.xml

404

/error404.jsp

500

/error500.jsp

java.lang.RuntimeException

/error.jsp

在例1-4中铆遭,如果響應(yīng)的狀態(tài)碼是404時(shí)硝桩,會(huì)轉(zhuǎn)發(fā)到error404.jsp頁(yè)面,如果響應(yīng)狀態(tài)碼是500枚荣,會(huì)轉(zhuǎn)發(fā)到error500.jsp頁(yè)面碗脊,當(dāng)服務(wù)器端拋出RuntimeException,會(huì)轉(zhuǎn)發(fā)到error.jsp頁(yè)面橄妆。

我們知道無(wú)論服務(wù)器端拋出什么異常衙伶,響應(yīng)的狀態(tài)碼都是500,那么當(dāng)服務(wù)器端拋出RuntimeException時(shí)害碾,是轉(zhuǎn)發(fā)到error500.jsp還是轉(zhuǎn)發(fā)到error.jsp?由于狀態(tài)碼500的范圍比較大矢劲,相對(duì)來(lái)說(shuō)不夠具體,所以會(huì)轉(zhuǎn)發(fā)到error.jsp頁(yè)面慌随。如果響應(yīng)狀態(tài)碼是500芬沉,但并不是RuntimeException異常,那么就轉(zhuǎn)發(fā)到error500.jsp阁猜。

下面我們來(lái)驗(yàn)證一下丸逸,如下所示:

(1)在web應(yīng)用下新建一個(gè)error目錄,在該目錄下新建一個(gè)errorPage.jsp剃袍,頁(yè)面的主要內(nèi)容如例1-5所示:

<%@ page language="java"?contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"?isErrorPage="true"%>

"Content-Type"?content="text/html; charset=UTF-8">

Insert title here

哈哈~出錯(cuò)了

(2)該應(yīng)用的web.xml黄刚,如例1-6所示:

404

/error/errorPage.jsp

500

/error/errorPage.jsp
java.lang.RuntimeException
/index.jsp

(3)重啟服務(wù)器,在瀏覽器端訪問(wèn)一個(gè)不存在的頁(yè)面民效,瀏覽器的顯示結(jié)果如圖1-5所示:

圖1-5 瀏覽器顯示結(jié)果

4.autoFlush屬性和buffer屬性

這兩個(gè)屬性很少使用憔维,我們了解一下即可涛救,如下所示:

autoFlush屬性:指定jsp的輸出緩沖區(qū)被響應(yīng)信息填滿時(shí),是否自動(dòng)刷新埋同。默認(rèn)值為true州叠,如果值為false,表示在緩沖區(qū)被填滿時(shí)拋出異常凶赁;

buffer屬性:指定緩沖區(qū)的大小咧栗,默認(rèn)是8kb,通常不需要修改虱肄。

5.其他屬性

page指令的其他不常用屬性致板,如下所示:

isELIgnored屬性:是否忽略el表達(dá)式,默認(rèn)值是false咏窿,表示不忽略斟或;

language屬性:指定當(dāng)前jsp編譯后的語(yǔ)言類型,默認(rèn)值為java集嵌;

info:jsp的說(shuō)明信息萝挤;

isThreadSafe:當(dāng)前的jsp是否支持并發(fā)訪問(wèn);

session:當(dāng)前頁(yè)面是否支持session根欧,如果為false怜珍,那么當(dāng)前頁(yè)面就沒有session這個(gè)內(nèi)置對(duì)象;

extends:讓jsp生成的servlet去繼承該屬性指定的類凤粗。

contentType?是指服務(wù)器發(fā)送給客戶端時(shí)的內(nèi)容編碼

pageEncoding?是jsp文件本身的編碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酥泛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嫌拣,更是在濱河造成了極大的恐慌柔袁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件异逐,死亡現(xiàn)場(chǎng)離奇詭異捶索,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)应役,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門情组,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人箩祥,你說(shuō)我怎么就攤上這事院崇。” “怎么了袍祖?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵底瓣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捐凭,這世上最難降的妖魔是什么拨扶? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮茁肠,結(jié)果婚禮上患民,老公的妹妹穿的比我還像新娘。我一直安慰自己垦梆,他們只是感情好匹颤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著托猩,像睡著了一般印蓖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上京腥,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天赦肃,我揣著相機(jī)與錄音,去河邊找鬼公浪。 笑死他宛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的欠气。 我是一名探鬼主播堕汞,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晃琳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起琐鲁,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卫旱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后围段,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顾翼,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年奈泪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了适贸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涝桅,死狀恐怖拜姿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冯遂,我是刑警寧澤蕊肥,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蛤肌,受9級(jí)特大地震影響壁却,放射性物質(zhì)發(fā)生泄漏批狱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一展东、第九天 我趴在偏房一處隱蔽的房頂上張望赔硫。 院中可真熱鬧,春花似錦盐肃、人聲如沸爪膊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惊完。三九已至,卻和暖如春处硬,著一層夾襖步出監(jiān)牢的瞬間小槐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工荷辕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凿跳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓疮方,卻偏偏與公主長(zhǎng)得像控嗜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骡显,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容