JSP語言基礎

文章內容

1.JSP語言原理
2.JSP基礎指令和動作
3.JSP內置對象
4.JSP標準標籤庫JSTL、EL表達式

1.JSP語言原理

JSP作爲一種在在服務器端執行的頁面語言,它支持在頁面中嵌入Java代碼,來構建動態頁面;

然而,在本質上JSP在被請求時,Web服務器的JSP引擎會將其Java轉封裝成一個對應的Servlet,而頁面本身靜態頁面部分則通過println輸出;最終返回給用戶的依舊是處理後的html靜態文件;詳細流程見下圖;

所以,簡單來看,我們可以將JSP看成一種模板頁面,同樣通過各種指令來控制頁面生成規則,而與一般的模板頁面不同的是它可以執行Java語言塊;可以參考freemarker、velocity;

這裏寫圖片描述

Web服務器使用JSP來創建網頁的步驟:
1.客戶端向服務器發送一個HTTP請求。
2.服務器識別是對JSP網頁的請求後將其請求傳遞給Servlet引擎。
3.Servlet引擎將磁盤中的Jsp文件轉化爲Servlet類,並將所有的元素轉化爲Java代碼
4.JSP引擎將Servlet類編譯成可執行的文件並將最原始的請求發送給Servlet引擎
5.服務器通過調用Servlet引擎來執行Servlet可執行文件,Servlet會產生HTML格式的輸出內嵌在HTTP Response中並將其上傳給服務器
6.服務器將其以HTML的格式上傳到客戶端的瀏覽器中以靜態頁面的形式展現給用戶。

2.JSP基礎指令和動作

2.1.JSP指令

JSP中的三種指令標籤:

指令 描述
<%@ page … %> 定義網頁依賴屬性,比如腳本語言、error頁面、緩存需求等等
<%@ include … %> 包含其他文件
<%@ taglib … %> 引入標籤庫的定義

Page:能夠定義頁面的全局屬性,重要的是可以通過它的import和extends屬性,完勝Java類的導入和繼承;

include:文件引入(嵌入),在JSP翻譯階段引入對應的文件,在進行編譯(所以認爲是嵌入),注意和動作元素

2.1.JSP動作元素

JSP包含一些標準動作元素,當然可以通過引入第三方庫擴展動作元素的類型:

語法 描述
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頁面和文檔中使用寫入文本的模板

不同的元素的屬性不同,但有兩個是每個動作元素共同擁有的:

id:動作元素唯一ID;

scope:動作元素的生命週期,包括page(默認), request, session, 和 application,當某個對象(有ID的動作元素)的生命週期不僅僅是在當前頁面(page)時,可在其他JSP頁面通過PageContext由唯一ID來調用;

3.JSP內置對象

經典的九大內置對象:

因爲JSP最終會被轉化爲一個Servlet(HttpJspBase—>HttpServlet的子類),所以,有的對象是可以直接使用的;

具體的使用方式,可參考對應對象類型的定義和實現;

對象 描述
request HttpServletRequest類的實例
response HttpServletResponse類的實例
out JspWriter類的實例,用於把結果輸出至網頁上
session HttpSession類的實例
application ServletContext類的實例,與應用上下文有關
config ServletConfig類的實例
pageContext PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問
page 類似於Java類中的this關鍵字
Exception Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象

4.JSP標準標籤庫JSTL、EL表達式

其實,在如今MVC架構大行其道的情況下,JSTL和EL用的機會已經很少(或許是一些高級的東西我沒有接觸到),所以,在又要時再來了解一下就可以了;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章