您可以使用JSP動作元素(action
element)<jsp:include>來於動態時期include網頁,並可搭配<jsp:param>動作元素來指定參
數給被include的網頁,被include的網頁執行完後,response的權限會交回到要求include的網頁中,使用以下這個例子來說明:
<%@page contentType="text/html; charset=Big5"%> 其中header.inc與foot.inc如下:
<html>
</body> inc.jsp內容如下:
<%@page contentType="text/html; charset=big5"%> 當以http://localhost:8080/myjsp/incDemo.jsp?user=justin請求網頁時,將會傳回以下的內容: <html>
<head><title>include demo</title></head> <body> justin 被請求的網頁歡迎您!<br> justin 被include網頁歡迎您<br> justin 被請求的網頁再度歡迎您! </body> </html> 可以使用動作元素<jsp:forward>來將訊息forward至另一個網頁,forward表示 response的權限將交給被forward的對象,而不再回到發出forward的網頁,同樣的,我們也可以搭配<jsp:param> 動作元素來於forward時指定參數給被forward的對象,例如: <jsp:forward page="fwd.jsp">
<jsp:param name="user" value="justin"/> </jsp:forward> pageContext隱含物件也具有forward()與include()方法,使用的時機是方便在Scriptlet中撰寫,例如之前的範例,可以改寫為以下:
<%@page contentType="text/html; charset=big5"%> 之前曾經介紹過屬性物件的作用範圍,其中request是在同一個客戶端請求期間的作用範圍,這個範圍可以包括為了完成一個客戶端請求所必須包括的數個頁 面,例如: <%
上面這個JSP網頁接收到請求之後,作一些處理之後,將結果存入request屬性作用範圍中,然後將結果forward至inc.jsp,其內容如下:
String name = request.getParameter("user"); // 作一些處理 request.setAttribute("user", name + "+ results"); pageContext.forward("inc.jsp"); %>
<%@page contentType="text/html; charset=Big5"%> 在這個頁面中,我們由request中取出了"user"屬性所對應的物件,由於是屬於同一個客戶所發出請求的處理範圍,您是可以取得這個物件的,其顯 示結果將如下: <html>
<head><title>demo</title></head> <body> justin+ results 在這邊顯示結果<br> </body> </html> |