程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 深入理解JSP

深入理解JSP

編輯:關於JSP

深入理解JSP


JSP(Java server page)是Java EE規范最基本成員,他是Java Web開發的重點知識,雖然我們一直在用,但其原理知之甚少。今天重點研究一些JSP核心內容以及其工作原理。

JSP和Servlet的本質是一樣的,因為JSP最終需要編譯成Servlet才能運行,換句話說JSP是生成Servler的草稿文件。

JSP比較簡單,就是在HTML中嵌入Java代碼,或者使用JSP標簽,包括使用用戶自定義標簽,從而可以動態的提供內容。早起JSP應用比較廣泛,一個web應用可以全部由JSP頁面組成,只需要少量的JavaBean即可,但是這樣導致了JSP職責過於復雜,這是Java EE標准的出現無疑是雪中送炭,因此JSP慢慢發展成單一的表現技術,不再承擔業務邏輯組件以及持久層組件的責任。

JSP基本原理

JSP的本質是servlet,當用戶指定servlet發送請求時,servlet利用輸出流動態生成HTML頁面。由於包含大量的HTML標簽。靜態文本等格式導致servlet的開發效率極低,所有的表現邏輯,包括布局、色彩及圖像等,都必須耦合在Java代碼中,起靜態的部分無需Java程序控制,只有那些需要從數據庫讀取或者需要動態生成的頁面內容才使用Java腳本控制。

因此JSP頁面內容有以下兩部分組成

靜態部分:HTML標簽

動態部分:Java腳本

JSP的4種基本語法

JSP注釋

JSP注釋用於標注程序開發過程中的開發提示,不會輸出到客戶端。<%-- 注釋內容 --%>

JSP聲明

JSP聲明用於聲明變量和方法,在JSP中聲明方法看起來很特別,似乎不需要定義類就可以直接定義方法,方法似乎可以脫離類獨立存在。實際上JSP聲明會轉換成servlet的成員變量或成員方法,因此JSP聲明仍然符合Java語法。<%! 聲明部分 %>

輸出JSP表達式

<%=表達式 %>

JSP腳本

以前JSP應用非常廣泛,通俗點講任何可以執行的Java代碼都可以通過JSP腳本嵌入到HTML頁面中。<% Java腳本 %>

JSP的3個預編譯指令

page指令

該指令是針對當前頁面的指令,通常位於JSP頁面的頂端,一個JSP頁面可以使用多條page指令。

include指令

用於指定包含另一個頁面的指令,使用include指令可以將一個外部文件嵌入到當前JSP文件中,同時解析這個頁面中的JSP。include即可以包含靜態文本,又可以包含動態JSP頁面。

taglib指令

用於定義和訪問自定義標簽。

JSP的7個動作指令

forword指令

用於將頁面響應轉發到另一個頁面,既可以轉發到靜態的HTML,也可以轉發到動態的JSP頁面,或者轉發到容器中的servlet。

param指令

用於執行參數,必須與其支持參數的標簽一起使用。本身不能單獨使用,因為單獨的param指令沒有實際意義。

include指令

用於動態引入一個JSP頁面,它是一個動態include指令,也用於包含某個頁面,不會導入被include頁面的編譯指令,僅僅將被導入頁面的body內容插入本頁面。

plugin指令

用於下載JavaBean或applet到客戶端執行。

useBean指令

創建一個JavaBean的實例

setProperty指令

設置JavaBean實例的屬性值

getProperty指令

輸出JavaBean實例的屬性值

JSP腳本中的9個內置對象

application對象

javax.servlet.ServletContext的實例,該實例代表JSP所屬的web應用本身,可以用於JSP頁面,或者servlet之間交換信息。

config對象

javax.servlet.ServletConfig的實例,該實例代表JSP的配置信息

exception對象

java.lang.Throwable的實例,該實例代表其他頁面中的異常和錯誤。

out對象

javax.servlet.jsp.JspWriter的實例,該實例代表JSP的輸出流,用於輸出內容,形成HTML頁面。

page對象

代表頁面本身,通常沒有太大用處。

pageContext對象

javax.servlet.jsp.PageContext的實例。該對象代表JSP頁面的上下文,使用該對象可以訪問頁面中的共享數據。

request對象

javax.servlet.http.HttpServletRequest的實例,該對象封裝了一次請求,客戶端請求的參數都被封裝在這個對象裡。

response對象

javax.servlet.http.HttpServletResponse的實例,代表服務器對客戶端的響應,通常很少使用該對象直接響應,而是使用out對象,除非需要生成非字符響應。

session對象

javax.servlet.http.HttpSession的實例,該對象代表一次會話,當客戶端浏覽器與站點連接時,會話開始,當客戶端關閉浏覽器是會話結束。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved