<jsp:forword>标准动作
总结
- 功能是将请求转发给web应用中的其他资源,但是需要注意这个标签之后的内容不会再执行,而且之前写进响应的内容会被清空。
- 用法:
-- 不加参数
<jsp:forword page="" />
-- 加参数
<jsp:forward page="a.jsp">
<jsp:param value="aaa" name="login_name"/>
</jsp:forward>
《Head First Servlets & JSP》P413
<jsp:forword>标准动作,可以从一个jsp转发到web应用中的任何其他资源
示例:
hello.jsp页面
<title>welcome</title>
</head>
<body>
welcome to our page!
<%
if(request.getParameter("userName")==null){
%>
<jsp:forward page="handleIt.jsp" />
<% //如果userName为null,停在这里,将整个请求转给别人,
//这个页面的任何内容都不会出现在响应里
}
%>
Hello ${param.userName}
</body>
</html>
handleIt.jsp页面
<title>login</title>
</head>
<body>
We're sorry... you need to login again.
<form action ="hello.jsp" method="get">
Name:<input name="userName" type="text">
<input type="submit" value="login">
</form>
</body>
</html>
利用<jsp:forword>,响应缓冲区会在转发之前清空
发生转发时,请求转发到的目标资源首先会清空响应缓冲区!
意思就是转发前写到响应的所有内容都会清掉。
如果在请求转发之前就已经提交了响应,要转发时就会出现异常。
hello.jsp页面
<title>welcome</title>
</head>
<body>
welcome to our page!
<%
out.flush();
%>
<%
if(request.getParameter("userName")==null){
%>
<jsp:forward page="handleIt.jsp" />
<%
}
%>
Hello ${param.userName}
</body>
</html>