forward指令用于将页面响应控制转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器的Servlet。
JSP的forward指令格式如下:
对于JSP1.0,使用如下语法:
<jsp:forward page="{relativeURL|<%expression%>}"/>
对于JSP1.1以上,可使用如下语法:
<jsp:forward page="{relativeURL|<%=expression%>}">{<jsp:param.../>}
</jsp:forward>
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter方法获取。
举例:
页面jsp-forward.jsp将所有客户端请求转发到forward-result.jsp页面。转发时,增加一个请求参数:参数名为age,参数值为NULL。页面jsp-forward.jsp的源代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value=""/>
</jsp:forward>
</BODY>
</HTML>
在forward-result.jsp页面中,使用request内置对象来获取增加的请求参数值。forward-result.jsp的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="ErrorPage.jsp"%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%=request.getParameter("username")%>
</BODY>
</HTML>
此时运行jsp-forward.jsp的结果为null,因为value的值为null。运行结果截图如下:
form-forward.jsp页面将表单域的值提交到jsp-forward页。form-forward.jsp的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<form id="login" method="post" action="jsp-forward.jsp">
<INPUT TYPE="text" NAME="username">
<INPUT TYPE="submit" value="login">
</FORM>
</BODY>
</HTML>
运行form-forward.jsp页面结果如下:
在表单中输入hello,页面自动跳转到jsp-forward.jsp,并输出hello。结果如下: