forward、sendRedirect及Jsp和Servlet之间的跳转
<jsp:forward> 使用同一个 request ,是在服务器端跳转,浏览器显示的是第一个页面的名字,因为客户端(浏览器)不知道它在服务器端跳转了。
Response.sendRedirect 是两个不同的 request ,是在客户端跳转,浏览器显示的是跳转后的页面的名字。因为它是从客户端跳转到第二个页面的。
?
?
?
?
?
使用 forward 时,由于只是发送一次 request 请求, request 设置的属性( setAttribute )依然能保留在下一个页面。
使用 sendRedirect 时,由于发送两次 request 请求,所以在下一个不能获取 request 属性。但可以通过重写 URL 的方式将内容传递过去。
下面举例说明:
![]()
<%request.setAttribute(
"river",
"redwater");
![]()
%>

<jsp:forward page=
"fengshan.jsp" />
?
?
![]()
<%request.setAttribute(
"river",
"redwater");
![]()
%>

<a href=
"fengshan.jsp">fengshan</a>
?
?
![]()
<%request.setAttribute(
"river",
"redwater");
![]()
????response.sendRedirect(
"fengshan.jsp");

%>
?
?
![]()
<%=request.getAttribute(
"river")%><br/>

<%=request.getAttribute(
"country")%>
http://localhost:8080/ForwardRedirect/tiane.jsp跳转后结果为:
redwater
daguaiwan
?