天天看點

JavaWeb學習-JSP系列-4-JSP的3個指令

這篇來學習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,應該輸出 兩個頁面的内容

JavaWeb學習-JSP系列-4-JSP的3個指令

4.taglib指令

作用:在JSP頁面中導入JSTL标簽庫。替換jsp中的java代碼片段。
<%@ taglib uri-"http://java.sun.com/jsp/jstl/core" prefix="c" %>
           

這個等後面學習到JSTL标簽,再來示範。

繼續閱讀