跳至內容

「JSP」:修訂間差異

出自Taiwan Tongues 台語維基
TaiwanTonguesApiRobot留言 | 貢獻
從 JSON 檔案批量匯入
TaiwanTonguesApiRobot留言 | 貢獻
從 JSON 檔案批量匯入
標籤手動回退
第1行: 第1行:
'''JSP'''(全稱'''J'''akarta'''S'''erver'''P'''ages,曾稱做'''J'''ava'''S'''erver'''P'''ages)是由 Sun Microsystems 公司主導建立的一種動態網頁技術標準。JSP 部署佇咧網路等服器頂懸,會當回應客戶捀傳送的請求,並且根據請求內容動態地生成 HTML、XML 抑是其他格式文件的 Web 網頁,然後轉來請求者。JSP 技術以 Java 語言成做手稿的語言,為使用者的 HTTP 求提供服務,並且會當佮侍服器上的其他 Java 程式共同處理複雜的業務需求。
'''JSP'''(全稱'''J'''akarta'''S'''erver'''P'''ages,曾稱做'''J'''ava'''S'''erver'''P'''ages)是由 Sun Microsystems 公司主導建立的一種動態網頁技術標準。JSP 部署佇咧網路等服器頂懸,會當回應客戶捀傳送的請求,並且根據請求內容動態地生成 HTML、XML 抑是其他格式文件的 Web 網頁,然後轉來予咱請求者。JSP 技術以 Java 語言成做手稿的語言,為使用者的 HTTP 求提供服務,並且會當佮侍服器上的其他 Java 程式共同處理複雜的業務需求。


JSP 將 Java 程式碼佮特定變動內容躉入到靜態的頁面中,實現以靜態頁面為模仔,動態生成其中的部份內容。JSP 引入去予人叫做「JSP 動作」的 XML 標籤,用來呼叫內建功能。另外咧,會當建立 JSP 標籤庫,然後像使用標準 HTML 抑是 XML 標籤仝款使用𪜶。標籤庫能增強功能和侍服器效能,而且無受跨平台的問題的限制。JSP 檔案咧執行的時會予其編譯器轉換做更原始的 Servlet 程式碼。JSP 編譯器會當共 JSP 檔案編譯成用 Java 程式碼寫的 Servlet,然後才由 Java 編譯器來編譯做快速執行的二進位機器碼,嘛會當直接編譯做二進位碼。
JSP 將 Java 程式碼佮特定變動內容1875入到靜態的頁面中,實現以靜態頁面為模仔,動態生成其中的部份內容。JSP 引入去予人叫做「JSP 動作」的 XML 標籤,用來呼叫內建功能。另外咧,會當建立 JSP 標籤庫,然後像使用標準 HTML 抑是 XML標籤仝款使用𪜶。標籤庫能增強功能和侍服器效能,而且無受跨平台的問題的限制。JSP 檔案咧執行的時會予其編譯器轉換做更原始的 Servlet 程式碼。JSP 編譯器會當共 JSP 檔案編譯成用 Java程式碼寫的 Servlet,然後才由 Java 編譯器來編譯做快速執行的二進位機器碼,嘛會當直接編譯做二進位碼。


==綜合==
==綜合==


JSP 對二鋪零版本開始,增加了表達式語言(EL), 以提供閣較緊較簡單的建立新標籤的方法,並且允准開發者建立 Velocity 式板仔。如舊版本代碼「` Hello , < %=request . getParameter ( " visitor " ) % > `」會當簡省做「` Hello , $ { param . visitor }”`。
JSP 對二鋪零版本開始,增加了表達式語言(EL), 以提供閣較緊較簡單的建立新標籤的方法,並且允准開發者建立 Velocity 式板仔。如舊版本代碼「` Hello , < %=request . getParameter ( " visitor " ) % > `」會當簡省做「` Hello ,$ { param . visitor }”`。


==特點==
==特點==
第13行: 第13行:
* 有良好的工具支援。
* 有良好的工具支援。
* 繼承矣 Java 語言的相對用性。
* 繼承矣 Java 語言的相對用性。
* 繼承矣 Java 的迒平台的優勢,實現「一改編寫,四界執行」。 因為支援 Java 佮其相關技術的開發平台濟,網站開發人員會當選擇佇上適合家己的系統平台頂進行 JSP 開發;無仝環境下開發的 JSP 專案,佇咧所有客戶頭頂懸攏會當順利提。
* 繼承矣 Java 的迒平台的優勢,實現「 一改編寫,四界執行」。 因為支援 Java 佮其相關技術的開發平台濟,網站開發人員會當選擇佇上適合家己的系統平台頂進行 JSP 開發;無仝環境下開發的 JSP 專案,佇咧所有客戶頭頂懸攏會當順利提。
* 頁面當中的動(控制變動內容的部份)/ 靜(內容無需要變動的部份)區域以分散但是閣有序的形式組合做伙,會當予人閣較直觀地看出頁面代碼的規个結構,嘛予設計頁面效果佮程式邏輯這二部份工課較好分離(外觀視圖佮邏輯分離)。 對而且方便分配人員並行揮各自長處,實現高效地分工合作。
*頁面當中的動(控制變動內容的部份)/ 靜(內容無需要變動的部份)區域以分散但是閣有序的形式組合做伙,會當予人閣較直觀地看出頁面代碼的規个結構,嘛予設計頁面效果佮程式邏輯這二部份工課較好分離(外觀視圖佮邏輯分離)。 對而且方便分配人員並行揮各自長處,實現高效地分工合作。
* 會當佮其他的企業級 Java 技術相配合。JSP 會當干焦專門負責頁面中的資料呈現,實現分層開發。
* 會當佮其他的企業級 Java 技術相配合。JSP 會當干焦專門負責頁面中的資料呈現,實現分層開發。


第23行: 第23行:
JSP 指令控制 JSP 編譯器按怎去生成 servlet,以下是會使用的指令:
JSP 指令控制 JSP 編譯器按怎去生成 servlet,以下是會使用的指令:


* 包含講指令 include–包含講令通知 JSP 編譯器共另外一个檔案完全包含入去當前檔案中。效果就敢若予包含檔案的內容直接予人起去到當前檔案中仝款。這个功能佮 C 預處理器所提供的足類似的。予人包含檔案的副檔名一般攏是 " jspf "(即 JSP'''Fragment''',JSP 片段):
* 包含講指令 include–包含講令通知 JSP 編譯器共另外一个檔案完全包含入去當前檔案中。效果就敢若予包含檔案的內容直接貼到當前檔案中仝款。這个功能佮 C 預處理器所提供的足類似的。予人包含檔案的副檔名一般攏是 " jspf "(即 JSP'''Fragment''',JSP 片段):


* 頁面指令 page–頁面指令有以下幾个選項:
* 頁面指令page–頁面指令有以下幾个選項:


'''注意:'''佇仝一个 JSP 檔案中干焦「import」匯入頁面指令會當予人加改使用。
'''注意:'''佇仝一个 JSP 檔案中干焦「import」匯入頁面指令會當予人加改使用。


* 標籤庫指令 taglib–標籤庫指令講欲使用的 JSP 標籤庫。該指令需要指定一个字首 prefix(和 C + + 的號名空間足類似的)佮標籤庫的描述 URI :
* 標籤庫指令 taglib–標籤庫指令講欲使用的 JSP標籤庫。該指令需要指定一个字首 prefix(和 C + + 的號名空間足類似的)佮標籤庫的描述 URI :


===JSP 指令碼元素佮變數===
===JSP 指令碼元素佮變數===
第42行: 第42行:
* request:HTTP request(請求)東西
* request:HTTP request(請求)東西
* response:HTTP response(回應)東西
* response:HTTP response(回應)東西
* session:HTTP session(侍服器捀對談)東西
* session:HTTPsession(侍服器捀對談)東西


====指令碼元素====
====指令碼元素====
第48行: 第48行:
有三个基本的指令碼元素,作用是 JAVA 代碼會當直接插入去 servlet .
有三个基本的指令碼元素,作用是 JAVA 代碼會當直接插入去 servlet .


* 一種是聲明標籤,佇咧 JAVA SERVLET 的類體內底囥一个變數的定義。靜態的資料成員嘛會當按呢定義。
* 一種是聲明標籤,佇咧 JAVA SERVLET的類體內底囥一个變數的定義。靜態的資料成員嘛會當按呢定義。




