跳到主要內容

JSP & Servlet 樣板概念簡介

這篇筆記說明如何在JSP中使用樣版減輕維護的負擔
在不涉及到後面筆記會談到的JSTL及自訂標籤的情況下
目前使用的會是include指令與<jsp:include>標準動作

include指令:

include指令會通知container將 included file 的所有內容複製到目前的頁面裡
例如現在有個頁面如下
test.jsp=========

<html><body>
<p> Insert page here</p>
<%@ include file="p.jsp" %>    //insert file to this page

</body></html>

又,我們寫個叫做 p.jsp 頁面如下
p.jsp=========

<h1>New Code!!</h1>
<p>this is amazing!!</p>

container就會自動將頁面結合成
test.jsp=========

<html><body>
<p> Insert page here</p>
<h1>New Code!!</h1>
<p>this is amazing!!</p>

</body></html>


<jsp:include>標準動作:

 <jsp:include>標準動作的程式看起來跟include指令很類似
test.jsp=========

<html><body>
<p> Insert page here</p>
<jsp:include  page="p.jsp" />    //insert file to this page

</body></html>

合成的結果是相同的
但兩者在執行的過程中卻是有差異的
inclue的作用就像是將所要引入的檔案內容複製到目標頁面貼上後,再進行轉譯
<jsp:include>則是在執行期插入所引入檔案的回應

<jsp:include>能確保總是得到最新的內容,但是會有效能上的負擔
include指令在處理不常更改的頁面時會是比較好的選擇
現在比較新的container(例如:Tomcat 5以上的版本)大多能偵測引入檔案的變更
所以使用include指令也能在引入檔案有變動時自動轉譯
<jsp:include>目前的需求建立在移植性上

<jsp:param>標籤提供了對於被嵌入的內容作客製化的處理
讓樣版能依照被套用頁面來調整內容
範例:
show.jsp========

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="test" uri="randFunction" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>

<jsp:include page="a.jsp">
  <jsp:param value="999" name="num"/>
</jsp:include>

</body>
</html>

a.jsp=======

<p>We got number ${param.num }</p>


<jsp:param>必須包在<jsp:include>主體裡
對於被嵌入的檔案來說,它就像是其他的請求參數一般
範例的結果會在show.jsp中顯示出 We got number 999

留言