這篇來學習JSP的三個指令,JSP中有一個用數字來總結JSP學習的内容:3個指令,6個動作,9大對象。先來看看什麼是指令?JSP指令(directive)是為JSP引擎而設計的,它們并不直接産生任何可見的輸出,隻是告訴引擎如何處理JSP頁面。JSP2.0規範中定義了3個指令。page include taglib,本篇先來看看page指令。
1.指令文法
文法:
<%@ 指令名稱 屬性1=“屬性值1”屬性2=“屬性值2”%>
多個屬性之間空格隔開,或者寫成多行格式
<%@ 指令名稱 屬性1=“屬性值1”%>
<%@ 指令名稱 屬性2=“屬性值2”%>
2.page指令
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
上面是一個page指令例子,裡面有四個屬性,分别是Language表示jsp裡面可以寫java語言代碼,contentType我們在請求頭部分看到過這個屬性,charset和pageEncoding都是字元集設定。
總之,page指令的作用就是定義JSP也各種屬性。處理上面這四個屬性,jsp中會自動建立session對象,預設值是true.JSP中還會預設導入以下幾種包。
language="java"
sun公司一開始設計本來想支援多語言,例如c#,但是目前為止,隻能支援java語言,是以上面language="java"其實是可以删除的,預設就是支援java語言。
extends="package.class"
我們看到繼承關鍵字,就是這個jsp繼承哪個包下的class檔案。預設jsp是繼承父類HttpJspBase, 由于java語言一個類隻能繼承一個父類,不能多繼承,
一般我們開發不可能寫的父類比HttpJspBase還完美,是以這個extends我們也不寫。
import="多個包 用逗号隔開"
前面我們使用了java.util.* 來識别Date對象。JSP中預設已經導入下面四個包。
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
session="true"
JSP中預設自動建立session,前面我們利用session設定userName屬性也用到過,預設值是true。
buffer="8kb"
JSP中預設緩存資料是8kb。如果不緩存,值就寫成none,還可以其他大小。不建議修改預設8kb就好。
autoFlush="true"
支援自動重新整理,預設是true。
isThreadSafe="true"
JSP預設是線程安全的
errorPage="/error.jsp"
這個就是如果通路目前jsp頁面,出現錯誤,特别是那些運作時異常,為了不直接讓使用者看到http 500錯誤,我們讓跳轉到一個專門處理錯誤的頁面,例如error.jsp。
contentType="text/html; charset=UTF-8"
等同于我們前面在servlet類中寫的代碼,resp.setContentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"
告訴JSP引擎要翻譯檔案使用的編碼,其實隻要設定pageEncoding編碼就好;contentType="text/html; charset=UTF-8" 會自動随着pageEncoding變化而變化。你可以删除contentType,通路,然後檢視jsp轉譯的源碼就發現這個。
isELIgnored="false"
告訴JSP是否支援EL表達式,預設是false,EL表達式後面我們來學習。
3.include指令
靜态包含:把其它資源包含到目前頁面中。
<%@ include file="/include/header.jsp" %>
動态包含:
<jsp: include page="/include/header.jsp"></jsp:include>
兩者差別:翻譯的時間段不同
靜态包含:在翻譯時就把兩個檔案合并
動态包含:不會合并檔案,當代碼執行到include時,才包含另外一個檔案内容
這裡來舉例一個靜态包含的例子,建立兩個jsp.分别是1.jsp和2.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>
aaaaaaaaaa
<%@ include file="/2.jsp" %>
</body>
</html>
<%@ 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>
bbbbbbbbbbb
</body>
</html>
部署,通路1.jsp,應該輸出 兩個頁面的内容
4.taglib指令
作用:在JSP頁面中導入JSTL标簽庫。替換jsp中的java代碼片段。
<%@ taglib uri-"http://java.sun.com/jsp/jstl/core" prefix="c" %>
這個等後面學習到JSTL标簽,再來示範。