第56行: 第56行:


:
:
* 一種是表達式標籤,佇咧 JAVA SERVLET 伊的類中囥入等等的表達式,表達式注意袂當分號結尾。
*一種是表達式標籤,佇咧 JAVA SERVLET 伊的類中囥入等等的表達式,表達式注意袂當分號結尾。




第63行: 第63行:
===JSP 動作===
===JSP 動作===


JSP 動作是系列會當呼叫內建佇咧網路侍服器的功能的 XML 標籤。JSP 提供了後動作:
JSP 動作是系列會當呼叫內建佇咧網路侍服器的功能的XML 標籤。JSP 提供了後動作:


====標籤樣例====
====標籤樣例====
第82行: 第82行:
* application—該屬性佇各種狀況之下攏有效,並且永遠袂予人變做袂當參照,佮全域變數 global variable 相仝。
* application—該屬性佇各種狀況之下攏有效,並且永遠袂予人變做袂當參照,佮全域變數 global variable 相仝。


例將會用一个建立一个類別的實例,並且共該實例儲存佇咧屬性中,該屬性將佇該請求的性命周期內有效。伊會當佇所有的被包含抑是對頭頁面(上代先接收請求的頁面)斡向來的 JSP 頁之間共享。
講一个例將會用一个建立一个類別的實例,並且共該實例儲存佇咧屬性中,該屬性將佇該請求的性命周期內有效。伊會當佇所有的被包含抑是對頭頁面(上代先接收請求的頁面)斡向來的 JSP 頁之間共享。


===JSP 標籤庫===
===JSP 標籤庫===


除了 JSP 預定義動作以外,開發者閣會使使用 JSP 標籤擴充 API 添加𪜶自訂的 _ 動作 _。開發者寫一種實現一个標籤的介面佮一个標籤庫的 XML 描述檔案的 JAVA 類,這就有法度指定標籤佮實現標籤的 JAVA 類請看如下 JSP:
除了 JSP 注文義動作以外,開發者閣會使使用 JSP 標籤擴充 API 添加𪜶自訂的 _ 動作 _。開發者寫一種實現一个標籤的介面佮一个標籤庫的 XML 描述檔案的 JAVA 類,這就有法度指定標籤佮實現標籤的 JAVA 類請看如下 JSP:


JSP 編譯器共會載入去 mytaglib . tld 這乎 XML 檔案,然後會當看著標籤 _ myaction _ 由 JAVA 類 _ MyActionTag _ 實現。做標籤頭一擺佇檔案中使用的時陣,將會建立一个 MyActionTag 的實例。然後(而且逐改該標籤被使用的時陣), 當出現開始標籤的時陣,將會呼叫 doStartTag ( ) 方法,根據開始標籤的結果,來決定欲按怎處理標籤的主體。主體是講開始標籤佮結束標籤之間的文字。這乎 doStartTag ( ) 方法將會返回如下之一:
JSP 編譯器共會載入去 mytaglib . tld 這乎 XML 檔案,然後會當看著標籤 _ myaction _ 由 JAVA 類 _ MyActionTag _ 實現。做標籤頭一擺佇檔案中使用的時陣,將會建立一个 MyActionTag 的實例。然後(而且逐改該標籤被使用的時陣), 當出現開始標籤的時陣,將會呼叫 doStartTag ( ) 方法,根據開始標籤的結果,來決定欲按怎處理標籤的主體。 主體是講開始標籤佮結束標籤之間的文字。這乎 doStartTag ( ) 方法將會返回如下之一:


* SKIP \ _ BODY-標籤之間無做處理。
* SKIP \ _ BODY-標籤之間無做處理。
* EVAL \ _ BODY \ _ INCLUDE-標籤之內主體進行賦值。
* EVAL \ _ BODY \ _ INCLUDE-標籤之內主體進行賦值。
* EVAL \ _ BODY \ _ TAG-對標籤之內主體進行賦值並共結果輸出到流(儲存佇咧標籤的主體內容屬性中)。
* EVAL \ _ BODY \ _ TAG-對標籤之內主體進行賦值並共結果輸出到流(儲存佇咧標籤的主體內容屬性中)。


