浅谈JSP的Forward及sendRedirect方法
2013-09-03 11:02
218 查看
Response.sendRedirect是两个不同的request,是在客户端跳转,浏览器显示的是跳转后的页面的名字。因为它是从客户端跳转到第二个页面的。
使用forward时,由于只是发送一次request请求,request设置的属性(setAttribute)依然能保留在下一个页面。
使用sendRedirect时,由于发送两次request请求,所以在下一个不能获取request属性。但可以通过重写URL的方式
内容传递过去。
下面举例说明:
结果:
http://localhost:8080/ForwardRedirect/tiane.jsp 跳转后结果为:
redwater
daguaiwan
http://localhost:8080/ForwardRedirect/donglan.jsp 跳转后结果为:
null
null
http://localhost:8080/ForwardRedirect/bama.jsp 跳转后结果为:
null
null
结果分析: tiane.jsp是通过forward跳转到fengshan.jsp的,这两个页面享用的是同一个request,故fengshan.jsp可以接收到tiane.jsp通过
request设置的属性。而donglan.jsp是通过href发送了另外的request请求,bama.jsp是通过sendRedirect跳转,用的也是另外的request请求,故fengshan.jsp不可以接收到这两个页面通过 request设置的属性。 Jsp和Servlet之间的跳转:从Jsp跳转Servlet可以使用或者response.sendRedirect(URL)都可以,它们之间的区别上面已经说明了。 从Servlet跳转Jsp: getRequestDispatcher的forward(request,
response)方法,这里也只是发送了一次请求,可以在下一个页面接受request设置的属性。 ² response.sendRedirect(URL),这里发送了两次请求,不可以在下一个页面接受request设置的属性。
使用forward时,由于只是发送一次request请求,request设置的属性(setAttribute)依然能保留在下一个页面。
使用sendRedirect时,由于发送两次request请求,所以在下一个不能获取request属性。但可以通过重写URL的方式
内容传递过去。
下面举例说明:
tian.jsp <%request.setAttribute("river","redwater"); request.setAttribute("country","daguaiwan"); %> <jsp:forward page="fengshan.jsp" />
donglan.jsp <%request.setAttribute("river","redwater"); request.setAttribute("country","daguaiwan"); %> <a href="fengshan.jsp">fengshan</a>
bama.jsp <%request.setAttribute("river","redwater"); request.setAttribute("country","daguaiwan"); response.sendRedirect("fengshan.jsp"); %>
fengshan.jsp <%=request.getAttribute("river")%><br/> <%=request.getAttribute("country")%>
结果:
http://localhost:8080/ForwardRedirect/tiane.jsp 跳转后结果为:
redwater
daguaiwan
http://localhost:8080/ForwardRedirect/donglan.jsp 跳转后结果为:
null
null
http://localhost:8080/ForwardRedirect/bama.jsp 跳转后结果为:
null
null
结果分析: tiane.jsp是通过forward跳转到fengshan.jsp的,这两个页面享用的是同一个request,故fengshan.jsp可以接收到tiane.jsp通过
request设置的属性。而donglan.jsp是通过href发送了另外的request请求,bama.jsp是通过sendRedirect跳转,用的也是另外的request请求,故fengshan.jsp不可以接收到这两个页面通过 request设置的属性。 Jsp和Servlet之间的跳转:从Jsp跳转Servlet可以使用或者response.sendRedirect(URL)都可以,它们之间的区别上面已经说明了。 从Servlet跳转Jsp: getRequestDispatcher的forward(request,
response)方法,这里也只是发送了一次请求,可以在下一个页面接受request设置的属性。 ² response.sendRedirect(URL),这里发送了两次请求,不可以在下一个页面接受request设置的属性。
相关文章推荐
- 浅谈JSP的Forward及sendRedirect方法
- 浅谈JSP的Forward及sendRedirect方法
- 浅谈JSP的Forward及sendRedirect方法
- JSP的Forward及sendRedirect方法区别
- jsp中forward方法与sendRedirect方法的区别
- jsp:forward标签和response.sendRedirect()方法的区别
- RequestDispatcher提供两个方法:forward,include有什么区别,以及和HttpResponse的sendRedirect方法的区别
- jsp中页面之间的跳转forward与sendRedirect的区别
- JSP中forward()与sendRedirect()区别
- <jsp:forward>标签跳转指令和response.sendRedirect()跳转指令的区别
- HttpServletResponse.sendRedirect()方法/RequestDispatcher.forward()方法
- response.sendRedirect方式的转向与RequestDispatcher的forward方法的比较
- sendRedirect()和forward()方法的区别
- 【学习摘记】马士兵Servlet&JSP_课时24_forward_sendredirect——原页面跳转 vs 新页面跳转
- jsp:forward标签与response.sendRedirect()的区别
- <jsp:forward>和response.sendRedirect()两种跳转的区别
- Jsp:forward与response.sendRedirect()两种跳转的区别
- JSP中页面跳转 sendRedirect VS forward
- JSP-Servlet中转发(forward)与重定向(sendRedirect)的区别
- sendRedirect()和forward()方法有什么区别?