,也可以寫成<%@page import=”java.net.*,java.util.*,java.sql.*”%>,多個包之間用逗號隔開。"/> 日本免费人成黄页在线观看视频 ,无码精品黑人一二区三区

教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JAVA培訓之page指令中的屬性詳解

更新時間:2016年09月21日17時59分 來源:傳智播客JAVA培訓學院 瀏覽次數(shù):

jsp文件的三個指令中,page指令的屬性最多,今天我們就來一一學習page指令的各個屬性。

1.import屬性

import屬性表示導入jar包,對應著java文件中的import語句,該屬性是page指令中唯一一個可以重復出現(xiàn)的屬性,例如:<%@page import=”java.util.*” import=”java.net.*” import=”java.sql.*”%>,也可以寫成<%@page import=”java.net.*,java.util.*,java.sql.*”%>,多個包之間用逗號隔開。

2.errorPage屬性和isErrorPage屬性

我們知道,如果一個頁面出現(xiàn)錯誤,在瀏覽器端訪問這個頁面時,服務器會響應錯誤信息,但是一般在開發(fā)中,為了讓用戶體驗更好一些,開發(fā)人員不會讓用戶看到錯誤信息,這時我們就可以使用page指令的errorPage屬性指定錯誤頁面,給用戶一種友好的體驗。
errorPage屬性的作用:當前訪問的頁面如果拋出異常,就轉發(fā)到errorPage屬性指定的頁面。下面我們來驗證一下,如下所示:
(1)在一個web工程下創(chuàng)建一個one.jsp,主要代碼如例1-1所示:
例1-1 one.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="errorPage.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
  </head>
  <body>
   <%
     int n=1/0;
    %>
  </body>
</html>
例1-1中,在page指令中設置errorPage屬性的值為“errorPage.jsp”,表示如果one.jsp頁面出現(xiàn)問題,就轉發(fā)到errorPage.jsp。
(2)在當前web應用下再次新建一個jsp頁面,errorPage.jsp,主要代碼如例1-2所示:
例1-2 errorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>哈哈~出錯了</h1>
</body>
</html>
(3)將工程發(fā)布到服務器中,然后啟動服務器,在瀏覽器端訪問one.jsp頁面,瀏覽器顯示結果如圖1-1所示:

圖1-1 瀏覽器顯示結果
由圖1-1可知,瀏覽器地址欄上的地址仍然是one.jsp頁面的訪問地址,說明當頁面拋出異常,使用errorPage屬性會轉發(fā)到指定的頁面。
(4)使用HttpWatch工具抓取請求響應信息,如圖1-2所示:

圖1-2 響應狀態(tài)碼
圖1-2中,響應狀態(tài)碼是200,表示響應成功。訪問one.jsp頁面,該頁面有錯誤,服務器本應該響應500狀態(tài)碼,而現(xiàn)在卻相應200狀態(tài)碼,出現(xiàn)這種現(xiàn)象是由于我們沒有設置另外一個屬性:isErrorPage。下面我們來了解這個屬性:
isErrorPage屬性的作用是指定當前頁面是否為處理錯誤的頁面,如果值為true,這個頁面會設置響應狀態(tài)碼500,并且在該頁面中可以使用jsp九大內置對象中的exception對象。
(5)在errorPage.jsp頁面的page指令中添加一個屬性,isErrorPage,值為true,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
(6)然后再在瀏覽器端訪問one.jsp,使用HttpWatch工具抓取到的信息如圖1-3所示:

圖1-3 響應狀態(tài)碼
由圖1-3可知,當在errorPage.jsp頁面中設置了isErrorPage屬性,響應狀態(tài)碼就為500了。
(7)在errorPage.jsp頁面使用九大內置對象中的exception對象,如例1-3所示:
例1-3 errorPage.jsp
<body>
<h1>哈哈~出錯了</h1>
<%
 exception.printStackTrace(response.getWriter());
 %>
</body>
例1-3中,使用九大內置對象將異常信息打印在瀏覽器端。
(8)在瀏覽器端再次訪問one.jsp,瀏覽器顯示結果如圖1-4所示:
圖1-4 瀏覽器顯示結果
如果jsp頁面中沒有isErrorPage=true,那么該頁面中就不能使用exception內置對象。
溫馨提示:IE瀏覽器會在狀態(tài)碼為500時,并且響應正文的長度小于等于512B時不給予顯示!而是顯示“網站無法顯示該頁面”字樣。這時你只需要添加一些響應內容即在瀏覽器端顯示.

3.web.xml中配置錯誤頁面

錯誤頁面不僅可以在jsp頁面中配置,還可以在web.xml中配置。如例1-4所示:
例1-4 web.xml
   <error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/error500.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/error.jsp</location>
  </error-page>
在例1-4中,如果響應的狀態(tài)碼是404時,會轉發(fā)到error404.jsp頁面,如果響應狀態(tài)碼是500,會轉發(fā)到error500.jsp頁面,當服務器端拋出RuntimeException,會轉發(fā)到error.jsp頁面。
我們知道無論服務器端拋出什么異常,響應的狀態(tài)碼都是500,那么當服務器端拋出RuntimeException時,是轉發(fā)到error500.jsp還是轉發(fā)到error.jsp?由于狀態(tài)碼500的范圍比較大,相對來說不夠具體,所以會轉發(fā)到error.jsp頁面。如果響應狀態(tài)碼是500,但并不是RuntimeException異常,那么就轉發(fā)到error500.jsp。
下面我們來驗證一下,如下所示:
(1)在web應用下新建一個error目錄,在該目錄下新建一個errorPage.jsp,頁面的主要內容如例1-5所示:
 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>哈哈~出錯了</h1>
</body>
</html>
(2)該應用的web.xml,如例1-6所示:
    <error-page>
    <error-code>404</error-code>
    <location>/error/errorPage.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/error/errorPage.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/index.jsp</location>
  </error-page>
(3)重啟服務器,在瀏覽器端訪問一個不存在的頁面,瀏覽器的顯示結果如圖1-5所示:

圖1-5 瀏覽器顯示結果

4.autoFlush屬性和buffer屬性

這兩個屬性很少使用,我們了解一下即可,如下所示:
  • autoFlush屬性:指定jsp的輸出緩沖區(qū)被響應信息填滿時,是否自動刷新。默認值為true,如果值為false,表示在緩沖區(qū)被填滿時拋出異常;
  • buffer屬性:指定緩沖區(qū)的大小,默認是8kb,通常不需要修改。

5.其他屬性

page指令的其他不常用屬性,如下所示:
  • isELIgnored屬性:是否忽略el表達式,默認值是false,表示不忽略;
  • language屬性:指定當前jsp編譯后的語言類型,默認值為java;
  • info:jsp的說明信息;
  • isThreadSafe:當前的jsp是否支持并發(fā)訪問;
  • session:當前頁面是否支持session,如果為false,那么當前頁面就沒有session這個內置對象;
  • extends:讓jsp生成的servlet去繼承該屬性指定的類。

本文版權歸傳智播客Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://metathetuscanyresort.com/javaee
0 分享到:
和我們在線交談!