第97行: 第97行:
:'''注意:'''若標籤擴充 BodyTagSupport 類,做主體被執行的時會咧呼叫 doEndTag ( ) 進前呼叫 doAfterBody ( ) 方法。應該方法定佇咧實現迴箍結構。
:'''注意:'''若標籤擴充 BodyTagSupport 類,做主體被執行的時會咧呼叫 doEndTag ( ) 進前呼叫 doAfterBody ( ) 方法。應該方法定佇咧實現迴箍結構。


結束標籤出現的時陣,伊會哀叫 doEndTag ( ) 方法,法會返回如下兩做之一:
結束標籤出現的時陣,伊會哀叫 doEndTag ( ) 方法,該法會返回如下兩做之一:


* EVAL \ _ PAGE-表示 JSP 檔案的賰部份將會被執行。this indicates that the rest of the JSP file should be processed .
* EVAL \ _ PAGE-表示 JSP 檔案的賰部份將會被執行。this indicates that the rest of the JSP file should be processed .
* SKIP \ _ PAGE-表示將袂閣有閣較濟執行操作。當前 JSP 頁交出控制權。就象咧轉動作中的作用仝款。
* SKIP \ _ PAGE-表示將袂閣有閣較濟執行操作。當前 JSP 頁交出控制權。就象咧轉動作中的作用仝款。


寫真濟 myaction 標籤 tag 會有一个類似下跤例的用佇實現的類似:
寫真濟 myaction 標籤 tag 會有一个類似下跤例的用佇實現的類似:


==在地化==
==在地化==
第110行: 第110行:
==模型-視圖-控制器模式==
==模型-視圖-控制器模式==


為著欲共表現層(presentation)對請求處理(request processing)佮資料儲存(data storage)中分離開來(按呢加真利開發、查錯佮功能擴充), 昇陽公司推薦佇 JSP 檔案中使用一種叫做模型-視圖-控制器(MVC)的架構模式。按呢設計,做使用者存取網站頂的特定網址的時陣,使用者的處理請求會先對網站侍服器取得著,然後先交由網站的控制器程式來做初步處理。使用者的存取請求可能愛加種多樣,查詢資訊抑是進行資料計算攏是捷看的網站的業務。控制器程式會初步判斷使用者呼請求的種類,然後共使用者請求轉發予佮特定業務對應的 Servlet 程式抑是另外一个獨立的 JSP 檔案進行業務處理。做請求處理了後,閣過一个專門負責輸出資訊的 JSP 頁以清楚、美觀的方式向使用者的瀏覽器輸出結果。我簡來講,先由控制器攔截使用者請求並做初步判斷,才由業務處理程式存取資料(對資料庫內底存取)佮處理業務,最後由視圖組件生成結果頁面並行送結果予使用者。其中 JSP 一般用做展示輸出結果,會當用展示經過 Servlet 查詢抑是處理了後的結果;嘛會當用一个 JSP 檔案處理業務邏輯,閣用另外一个 JSP 檔案展示結果。揤功能做這款的檔案拆分(所以講足由一个泛浡的 JSP 頁面包攬所有功能)是為著便於團隊分工。MVC 本身是一種由來已經久的設計思想,是因為 JSP 的技術只是實現 MVC 架構的流行方案之一。Struts 和 Spring 框架等幾若種流行的網站建設框攏是因為 MVC 模式設計的。
為著欲共表現層(presentation)對請求處理(request processing)佮資料儲存(data storage)中分離開來(按呢加真利開發、查錯佮功能擴充), 昇陽公司推薦佇 JSP 檔案中使用一種叫做模型-視圖-控制器(MVC)的架構模式。按呢設計,做使用者存取網站頂的特定網址的時陣,使用者的處理請求會先對網站侍服器取得著,然後先交由網站的控制器程式來做初步處理。使用者的存取請求可能愛加種多樣,如查詢資訊抑是進行資料計算攏是捷看的網站的業務。控制器程式會初步判斷使用者呼請求的種類,然後共使用者請求轉發予佮特定業務對應的 Servlet 程式抑是另外一个獨立的 JSP 檔案進行業務處理。做請求處理了後,閣過一个專門負責輸出資訊的 JSP 頁以清楚、美觀的方式向使用者的瀏覽器輸出結果。我簡來講,先由控制器攔截使用者請求並做初步判斷,才由業務處理程式存取資料(對資料庫內底存取)佮處理業務,最後由視圖組件生成結果頁面並行送結果予使用者。其中 JSP 一般用做展示輸出結果,會當用展示經過 Servlet 查詢抑是處理了後的結果;嘛會當用一个 JSP 檔案處理業務邏輯,閣用另外一个 JSP 檔案展示結果。揤功能做這款的檔案拆分( 所以講足由一个泛浡的 JSP 頁面包攬所有功能)是為著便於團隊分工。MVC 本身是一種由來已經久的設計思想,是因為 JSP 的技術只是實現 MVC 架構的流行方案之一。Struts 和 Spring 框架等幾若種流行的網站建設框攏是因為 MVC 模式設計的。


==JSP 和 Servlets==
==JSP 和 Servlets==


對架構頂懸講,JSP 會當予人看做是對 Servlets 進階提煉而成做 JAVA Servlet 二嬸一 API 的擴充來應用。Servlets 和 JSP 上早嘛是攏由 Sun Microsystems(日頭公司)開發的。對 JSP 一鋪二版本以來,JSP 因為 Java Community Process(有人咧譯做:Java 社群組織)開發模式下。JSR 抹五十三規定矣 JSP 一孵二和 Servlet 二鋪四的規範,JSR 抹一百五十二規定矣 JSP 二鋪零的規範。二空空六年五月,JSP 二嬸一的規範作為 Java EE 無五的一部份,佇咧 JSR 鋪排兩百四十五中發布。
對架構頂懸講,JSP 會當予人看做是對 Servlets 進階提煉而成做 JAVA Servlet 二嬸一API 的擴充來應用。Servlets 和 JSP 上早嘛是攏由 Sun Microsystems(日頭公司)開發的。對 JSP 一鋪二版本以來,JSP 因為 Java Community Process(有人咧譯做:Java 社群組織)開發模式下。JSR 抹五十三規定矣 JSP 一孵二和 Servlet 二鋪四的規範,JSR 抹一百五十二規定矣 JSP 二鋪零的規範。二空空六年五月,JSP二嬸一的規範作為 Java EE 無五的一部份,佇咧 JSR 鋪排兩百四十五中發布。


靜態資料佇輸入檔案內底的內容佮輸出予 HTTP 回應的內容完全一致。現此時,該 JSP 輸入檔案會是一个無內嵌 JAVA 抑是動作的 HTML 頁面。而且,客戶捀每改請求攏會得著仝款的回應內容。
靜態資料佇輸入檔案內底的內容佮輸出予 HTTP 回應的內容完全一致。現此時,該 JSP 輸入檔案會是一个無內嵌 JAVA抑是動作的 HTML 頁面。而且,客戶捀每改請求攏會得著仝款的回應內容。


===看仿===
===看仿===
第144行: 第144行:
===冊目===
===冊目===


* Kin-man Chung . JavaServer Pages Specification ( pdf ) 二嬸三 . 甲骨文公司 . 二千空一十三 [二空一八年三月十六] .
* Kin-manChung . JavaServer Pages Specification ( pdf ) 二嬸三 . 甲骨文公司 . 二千空一十三 [二空一八年三月十六] .
* Hans Bergsten . JavaServer Pages 三 . Sebastopol , California : O'Reilly . 兩千空三 [二千空六孵七孵二十] . ISBN 空白五百九十六鋪五百六十三鋪六 .(原始內容存檔佇兩千空一十九九分十七).
* Hans Bergsten . JavaServer Pages 三 . Sebastopol , California : O'Reilly . 兩千空三 [二千空六孵七孵二十] . ISBN 空白五百九十六鋪五百六十三鋪六 .(原始內容存檔佇咧二十九十七).




第154行: 第154行:
* JSR 兩百四十五 ( JSP 二嬸一 )
* JSR 兩百四十五 ( JSP 二嬸一 )
* JSR 一仔五 ( JSP 二孵空 )
* JSR 一仔五 ( JSP 二孵空 )
* JSR 五十三 ( JSP 一孵二 )
*JSR 五十三 ( JSP 一孵二 )


