1. 程式人生 > 實用技巧 >JSP 常用語法整理

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頁面中對應的異常物件