jsp篇 之 指令元素和動作元素
Jsp指令元素分類與書寫格式 :
書寫格式 :
<%@指令型別 屬性 =" 值 " .. %>
分類:
【 page include taglib】三種。
1,page指令:
errorPage="error.jsp"
如果 a.jsp頁面中設定了 errorPage="error.jsp", 那麼 a.jsp 頁面在執行時【一旦出錯】 就會【自動跳轉到 error.jsp】裡面 .
isErrorPage="true"
如果一個頁面中設定了 isErrorPage="true",那麼就表示這個【頁面是用來專門顯示 錯誤資訊】的頁面。
另外在這個頁面中【能夠使用到隱藏物件 exception】來顯示出錯誤的資訊 .( 需要使 用 jsp的內建物件 )
language屬性 language="java"
表示當前頁面中的程式語言是 java;
目前這個屬性值只能寫 java,不支援其他語言。
contentType屬性
contentType="text/html; charset=UTF-8"
設定伺服器將來使用 io把 jsp 頁面內容輸出給瀏覽器時 , 使用什麼編碼向 瀏覽器輸出。
pageEncoding屬性
pageEncoding="UTF-8"
設定 jsp頁面檔案儲存 時候所用的編碼
2,include指令
一個頁面包含 /引入另外一個頁面有倆種方式 :
靜態包含 動態包含。
靜態包含 基本格式:
<%@ include file="" %>
作用 :
在當前頁面中使用 include指令可以把另外一個頁面的內容引入到當前頁面。
靜態 include是先把被包含檔案的內容全部複製內嵌到包含檔案中,再進行編譯運 行的, 所以 b中的變數等不能與 a 重複,否則會報錯
動態包含:
<jsp:include page="foot.jsp">
特點: 執行到了 include語句的時候才觸發被包含檔案的編譯、執行,並實時把結 果包含進來。
動態包含與靜態包含的區別?
兩者都可以包含進來其他頁面;
a.動態包含是動態標籤 jsp:include實現
靜態包含是由指令元素 <%@ include file="" %>實現;
b.靜態包含原封不動載入;動態包含翻譯成方法呼叫;
c.靜態包含不能傳參;動態包含可以傳參。
傳參出現中文亂碼,過濾器可以解決;
動態 include與靜態 include 的最大不同在於:包含檔案與被包含檔案都是先編譯執行,再包含。二者的編譯階段是相互獨立的,只有在包含檔案的 include 語句處把被包含檔案的執行結果包含進來
總結:
靜態包含執行效率會更快,但是有可能發生變數衝突的問題。另外使用靜態包含如果包含的檔案發生了變化的話,所有包含它的 servlet都要重新編譯更新,這是一個很大的代價。通常情況下使用動態包含比較多。
3,taglib指令
該指令的作用是在當前 jsp頁面中【引入一些特殊的標籤庫】 .
比如 jstl標籤庫、 struts2 標籤庫等。
jsp的動作元素
在 jsp檔案中,我們之前嵌入的 java 程式碼和標籤配合出現,整體風格比較亂,不利用改動與維護,且程式碼量過於龐大。
把常見的一些 java程式碼進行封裝,就得到了 jsp 中的動作標籤。
注意: jsp中儘可能不要出現 java 程式碼。
Jsp和 servlet 的聯絡:
jsp完全可以實現 servlet 的功能,但實際開發裡面並不單獨使用一種,還是需要配合使用。
JSP和 Servlet 分工不同:
Servlet用來接收資料,頁面跳轉;
jsp用來動態顯示頁面內容。