[[分類: 待校正]]
[[分類: 待校正]]

於 2025年8月21日 (四) 15:42 的修訂

JSP(全稱JakartaServerPages,曾稱做JavaServerPages)是由 Sun Microsystems 公司主導建立的一種動態網頁技術標準。JSP 部署佇咧網路等服器頂懸,會當回應客戶捀傳送的請求,並且根據請求內容動態地生成 HTML、XML 抑是其他格式文件的 Web 網頁,然後轉來予咱請求者。JSP 技術以 Java 語言成做手稿的語言,為使用者的 HTTP 求提供服務,並且會當佮侍服器上的其他 Java 程式共同處理複雜的業務需求。

JSP 將 Java 程式碼佮特定變動內容1875入到靜態的頁面中,實現以靜態頁面為模仔,動態生成其中的部份內容。JSP 引入去予人叫做「JSP 動作」的 XML 標籤,用來呼叫內建功能。另外咧,會當建立 JSP 標籤庫,然後像使用標準 HTML 抑是 XML標籤仝款使用𪜶。標籤庫能增強功能和侍服器效能,而且無受跨平台的問題的限制。JSP 檔案咧執行的時會予其編譯器轉換做更原始的 Servlet 程式碼。JSP 編譯器會當共 JSP 檔案編譯成用 Java程式碼寫的 Servlet,然後才由 Java 編譯器來編譯做快速執行的二進位機器碼,嘛會當直接編譯做二進位碼。

綜合

JSP 對二鋪零版本開始,增加了表達式語言(EL), 以提供閣較緊較簡單的建立新標籤的方法,並且允准開發者建立 Velocity 式板仔。如舊版本代碼「` Hello , < %=request . getParameter ( " visitor " ) % > `」會當簡省做「` Hello ,$ { param . visitor }”`。

特點

  • 會當一改我模仔的方式簡單、高效地添加動態網頁的內容。
  • 通利用 JavaBean 佮標籤庫技術復用捷用的功能代碼(設計好的組件容易實現重複利用,減少愛重複勞動)。 標籤庫毋但有紮有通用的內建標籤(JSTL ),而且支援可延伸功能的自訂標籤。
  • 有良好的工具支援。
  • 繼承矣 Java 語言的相對用性。
  • 繼承矣 Java 的迒平台的優勢,實現「 一改編寫,四界執行」。 因為支援 Java 佮其相關技術的開發平台濟,網站開發人員會當選擇佇上適合家己的系統平台頂進行 JSP 開發;無仝環境下開發的 JSP 專案,佇咧所有客戶頭頂懸攏會當順利提。
  • 頁面當中的動(控制變動內容的部份)/ 靜(內容無需要變動的部份)區域以分散但是閣有序的形式組合做伙,會當予人閣較直觀地看出頁面代碼的規个結構,嘛予設計頁面效果佮程式邏輯這二部份工課較好分離(外觀視圖佮邏輯分離)。 對而且方便分配人員並行揮各自長處,實現高效地分工合作。
  • 會當佮其他的企業級 Java 技術相配合。JSP 會當干焦專門負責頁面中的資料呈現,實現分層開發。

有包含內容

JSP 指令

JSP 指令控制 JSP 編譯器按怎去生成 servlet,以下是會使用的指令:

  • 包含講指令 include–包含講令通知 JSP 編譯器共另外一个檔案完全包含入去當前檔案中。效果就敢若予人包含檔案的內容直接貼上到當前檔案中仝款。這个功能佮 C 預處理器所提供的足類似的。予人包含檔案的副檔名一般攏是 " jspf "(即 JSPFragment,JSP 片段):
  • 頁面指令page–頁面指令有以下幾个選項:

注意:佇仝一个 JSP 檔案中干焦「import」匯入頁面指令會當予人加改使用。

  • 標籤庫指令 taglib–標籤庫指令講欲使用的 JSP標籤庫。該指令需要指定一个字首 prefix(和 C + + 的號名空間足類似的)佮標籤庫的描述 URI :

JSP 指令碼元素佮變數

