jsp 七大動作指令 1) jsp:include 指令 用於在請求處理階段包含來自一個Servlet或jsp頁面的響應。和編譯指令中的include不同,include只能用於包含靜態頁面,而jsp:include指令則可以包含靜態和動態頁面。 格式:
Java代碼
- 1.<jsp:include page=”文件路徑”/> --------(靜態頁面)
- 2.<jsp:include page=”文件路徑”> --------(動態頁面)
- <jsp:param name=”參數名1” value=”參數值1”/>
- .....
- <jsp:param name=”參數名n” value=”參數值n”/>
- </jsp:include>
2) jsp:forword 指令 用於執行頁面轉向,將請求的處理轉發到下一頁面。 格式:
Java代碼
- 1.<jsp:forword page=”文件路徑”/> ------(跳向靜態頁面)
- 2.<jsp:forword page=”文件路徑”> ------(跳向動態頁面)
- <jsp:param name=”參數名1” value=”參數值1”/>
- …….
- <jsp:param name=”參數名n” value=”參數值n”/>
- </jsp:forword>
3) jsp:useBean 指令 用來在jsp頁面內創建一個JavaBean實例 格式:
Java代碼
- <jsp:useBean id=”javaBean的名稱” scope=”有效范圍” class=”包名.類名”></jsp:useBean>
說明: id屬性指定了javaBean的名稱,只要是在他的有效范圍內,均可以使用這個名稱來調用他。Scope屬性為javaBean的有效范圍(四大范圍:request、page、session、application),class屬性指定了javaBean所屬的類(包名.類名)。 4) jsp:setProparty 指令 用來設置Bean對象的屬性 格式:
Java代碼
- 1.<jsp:setProparty name=”javaBean名稱” proparty=”*” />
- 2.<jsp:setProparty name=”javaBean名稱” proparty=”屬性名” />
- 3. <jsp:setProparty name=”javaBean名稱” proparty=”屬性名” param=”參數名” />
- 4. <jsp:setProparty name=”javaBean名稱” proparty=”屬性名” value=”屬性值” />
說明:proparty=”*”時,表示保存用戶在jsp頁面中輸入的所有值,用於匹配javaBean的屬性。當proparty有具體的值時,表示匹配Bean的一個屬性。Param屬性表示根據指定的request對象中的參數與屬性匹配。Value屬性表示使用指定的值來設置Bean的屬性。 5) jsp:getProparty 指令 用來讀取Bean對象的屬性,並將其轉換為一個字符串顯示在頁面上。 格式:
Java代碼
- <jsp:getProparty name=”bean的名稱” proparty=”屬性名稱”/>
6) jsp:plugin 指令(不常用)用於下載服務器端的javaBean或Applet到客戶端執行。 7) jsp:param 指令(不常用)用於設置參數,不能單獨使用,主要用在jsp:include jsp:forword jsp:plugin指令中。 注意:include指令和include動作都能實現將外部文檔包含到JSP文檔中的功能,名稱也很相似,非常容易混淆。include指令和include動作到底有什么分別,哪一種方式會更好呢? (1).include指令 include可以在JSP頁面轉換成Servlet之前,將JSP代碼插入其中。它的主要優點是功能強大,所包含的代碼可以含有總體上影響主頁面的JSP構造,比如屬性、方法的定義和文檔類型的設定。它的缺點是難於維護只要被包含的頁面發生更改,就得更改主頁面,這是因為主頁面不會自動地查看被包含的頁面是否發生更改。include指令的語法格式如下
Java代碼
- <%@ include file="Relative Url"%>
(2)include動作 jsp:include動作是在主頁面被請求時,將次級頁面的輸出包含進來。盡管被包含的頁面的輸出中不能含有JSP,但這些頁面可以是其他資源所產生的結果。服務器按照正常的方式對指向被包含資源的URL進行解釋,因而這個URL可以是Servlet或JSP頁面。服務器以通常的方式運行被包含的頁面,將產生的輸出放到主頁面中,這種方式與RequestDispatcher類的include方法一致。它的優點是在被包含的頁面發生更改時,無須對主頁面做出修改。它的缺點是所包含的是次級頁面的輸出,而非次級頁面的實際代碼,所以在被包含的頁面中不能使用任何有可能在整體上影響主頁面的JSP構造。 jsp:include動作的完整語法如下
Java代碼
- <jsp:include page="Relative path to resource"flush="true">
其中jsp:include之間不能有空格,page屬性指定被包含的頁面,這個屬性是必需的,是指向某種資源的相對URL。如果這個相對URL不是以/開頭,則將其解釋為相對於主頁面的路徑;如果是以/開頭,是這個URL被解釋為相對於當前WEB應用的根目錄,而不是服務器的根目錄,這是因為該URL是由服務器來解釋的,不是由用戶的瀏覽器來解釋的。像下面這行代碼,是由用戶的瀏覽器進行解釋的,因此會按照相對於服務器的根目錄進行解釋。
flush屬性是一個可選的次級屬性,默認值為false,它指定在將頁面包含進來之前是否應該清空主頁面的輸出流。
注意:在JSP1.1中,flush是必需的屬性,而且聚會只能是true。 (3).兩者的區別和比較 jsp:include動作和include指令之間的根本性的不同在於它們被調用的時間。jsp:include動作在請求期間被激活,而include指令在頁面轉換期間被激活。兩者之間的差異決定着它們在使用上的區別。使用include指令的頁面要比使用jsp:include動作的頁面難於維護。
前面已經說過,使用JSP指令,如果包含的JSP頁面發生變化,那么用到這個頁面的所有頁面都需要手動更新。在JSP服務器的相關規范中並沒要求能夠檢測出包含的文件什么時候發生改變,實際上大多數服務器頁都有去實現這種機制。這樣就會導致十分嚴重的維護問題,需要記住所有包含某一個頁面的其他頁面,或者重新編譯所有的頁面,以使更改能夠生效。在這點上,jsp:include就體現出了十分巨大的優勢,它在每次請求時重新把資源包含進來。在實現文件包含上,應該盡可能地使用jsp:include動作。
jsp:include動作直比於include指令在維護上有着明顯優勢,而include指令仍然能夠得以存在,自然在其他方面有特殊的優勢。這個優勢就是include指令的功能更強大,執行速度也稍快。include指令允許所包含的文件中含有影響主頁面的JSP代碼,比如響應報送的設置和屬性方法的定義。了解到jsp:include動作和include指令各自的功能和區別,在使用時,就可以通過考慮各方面的因素,來決定使用哪一種方式。盡管各自都有一定的優缺點,在實際使用中,還是應優先考慮使用jsp:include動作,這是因為它在代碼維護上的優勢遠勝過其在功能上的不足。
技術分享:www.kaige123.com