JSP 常用語法整理
JSP是什麼
JSP與Servlet
JSP 基於Java Servlet API,因此,JSP擁有各種強大的企業級Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP頁面可以與處理業務邏輯的 Servlet 一起使用,這種模式被Java servlet 模板引擎所支援。
與純 Servlet 相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println語句。
JSP的結構
JSP 容器與 Web 伺服器協同合作,為JSP的正常執行提供必要的執行環境和其他服務,並且能夠正確識別專屬於 JSP 網頁的特殊元素。
JSP的生命週期
編譯階段: servlet容器編譯servlet原始檔,生成servlet類 當瀏覽器請求JSP頁面時,JSP引擎會首先去檢查是否需要編譯這個檔案。如果這個檔案沒有被編譯過,或者在上次編譯後被更改過,則編譯這個JSP檔案。 編譯的過程包括三個步驟: 1.解析JSP檔案。 2.將JSP檔案轉為servlet。 3.編譯servlet。 初始化階段: 載入與JSP對應的servlet類,建立其例項,並呼叫它的初始化方法 容器載入JSP檔案後,它會在為請求提供任何服務前呼叫jspInit()方法。如果您需要執行自定義的JSP初始化任務,複寫jspInit()方法就行了 執行階段: 呼叫與JSP對應的servlet例項的服務方法 這一階段描述了JSP生命週期中一切與請求相關的互動行為,直到被銷燬。 當JSP網頁完成初始化後,JSP引擎將會呼叫_jspService()方法。 _jspService()方法需要一個HttpServletRequest物件和一個HttpServletResponse物件作為它的引數 銷燬階段: 呼叫與JSP對應的servlet例項的銷燬方法,然後銷燬servlet例項 JSP生命週期的銷燬階段描述了當一個JSP網頁從容器中被移除時所發生的一切。 jspDestroy()方法在JSP中等價於servlet中的銷燬方法。當您需要執行任何清理工作時複寫jspDestroy()方法,比如釋放資料庫連線或者關閉資料夾等等。
基本語法概述
指令碼程式
可以包含任意量的Java語句、變數、方法或表示式,只要它們在指令碼語言中是有效的
任何文字、HTML標籤、JSP元素必須寫在指令碼程式的外面
<% 程式碼片段 %>
或者:
<jsp:scriptlet>
程式碼片段
</jsp:scriptlet>
中文編碼問題
如果我們要在頁面正常顯示中文,我們需要在 JSP 檔案頭部新增以下程式碼:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
JSP宣告
一個宣告語句可以宣告一個或多個變數、方法,供後面的Java程式碼使用。在JSP檔案中,您必須先宣告這些變數和方法然後才能使用它們。
<%! declaration; [ declaration; ]+ ... %>
或者:
<jsp:declaration>
程式碼片段
</jsp:declaration>
例項:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
JSP表示式
一個JSP表示式中包含的指令碼語言表示式,先被轉化成String,然後插入到表示式出現的地方。
由於表示式的值會被轉化成String,所以您可以在一個文字行中使用表示式而不用去管它是否是HTML標籤。
表示式元素中可以包含任何符合Java語言規範的表示式,但是不能使用分號來結束表示式。
<%= 表示式 %>
或者:
<jsp:expression>
表示式
</jsp:expression>
JSP註釋
<%-- 該部分註釋在網頁中不會被顯示--%>
不同情況下使用註釋的語法規則:
<%-- 註釋 --%> JSP註釋,註釋內容不會被髮送至瀏覽器甚至不會被編譯
<!-- 註釋 --> HTML註釋,通過瀏覽器檢視網頁原始碼時可以看見註釋內容
<\% 代表靜態 <%常量
%\> 代表靜態 %> 常量
\' 在屬性中使用的單引號
\" 在屬性中使用的雙引號
JSP指令
JSP指令用來設定與整個JSP頁面相關的屬性。
<%@ directive attribute="value" %>
幾種不同種類的指令標籤:
<%@ page ... %> 定義頁面的依賴屬性,比如指令碼語言、error頁面、快取需求等等
<%@ include ... %> 包含其他檔案
<%@ taglib ... %> 引入標籤庫的定義,可以是自定義標籤
JSP行為
JSP行為標籤使用XML語法結構來控制servlet引擎。它能夠動態插入一個檔案,重用JavaBean元件,引導使用者去另一個頁面,為Java外掛產生相關的HTML等等。
行為標籤只有一種語法格式,它嚴格遵守XML標準:
<jsp:action_name attribute="value" />
行為標籤基本上是一些預先就定義好的函式,下表羅列出了一些可用的JSP行為標籤:
jsp:include 用於在當前頁面中包含靜態或動態資源
jsp:useBean 尋找和初始化一個JavaBean元件
jsp:setProperty 設定 JavaBean元件的值
jsp:getProperty 將 JavaBean元件的值插入到 output中
jsp:forward 從一個JSP檔案向另一個檔案傳遞一個包含使用者請求的request物件
jsp:plugin 用於在生成的HTML頁面中包含Applet和JavaBean物件
jsp:element 動態建立一個XML元素
jsp:attribute 定義動態建立的XML元素的屬性
jsp:body 定義動態建立的XML元素的主體
jsp:text 用於封裝模板資料
JSP隱含物件
JSP支援九個自動定義的變數,江湖人稱隱含物件。這九個隱含物件的簡介見下表:
request HttpServletRequest類的例項
response HttpServletResponse類的例項
out PrintWriter類的例項,用於把結果輸出至網頁上
session HttpSession類的例項
application ServletContext類的例項,與應用上下文有關
config ServletConfig類的例項
pageContext PageContext類的例項,提供對JSP頁面所有物件以及名稱空間的訪問
page 類似於Java類中的this關鍵字
Exception Exception類的物件,代表發生錯誤的JSP頁面中對應的異常物件