大可制作:QQ群:31564239(asp|jsp|php|mysql)

JSP/Servlet: <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>