jsp

JSP

什麼是JSP?

JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。JSP這門技術的最大的特點在於,寫jsp就像在寫html,但它相比html而言,html只能爲用戶提供靜態內容,而Jsp技術允許在頁面中嵌套java代碼,爲用戶提供動態數據

JSP最佳實踐


不管是JSP還是Servlet,雖然都可以用於開發動態web資源。但由於這2門技術各自的特點,在長期的軟件實踐中,人們逐漸把servlet作爲web應用中的控制器組件來使用,而把JSP技術作爲數據顯示模板來使用。

其原因爲,程序的數據通常要美化後再輸出:

jsp既用java代碼產生動態數據,又做美化會導致頁面難以維護。

servlet既產生數據,又在裏面嵌套html代碼美化數據,同樣也會導致程序可讀性差,難以維護。

因此最好的辦法就是根據這兩門技術的特點,讓它們各自負責各的,servlet只負責響應請求產生數據,並把數據通過轉發技術帶給jsp,數據的顯示jsp來做。

JSP語法:

1 JSP模版元素

JSP頁面中的HTML內容稱之爲JSP模版元素。

JSP模版元素定義了網頁的基本骨架,即定義了頁面的結構和外觀。

2 JSP表達式

JSP腳本表達式(expression)用於將程序數據輸出到客戶端

語法:<%= 變量或表達式 %>

舉例:當前時間:<%= new java.util.Date() %>

JSP引擎在翻譯腳本表達式時,會將程序數據轉成字符串,然後在相應位置用out.print(� 將數據輸給客戶端。

JSP腳本表達式中的變量或表達式後面不能有分號(;

3 JSP腳本片斷

JSP腳本片斷(scriptlet)用於在JSP頁面中編寫多行Java代碼。語法:

<%

多行java代碼

%>

注意:JSP腳本片斷中只能出現java代碼,不能出現其它模板元素, JSP引擎在翻譯JSP頁面中,會將JSP腳本片斷中的Java代碼將被原封不動地放到Servlet_jspService方法中。

JSP腳本片斷中的Java代碼必須嚴格遵循Java語法,例如,每執行語句後面必須用分號(;)結束。


4 JSP註釋

SP註釋的格式:

<%-- 註釋信息 --%>

JSP引擎在將JSP頁面翻譯成Servlet程序時,忽略JSP頁面中被註釋的內容。


5 JSP指令

JSP指令(directive)是爲JSP引擎而設計的,它們並不直接產生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其餘部分。在JSP 2.0規範中共定義了三個指令:

page指令

Include指令

taglib指令

JSP程序存在有與Servlet程序完全相同的中文亂碼問題

輸出響應正文時出現的中文亂碼問題

讀取瀏覽器傳遞的參數信息時出現的中文亂碼問題

使用page指令解決JSP中文亂碼



JSP引擎將JSP頁面翻譯成Servlet源文件時也可能導致中文亂碼問題

JSP引擎將JSP源文件翻譯成的Servlet源文件默認採用UTF-8編碼,而JSP開發人員可以採用各種字符集編碼來編寫JSP源文件,因此,JSP引擎將JSP源文件翻譯成Servlet源文件時,需要進行字符編碼轉換。

如果JSP文件中沒有說明它採用的字符集編碼,JSP引擎將把它當作默認的ISO8859-1字符集編碼處理。

如何解決JSP引擎翻譯JSP頁面時的中文亂碼問題

通過page指令的contentType屬性說明JSP源文件的字符集編碼

page指令的pageEncoding屬性說明JSP源文件的字符集編碼

include指令用於引入其它JSP頁面,如果使用include指令引入了其它JSP頁面,那麼JSP引擎將把這兩個JSP翻譯成一個servlet。所以include指令引入通常也稱之爲靜態引入。

語法:

<%@ include file="relativeURL"%>

其中的file屬性用於指定被引入文件的路徑。路徑以/開頭,表示代表當前web應用。

細節:

被引入的文件必須遵循JSP語法。

被引入的文件可以使用任意的擴展名,即使其擴展名是htmlJSP引擎也會按照處理jsp頁面的方式處理它裏面的內容,爲了見明知意,JSP規範建議使用.jspfJSP fragments)作爲靜態引入文件的擴展名。

由於使用include指令將會涉及到2JSP頁面,並會把2JSP翻譯成一個servlet,所以這2JSP頁面的指令不能衝突(除了pageEncoding和導包除外)。




JSP標籤

JSP內置對象

如何查找JSP頁面中的錯誤



發佈了59 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章