jsp指令是為jsp引擎設計的,他們並不直接產生任何可見輸出,而只是告訴引擎如何處理jsp頁面中的其余部分。 ##jsp中的指令 ###page指令 ###include指令 ###taglib指令
jsp指令的基本語法 格式:<%@ 指令 屬性名="值" %>
<%@page contextType="text/html;charset=gb2312" %> 如果指令中有多個屬性,這多個屬性可以寫在一個指令中,也可以分開
<%@page contentType="text/html; charset=gb2312"%>
<%@page import="java.util.Date"%>
也可以這樣寫
<%@page contentType="text/html;charset=gb2312" import="java.util.Date"%>
###page指令
page指令用於定義jsp頁面中的各種屬性,無論page指令出現在jsp頁面中什么地方,它作用的都是整個jsp頁面,最好還是放在jsp的起始位置
page指令的屬性
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relative_url" ]
[ isErrorPage="true | false" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ pageEncoding="characterSet | ISO-8859-1" ]
[ isELIgnored="true | false" ]
%>
###import屬性
jsp頁面中會自動的導入下面的包 java.lang.*;javax.servlet.*;javax.servlet.jsp.*; javax.servlet.http.*;
可以在一條page指令中引入多個類或包,其中的每個包或類之間使用逗號(,)分割
<%@ page import="java.util.*,java.io.*"%>
也可以使用多條page指令的import屬性來分別進入各個包或類
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*"%>
###errorPage屬性
errorpage屬性的設置值,必須使用相對路徑,如果以"/"開頭,表示相對於當前的web應用程序的根目錄(注意不是站點目錄)
否則表示相對於當前頁面。
error-page 元素有3個子元素<error-code> <exception-type> <location>
error-code 子元素指定錯誤的狀態碼,例如<error-code> 404</error-code>
exception-type 子元素指定異常類的完全限定名<exception-type>java.lang.ArithmeticException</exception-type>
location 子元素指定以"/"開頭的錯誤處理頁面的路徑<location>/ErrorPage/404.jsp</errorPage>
<%@page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="/error/404.jsp"%>
<html>
<head>
<title>錯誤信息友好提示!</title>
</head>
<body>
對不起,出錯了,請聯系管理員解決!
</body>
</html>
在web.xml使用<error-page>標簽為整個web應用設置錯誤處理頁面
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--針對404錯誤處理頁面-->
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
</web-app>
###isErrorPage屬性
該屬性顯示的聲明頁面是錯誤頁面
如果某一個jsp頁面作為系統錯誤處理頁面,那么建議將page指令的isErrorPage屬性(默認為false)設置為ture,來顯示的聲明這個jsp頁面是一個錯誤處理頁面
如果沒有設置isErrorPage=true。那么jsp頁面中就無法使用exception對象,因為在Servlet的_jspServlet方法中不會聲明一個exception對象
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" isErrorPage="true"%>
<html>
<body>
對不起出錯了!
異常信息如下:<%= exception.getMessage()%>
<!--語句exception.getMessage()后面沒有";"-->
</body>
</html>
###include指令
include指令有兩種形式:
@include指令
<jsp:include>指令
@inclide指令
@include可以包含任意文件,當然,只是把文件的內容包含進來。include指令用於引入其他jsp頁面,如果include指令引入了其他的jsp頁面,那么jsp引擎將把這兩個JSP翻譯成一個servlet.所以include指令引入通常也被稱之為靜態引入
include指令語法
<%@ include file="relativeURL"%> 其中file屬性用於指定被引入文件的路徑。路徑"/"開頭,表示代表當前web應用。
include 指令細節注意問題:
被引入的文件必須遵循jsp語法
被引入的文件可以使用任意擴展名。即使其擴展名是html,jsp引擎也會按照處理jsp頁面的方式處理它里面的內容,為了見明知意,jsp規范建議使用jspf
由於使用include指令將會涉及2個jsp頁面,並會把2個jsp翻譯成一個servlet,所以這2個jsp頁面的指令不能沖突。
include指令使用范例
head.jspf
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1 style="color:red;">網頁頭部</h1>
foot.jspf
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1 style="color:blue;">網頁尾部</h1>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jsp的Include指令測試</title>
</head>
<body>
<%--使用include標簽引入引入其它JSP頁面--%>
<%@include file="/jspfragments/head.jspf" %>
<h1>網頁主體內容</h1>
<%@include file="/jspfragments/foot.jspf" %>
</body>
</html>
###@include指令
使用@include可以包含任意的內容,文件的后綴是什么都無所謂。這種把別的文件包含到自身頁面的@include語句就叫做靜態包含,作用只是把別的頁面內容包含進來,屬於靜態包含。
###jsp:include
jsp:include 指令為動態包含,如果被包含的頁面是jsp,則先處理之后再將結果包含,而如果包含的是非*.jsp文件,則只是把文件內容靜態包含進來。
###jsp:taglib 指令
使用<%@ taglib uri="標簽庫的uri" prefix="標簽的使用前綴"%>指令引入要使用的標簽庫。