ITEEDU

<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:params>

您可以使用JSP动作元素(action element)<jsp:include>来于动态时期include网页,并可搭配<jsp:param>动作元素来指定参 数给被include的网页,被include的网页执行完后,response的权限会交回到要求include的网页中,使用以下这个例子来说明:

incDemo.jsp
<%@page contentType="text/html; charset=Big5"%> 
<%@include file="header.inc"%> 
<% 
String name = request.getParameter("user"); 
out.println(name + " 被请求的网页欢迎您!<br>"); 
%> 

<jsp:include page="inc.jsp" flush="true"> 
<jsp:param name="user" value="<%= name %>" /> 
</jsp:include> 

<% 
out.println(name + " 被请求的网页再度欢迎您!"); 
%> 
<%@include file="foot.inc"%> 

其中header.inc与foot.inc如下:

header.inc
<html> 
<head><title>include demo</title></head> 
<body> 
foot.inc
</body> 
</html> 

inc.jsp内容如下:

inc.jsp
<%@page contentType="text/html; charset=big5"%> 
<% 
out.println(request.getParameter("user") + 
" 被include网页欢迎您<br>"); 
%> 

当以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中撰写,例如之前的范例,可以改写为以下:

incDemo.jsp
<%@page contentType="text/html; charset=big5"%> 
<%@include file="header.inc"%> 
<% 
String name = request.getParameter("user"); 
out.println(name + " 被请求的网页欢迎您!<br>"); 

pageContext.include("inc.jsp?user=" + name); 

out.println(name + " 被请求的网页再度欢迎您!"); 
%> 
<%@include file="foot.inc"%> 

之前曾经介绍过属性对象的作用范围,其中request是在同一个客户端请求期间的作用范围,这个范围可以包括为了完成一个客户端请求所必须包括的数个页 面,例如:

<% 
String name = request.getParameter("user"); 
// 作一些处理 

request.setAttribute("user", name + "+ results"); 
pageContext.forward("inc.jsp"); 
%>

上面这个JSP网页接收到请求之后,作一些处理之后,将结果存入request属性作用范围中,然后将结果forward至inc.jsp,其内容如下:

inc.jsp
<%@page contentType="text/html; charset=Big5"%> 
<%@include file="header.inc"%> 
<% 
out.println(request.getAttribute("user") + 
" 在这边显示结果<br>"); 
%> 
<%@include file="foot.inc"%> 

在这个页面中,我们由request中取出了"user"属性所对应的对象,由于是属于同一个客户所发出请求的处理范围,您是可以取得这个对象的,其显 示结果将如下:

<html> 
<head><title>demo</title></head> 
<body> 
justin+ results 在这边显示结果<br> 
</body> 
</html>