jsp2.0

Servlet有以下優點:
可移植性(Portability)、強大的功能、性能、安全性。


Servlet的生命週期:
(1)產生Servlet,加載Servlet Engine中,然後調用init()這個方法進行初始化工作。
(2)以多線程的方式處理來自Client的請求,調用Service()方法。
(3)調用destroy()來銷燬Servlet,進行垃圾收集。


JavaServer Pages技術有下列優點:
Write Once,Run Anywhere特性;搭配可衝復使用的組件;採用標籤化頁面開發;N-tier企業應用架構的支持。

jsp註釋(comments):<!-- -->在頁面中顯示註釋內容;<%-- --%>在頁面中不顯示註釋內容。

在jsp輸出特殊字符:單引號 ' 改爲 /';雙引號 " 改爲/";斜線 / 改爲 //;其實標籤<%改爲&lt;%;結束標籤 %> 改爲 %/>;

include指令表示:在jsp編譯時插入一個包含文本或代碼的文件,這個包含餓過程是靜態的,而包含的文件可以是jsp網頁、html網頁、文本文件,或是一段java程序。注意包含文件中要避免使用<html></html><body></body>,因爲這將影響在原來jsp網頁中同樣的標籤,這樣做有時會導致錯誤。所謂的靜態是指file不能爲一變量URL,例如:<% String url="hello.html"%><%@ include file="<%=url%>"%>也不可以在file所指定的文件後接任何參數,如下:<%@ include file="hello.jsp?name=browser"%>

使用<%! %>方式所聲明的變量爲全局變量,即表示:若同時n個用戶在執行此jsp網頁時,將會共享此變量。因此筆者強烈建議讀者,千萬別使用<%! %>來聲明變量。
<jsp:include>元素允許你包含動態和靜態文件,這兩種產生的結果是不盡相同的。如果包含進來的只是靜態文件,那麼只是把靜態文件的內容加到jsp網頁中;如果包含進來的爲動態文件,那麼這個被包含的文件也會被jsp Container編譯執行。

<jsp:forward>這個標籤的定義:將客戶端所發送出來的請求,從一個jsp網頁轉交給另一個jsp網頁。不過有一點要特別注意,<jsp:forward>標籤之後的程序將不能執行。

jsp中隱含對象:與Servlet有關的隱含對象(page、config)、與Input/Output有關的隱含對象(out、request、response)、jsp執行時,提供有關Context的隱含對象(session、application、pageContext)、與Error有關的隱含對象(exception)。

使用<jsp:include>標籤所包含進來的網頁,同樣也可以取得Reqeust範圍的數據。


EL提供了.和[]兩種運算符來存取數據。一般情況下可以混用,不過一下兩種情況,兩者會有差異:(1)當要存取的屬性名稱中包含一些特殊字符,如 . 或 - 等並非字母和數字的符號,就一定要使用[],例如:${user["My-name"]}

EL存取變量數據的方法很簡單,例如:${username}。它的意思是取出某一範圍中名稱爲username的便量。因爲我們並沒有指定哪一個範圍的username,所以它的默認值會先從page範圍找,假如找不到,再依次到request、session、application範圍。假如途中找到username就直接回傳,不再繼續找下去,但是假如全部的範圍都沒有找到時,就回傳null。

因爲${}在jsp2.0中式特殊字符,jsp容器回自動將它當做el來執行,因此,假若要顯示${}時,必須在$前加上/,如/${XXXXX}


JSTL1.0中,核心標籤庫的uri默認爲http://java.sun.com/jstl/core,比JSTL1.1少一個jsp/的路徑。因爲JSTL1.1同時支持JSTL1.0和1.1,所以假如核心標籤庫的uri爲http://java.sun.com/jstl/core,則將會使用到JSTL1.0的核心標籤庫。JSTL1.1的核心標籤庫uri爲http://java.sun.com/jsp/jstl/core


JSTL1.1與JSTL1.0
(1)EL原本是定義在JSTL1.0的,現在EL已經正式納入JSP2.0標準規範中,所以JSTL1.1規範中,已經沒有EL的部分,但JSTL依舊能使用EL。
(2)JSTL1.0中又分EL和RT兩種函數庫,到JSTL1.1之後,已經不再分這兩種了。以下說明EL和RT的差別。EL完全使用Expression Language、簡單、建議使用;RT使用Scriptlet、java語法、但不想轉換且習慣舊錶示法餓開發者使用。
(3)JSTL1.1新增函數標籤庫,主要提供一些好用的字符串處理函數。

當我們執行<c:if>的時候,可以將這次判斷後的結果存放到屬性var裏;scope則是設定var的數據範圍。哪些情況纔會用到var和scope這兩個屬性呢?例如:當表達式過長時,我們會希望拆開處理,或是之後還需使用結果時,也可以用它先將結果暫時保留,以便日後使用。

假如condition1和condition2兩者都爲true時,此時只會顯示“condition1爲true”,這是因爲在同一個<c:choose>下,當有好幾個<c:when>都符合條件時,只能有一個<c:when>成立。

<c:forEach>爲循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運作方式爲當條件符合時,就會持續重複執行<c:forEach>的本體內容。

<c:forTokens>用來瀏覽一字符串中所有的成員,其成員是由定義符號所分隔的。

<c:import>可以把其他靜態或動態文件包含至本身jsp網頁。它和jsp action的<jsp:include>最大的差別在於:<jsp:include>只能包含和自己同一個web application下的文件;而<c:import>除了能包含和自己同一個web application的文件外,亦可包含不同web application或者是其他網站的文件。

當我們必須動態產生網址時,有可能傳遞的參數不固定,或者是需要一個網址能連至同服務器的其他web站臺之文件,而且<c:url>更可以將產生的網址儲存起來重複使用。另外,在以前我們必須使用相對地址或是絕對地址去取得需要的圖文件或文件,現在我們可以直接利用<c:url>從web站臺的角度來設定需要的圖文件或文件的地址,如下:<img src="<c:url value="/images/code.gif"/>"/>


採用post的請求情形通常會有以下三種:爲了傳送較大的數據。因爲使用get來傳遞數據時,有數據量的限制(255個字符數)執行上傳文件時。因爲文件大小通常都會超過255個字符數或文件可能是二進制文件。防止重要數據直接在瀏覽器上顯示。

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