標準指令碼變數

以下是永遠會當用的指令碼變數:

  • out:JSPWriter,用來寫入回應流的資料
  • page:servlet 自身
  • pageContext:一个 PageContext 實例包括和規个頁面相聯絡的資料,一个予定的 HTML 頁面會當佇咧幾个 JSP 之間傳遞。
  • request:HTTP request(請求)東西
  • response:HTTP response(回應)東西
  • session:HTTPsession(侍服器捀對談)東西

指令碼元素

有三个基本的指令碼元素,作用是 JAVA 代碼會當直接插入去 servlet .

  • 一種是聲明標籤,佇咧 JAVA SERVLET的類體內底囥一个變數的定義。靜態的資料成員嘛會當按呢定義。


  • 一種是指令碼標籤,佇咧 JAVA SERVLET 的類的 \ _ jspService ( ) 方法內底囥入所包含的語句。


  • 一種是表達式標籤,佇咧 JAVA SERVLET 伊的類中囥入等等的表達式,表達式注意袂當分號結尾。


JSP 動作

JSP 動作是系列會當呼叫內建佇咧網路侍服器的功能的XML 標籤。JSP 提供了後動作:

標籤樣例

jsp : include
jsp : forward

佇本例中,請求傳達到 " subpage . jsp ",而且請求的處理權袂閣倒轉去進前者。

jsp : useBean

scope 屬性會當是 request , page , session or application,伊有以下用意:

  • request—該屬性咧請求的性命周期內有效,一旦會當請求被所有的 JSP 頁處理了後,按呢遮爾該屬性就袂當參照。
  • page—屬性只是做前頁內底的效果。
  • session—該屬性佇咧使用者對談的性命周期內有效。
  • application—該屬性佇各種狀況之下攏有效,並且永遠袂予人變做袂當參照,佮全域變數 global variable 相仝。

欲講一个例將會用一个建立一个類別的實例,並且共該實例儲存佇咧屬性中,該屬性將佇該請求的性命周期內有效。伊會當佇所有的被包含抑是對頭頁面(上代先接收請求的頁面)斡向來的 JSP 頁之間共享。

JSP 標籤庫

除了 JSP 注文義動作以外,開發者閣會使使用 JSP 標籤擴充 API 添加𪜶自訂的 _ 動作 _。開發者寫一種實現一个標籤的介面佮一个標籤庫的 XML 描述檔案的 JAVA 類,這就有法度指定標籤佮實現標籤的 JAVA 類請看如下 JSP:

JSP 編譯器共會載入去 mytaglib . tld 這乎 XML 檔案,然後會當看著標籤 _ myaction _ 由 JAVA 類 _ MyActionTag _ 實現。做標籤頭一擺佇咧檔案中使用的時陣,將會建立一个 MyActionTag 的實例。然後(而且逐改該標籤被使用的時陣), 當出現開始標籤的時陣,將會呼叫 doStartTag ( ) 方法,根據開始標籤的結果,來決定欲按怎處理標籤的主體。 主體是講開始標籤佮結束標籤之間的文字。這乎 doStartTag ( ) 方法將會返回如下之一:

  • SKIP \ _ BODY-標籤之間無做處理。
  • EVAL \ _ BODY \ _ INCLUDE-著標籤之內主體進行賦值。
  • EVAL \ _ BODY \ _ TAG-對標籤之內主體進行賦值並共結果輸出到流(儲存佇咧標籤的主體內容屬性中)。


注意:若標籤擴充 BodyTagSupport 類,做主體被執行的時會咧呼叫 doEndTag ( ) 進前呼叫 doAfterBody ( ) 方法。應該方法定佇咧實現迴箍結構。

結束標籤出現的時陣,伊會哀叫 doEndTag ( ) 方法,該辦法會返回如下兩做之一:

  • EVAL \ _ PAGE-表示 JSP 檔案的賰部份將會被執行。this indicates that the rest of the JSP file should be processed .
  • SKIP \ _ PAGE-表示將袂閣有閣較濟執行操作。當前 JSP 頁交出控制權。就象咧轉動作中的作用仝款。

寫真濟 myaction 標籤 tag 會有一个類似下跤例子的用佇實現的類似:

