Java Web基礎——Web組件重用與JavaBeans

使用可重用的組件可以提高應用程序的開發效率和可維護性。下面我們來看一下在JSP中如何使用靜態包含,動態包含JavaBeans的使用。



一.靜態包含

靜態包含是指在JSP頁面轉換階段將另一個文件的內容包含到當前的JSP頁面中。我們使用一個JSP指令完成該功能:<%@ include file="relativeURL" %>
被包含的頁面可以是基於文本的文件,如HTML,JSP,XML文件等。
我們可以通過下圖清晰的看到靜態包含的過程:

通過上圖我們可以看到靜態包含的頁面在轉換的時候不做任何的處理,所以對它的使用受到以下限制:
1.file的值不能是請求時表達式,如<%@ include file="<%= myURL %>" %>
2.不能通過file中的相對地址傳遞參數,如file="other.jsp?name=tom"



二.動態包含

顧名思義,動態包含是在請求時將另一個頁面的輸出包含到主頁面的輸出中。
區別於靜態包含,動態包含的各個頁面的轉換(成Servlet)的過程是相互獨立的
下面着重分析使用JSP的動作標籤和實現動態包含

        1.使用<jsp:include>動作

使用該標籤的格式如:<jsp:include page="relativeURL" />

page屬性值是指將請求控制轉移到的頁面,下圖很好的顯示了該過程:


通過上圖我們看到JSP容器(如Tomcat)執行對該指令進行轉換是實際是將請求的控制處理轉移給另外一個頁面,
更具體的說是交給other.jsp轉換成的Servlet進行處理,
處理完之後將控制返回給主頁面(main.jsp).

因爲是動態包含,我們可以在控制轉移時加上一些參數,可以用<jsp:param>加上參數,如:

  1. <jsp:include page="somePage.jsp">  
  2.     <jsp:param name="name1" value="value1" />  
  3.     <jsp:param name="name2" value="value2" />  
  4. </jsp:include>  
  5. 在被包含頁面somePage.jsp中我們可以從request中取得這些參數,方法很簡單。當然我們也可以從地址傳遞參數,如somePage.jsp?name=tom,這樣用的很少,這裏的介紹只是爲了說明其與靜態包含的不同之處

        2.使用<jsp:forward>動作

使用格式與include標籤類似,如<jsp:forward page="relatvieURL" />

使用<jsp:forward>動作是把請求轉發到其他的頁面(組件),然後由轉發到的頁面(組件)把響應發送給客戶

下圖展示了這種包含與include包含及靜態包含的區別:


我們看到main.jsp中的內容並沒有輸出的HTML中展現給客戶(瀏覽器),其實一般的我們只要在前一個Servlet中做一些處理工作而把數據通過請求轉發給其他的頁面(這裏是other.jsp)進行展示。
值得注意的是:如果我們訪問main.jsp,瀏覽器中顯示的是Welcome to other.jsp,但是瀏覽器地址欄中依舊是main.jsp!

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