標籤:cat 啟用 not for exception 介面 執行個體 異常處理 empty
一、jsp簡介
JSP(全稱Java Server Pages)是由 Sun Microsystems 公司倡導和許多公司參與共同建立的一種使軟體開發人員可以響應用戶端請求,而動態產生 HTML、XML 或其他格式文檔的Web網頁的技術標準。
JSP 技術是以 Java 語言作為指令碼語言的,JSP 網頁為整個伺服器端的 Java 庫單元提供了一個介面來服務於HTTP的應用程式。
二、JSP 生命週期
理解JSP底層功能的關鍵就是去理解它們所遵守的生命週期。
JSP生命週期就是從建立到銷毀的整個過程,類似於servlet生命週期,區別在於JSP生命週期還包括將JSP檔案編譯成servlet。
以下是JSP生命週期中所走過的幾個階段:
編譯階段:載入與JSP對應的servlet類,建立其執行個體,並調用它的初始化方法
初始化階段:調用與JSP對應的servlet執行個體的服務方法
執行階段:調用與JSP對應的servlet執行個體的銷毀方法,然後銷毀servlet執行個體
銷毀階段:servlet容器編譯servlet源檔案,產生servlet類
三、jsp文法
(1)指令碼程式文法
<% %>
或
<jsp:scriptlet>
</jsp:scriptlet>
(2)聲明文法
<%! %>
(3)運算式文法
<%= %>
(4)注釋文法
<%-- --%>
四、指令
(1)page
A、屬性
buffer 指定out對象使用緩衝區的大小
autoFlush 控制out對象的 緩衝區
contentType 指定當前JSP頁面的MIME類型和字元編碼
errorPage 指定當JSP頁面發生異常時需要轉向的錯誤處理頁面
isErrorPage 指定當前頁面是否可以作為另一個JSP頁面的錯誤處理頁面
extends 指定servlet從哪一個類繼承
import 匯入要使用的Java類
info 定義JSP頁面的描述資訊
isThreadSafe 指定對JSP頁面的訪問是否為安全執行緒
language 定義JSP頁面所用的指令碼語言,預設是Java
session 指定JSP頁面是否使用session
isELIgnored 指定是否執行EL運算式
isScriptingEnabled 確定指令碼元素能否被使用
B、Page指令的文法格式:
<%@ page attribute="value" %>
等價的XML格式:
<jsp:directive.page attribute="value" />
(2)include
<%@ include file="檔案相對 url 地址" %>
include 指令中的檔案名稱實際上是一個相對的 URL 地址。如果您沒有給檔案關聯一個路徑,JSP編譯器預設在當前路徑下尋找。
等價的XML文法:
<jsp:directive.include file="檔案相對 url 地址" />
(3)taglib
JSP API允許使用者自訂標籤,一個自訂標籤庫就是自訂標籤的集合。
Taglib指令引入一個自訂標籤集合的定義,包括庫路徑、自訂標籤。
Taglib指令的文法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri屬性確定標籤庫的位置,prefix屬性指定標籤庫的首碼。
等價的XML文法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
五、動作元素
jsp:include 在頁面被請求的時候引入一個檔案。
jsp:useBean 尋找或者執行個體化一個JavaBean。
jsp:setProperty 設定JavaBean的屬性。
jsp:getProperty 輸出某個JavaBean的屬性。
jsp:forward 把請求轉到一個新的頁面。
jsp:plugin 根據瀏覽器類型為Java外掛程式產生OBJECT或EMBED標記。
jsp:element 定義動態XML元素
jsp:attribute 設定動態定義的XML元素屬性。
jsp:body 設定動態定義的XML元素內容。
jsp:text 在JSP頁面和文檔中使用寫入文本的模板
六、九大隱式對象
request HttpServletRequest類的執行個體
response HttpServletResponse類的執行個體
out JspWriter類的執行個體,用於把結果輸出至網頁上
session HttpSession類的執行個體
application ServletContext類的執行個體,與應用上下文有關
config ServletConfig類的執行個體
pageContext PageContext類的執行個體,提供對JSP頁面所有對象以及命名空間的訪問
page 類似於Java類中的this關鍵字
Exception Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象
七、 標準標籤庫(JSTL)
(1)根據JSTL標籤所提供的功能,可以將其分為5個類別
核心標籤
格式化標籤
SQL 標籤
XML 標籤
JSTL 函數
(2)配置jstl
a.web.xml聲明
<jsp-config> <taglib> <taglib-uri>http://java.sun.com/jstl/xxx</taglib-uri> <taglib-location>/WEB-INF/xxx.tld</taglib-location> </taglib> </jsp-config>
b.jsp頁面引用
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xxx" %>
八、運算式語言
(1)el運算式文法
${expr}
(2)el運算式配置
在jsp頁面聲明是否啟用el運算式
<%@ page isELIgnored ="true|false" %>
(3)el運算式操作符
. 訪問一個Bean屬性或者一個映射條目
[] 訪問一個數組或者鏈表的元素
( ) 組織一個子運算式以改變優先順序
+ 加
- 減或負
* 乘
/ or div 除
% or mod 模數
== or eq 測試是否相等
!= or ne 測試是否不等
< or lt 測試是否小於
> or gt 測試是否大於
<= or le 測試是否小於等於
>= or ge 測試是否大於等於
&& or and 測試邏輯與
|| or or 測試邏輯或
! or not 測試取反
empty 測試是否空值
(4)EL的函數
EL函數文法
${ns:func(param1, param2, ...)}
ns指的是命名空間(namespace),func指的是函數的名稱,param1指的是第一個參數,param2指的是第二個參數,以此類推。
要使用任何標籤庫中的函數,您需要將這些庫安裝在伺服器中,然後使用<taglib>標籤在JSP檔案中包含這些庫。
(5)EL隱含對象
pageScope page 範圍
requestScope request 範圍
sessionScope session 範圍
applicationScope application 範圍
param Request 對象的參數,字串
paramValues Request對象的參數,字串集合
header HTTP 資訊頭,字串
headerValues HTTP 資訊頭,字串集合
initParam 上下文初始化參數
cookie Cookie值
pageContext 當前頁面的pageContext
九、 異常處理
(1)Exception對象
exception對象是Throwable子類的一個執行個體,只在錯誤頁面中可用。下表列出了Throwable類中一些重要的方法:
- public String getMessage() 返回異常的資訊。這個資訊在Throwable建構函式中被初始化
- public ThrowablegetCause() 返回引起異常的原因,類型為Throwable對象
- public String toString() 返回類名
- public void printStackTrace() 將異常棧軌跡輸出至System.err
- public StackTraceElement [] getStackTrace() 以棧軌跡元素數組的形式返回異常棧軌跡
- public ThrowablefillInStackTrace() 使用當前棧軌跡填充Throwable對象
(2)jsp頁面聲明異常頁
<%@ page isErrorPage="true" %>
(3)jsp版面設定異常頁
<%@ page errorPage="ShowError.jsp" %>
java jsp總結