在地化

JSP 的在地化是通過佮 JAVA 應用程式相仝的方式完成的,就算是用資源包。

模型-視圖-控制器模式

為著欲共表現層(presentation)對請求處理(request processing)佮資料儲存(data storage)中分離開來(按呢加真利開發、查錯佮功能擴充), 昇陽公司推薦佇 JSP 檔案中使用一種叫做模型-視圖-控制器(MVC)的架構模式。按呢設計,做使用者存取網站頂的特定網址的時陣,使用者的處理請求會先對網站侍服器取得著,然後先交由網站的控制器程式來做初步處理。使用者的存取請求可能愛加種多樣,比如查詢資訊抑是進行資訊料計算攏是捷看的網站的業務。控制器程式會初步判斷使用者呼請求的種類,然後共使用者請求轉發予佮特定業務對應的 Servlet 程式抑是另外一个獨立的 JSP 檔案進行業務處理。做請求處理了後,閣迵過一个專門負責輸出資訊的 JSP 頁以清楚、美觀的方式向使用者的瀏覽器輸出結果。我簡來講,先由控制器攔截使用者請求並做初步判斷,才由業務處理程式存取資料(對資料庫內底存取)佮處理業務,最後由視圖組件生成結果頁面並行送結果予使用者。其中 JSP 一般用做展示輸出結果,會當用展示經過 Servlet 查詢抑是處理了後的結果;嘛會當用一个 JSP 檔案處理業務邏輯,閣用另外一个 JSP 檔案展示結果。揤功能做這款的檔案拆分( 所以講足由一个泛浡的 JSP 頁面包攬所有功能)是為著便於團隊分工。MVC 本身是一種由來已經久的設計思想,是因為 JSP 的技術只是實現 MVC 架構的流行方案之一。Struts 和 Spring 框架等幾若種流行的網站建設框殼攏是因為 MVC 模式設計的。

JSP 和 Servlets

對架構頂懸講,JSP 會當予人看做是對 Servlets 進階提煉而成做 JAVA Servlet 二嬸一API 的擴充來應用。Servlets 和 JSP 上早嘛是攏由 Sun Microsystems(日頭公司)開發的。對 JSP 一鋪二版本以來,JSP 因為 Java Community Process(有人咧譯做:Java 社群組織)開發模式下。JSR 抹五十三規定矣 JSP 一孵二和 Servlet 二鋪四的規範,JSR 抹一百五十二規定矣 JSP 二鋪零的規範。二空空六年五月,JSP二嬸一的規範作為 Java EE 無五的一部份,佇咧 JSR 鋪排兩百四十五中發布。

靜態資料佇輸入檔案內底的內容佮輸出予 HTTP 回應的內容完全一致。現此時,該 JSP 輸入檔案會是一个無內嵌 JAVA抑是動作的 HTML 頁面。而且,客戶捀每改請求攏會得著仝款的回應內容。

看仿

不管 JSP 編譯器是生成 SERVLET 的 JAVA 原始碼,抑是直接發布二進位碼,了解一下 JSP 編譯器是按怎共檔案轉做一个 JAVA SERVLET,攏是足有幫助的。比如講,輸入看覓一下 JSP 佮伊最後生成的 JAVA SERVLET:

Input JSP

Resulting servlet

參見

  • JSTL
  • Java 企業版
  • JavaServer Faces
  • Java Servlet
  • SSJS
  • WAR ( file format )
  • EAR ( file format )
  • JAR ( file format )
  • Tomcat 侍服器

參考資料

文內參照

冊目

  • Kin-manChung . JavaServer Pages Specification ( pdf ) 二嬸三 . 甲骨文公司 . 二千空一十三 [二空一八年三月十六] .
  • Hans Bergsten . JavaServer Pages 三 . Sebastopol , California : O'Reilly . 兩千空三 [二千空六孵七孵二十] . ISBN 空白五百九十六鋪五百六十三鋪六 .(原始內容存檔佇咧二十九石十七).


外部連結

  • Sun's JSP product description
  • JSR 兩百四十五 ( JSP 二嬸一 )
  • JSR 一仔五 ( JSP 二孵空 )
  • JSR 五十三 ( JSP 一孵二 )