JSP的三六九四(三大指令、六大標籤、九大內建物件、四大作用域)
JSP的基本構成:HTML檔案+Java片斷+JSP標籤
三大指令:page指令、include指令、taglib指令。
page指令:
1.language屬性:設定當前頁面中編寫JSP指令碼使用的語言,預設值為java。
<%@page language="java"%>
2.contentType屬性:設定頁面響應的MIME型別,通常被設定為text/html。
<%@page contentType="text/html"%>
還可以設定JSP字元的編碼:<%@page contentType="text/html;charset=gb2312"%>
3.import屬性:類似於Java中的import語句,用來向JSP檔案中匯入需要用到的包。
在page指令中可多次使用該屬性來匯入多個包。例如:
<%@page import="java.util.*" %>
<%@page import="java.text.*"%>
或者通過逗號間隔,來匯入多個包。
<%@page import="java.util.*,java.text.*"%>
在JSP中已經預設匯入了以下的包。
java.lang.*
java.servlet.*
java.servlet.jsp.*
java.servlet.http.*
4.extends屬性:
5.session屬性:該屬性預設為ture,表示當前頁面支援session。
6.buffer屬性:(緩衝)
7.autoFlush屬性:
8.isThreadSafe屬性:
9.info屬性:該屬性可設定為任意字串,如當前頁面的作者或其他有關的頁面資訊。可通過Servlet.getServletInfo()方法來設定的字串。例如:
<%@page info="This is index.jsp!"%>
<%=this.getServletInfo()%>
訪問頁面後,顯示如下結果: This is index.jsp!
10.errorPage屬性和isErrorPage屬性:
例如:若當前應用下包含index.jsp和error.jsp檔案。
在index.jsp頁面中進行資料型別的轉換操作,其程式碼如下。
<%@page contentType="text/html;charset=utf-8" errorPage="error.jsp"%>
<%
String name="YXQ";
Integer.parseInt(name); //將字串轉化為int型
%>
上述程式碼將一個非數字格式的字串轉化為int型,因此將發生異常,最終進入errorPage屬性指定的error.jsp頁面顯示錯誤資訊。
在error.jsp頁面中需要將isErrorPage屬性設為true,然後才能呼叫exception物件輸出錯誤資訊。
error.jsp頁面的程式碼如下。
<%page contentType="text/html;charset=gb2312" isErrorPage="true"%>
出現錯誤!錯誤如下:<br>
<%=exception.getMessage()%>
include指令:
<%@include file="檔案的絕對路徑或相對路徑"%>
使用include指令引用外部檔案,可以減少程式碼的冗餘。(如:頁面公用)
<%@page contentType="text/html;charset=utf-8"%>
<table>
<tr><td colspan="2"><%include file="top.jsp"%></td></tr>
<tr>
<td><%@include file="side.jsp"%></td>
<td>內容顯示</td>
</tr>
<tr><td colspan="2"><%@include file="top.jsp"%></tr>
</table>
taglib指令:
六大標籤:偽指令標籤:<%@ %>
註釋標籤:<%-- --%>
宣告標籤:<%! %>
動作標籤:<jsp:action Name/>
指令碼標籤:<% %>
表示式標籤:<%= %>
九大內建物件: applicatin、config 、exception、out、page、pageContext、request、response、session
四大作用域:
JSP作用域
JSP頁面中的物件,包括使用者建立的和JSP內建物件都有一個範圍屬性。
Application——具有應用程式作用域的物件,在應用程式存活期間均可用。
Session——具有會話作用域的物件,在會話的存活期間可用。
Request——具有請求作用域的物件,在所有處理同一個請求的頁面內部內都可以訪問。
Page——具有頁面作用域的物件,在當前頁內可用
方法:setAttribute(String name,Object attribute)
getAttribute(String name)
作用域範圍從大到小:
Allication作用域:範圍最大
可以被不同頁面、不同使用者共享
可以通過Allication內建物件或ServletContext
訪問Allication作用域物件
Session作用域:範圍僅次於Allication作用域
可以被同一客戶端的請求訪問
可以通過Session內建物件訪問Session作用域物件
Request作用域:範圍小於Session作用域
可以被forward()方法轉向頁面或者include()包含頁面訪問
可以通過request內建物件訪問request作用域物件
page作用域:範圍最小
只能被建立物件的頁面訪問
只能通過pageContext內建物件訪問page作用域物件