JSP的Forward及sendRedirect方法

Response.sendRedirect是两个不同的request,是在客户端跳转,浏览器显示的是跳转后的页面的名字。因为它是从客户端跳转到第二个页面的。使用sendRedirect时,由于发送两次request请求,所以在下一个不能获取request属性

 

JSP的Forward及sendRedirect方法

 

 

使用forward时,由于只是发送一次request请求,request设置的属性(setAttribute)依然能保留在下一个页面。

JSP的Forward及sendRedirect方法

 

 

下面举例说明:

JSP的Forward及sendRedirect方法tian.jsp    
JSP的Forward及sendRedirect方法<%request.setAttribute("river","redwater");
JSP的Forward及sendRedirect方法    request.setAttribute("country","daguaiwan");
JSP的Forward及sendRedirect方法%>
JSP的Forward及sendRedirect方法<jsp:forward page="fengshan.jsp" />
 
JSP的Forward及sendRedirect方法donglan.jsp    
JSP的Forward及sendRedirect方法<%request.setAttribute("river","redwater");
JSP的Forward及sendRedirect方法    request.setAttribute("country","daguaiwan");
JSP的Forward及sendRedirect方法%>
JSP的Forward及sendRedirect方法<a href="fengshan.jsp">fengshan</a>
 

JSP的Forward及sendRedirect方法bama.jsp    
JSP的Forward及sendRedirect方法<%request.setAttribute("river","redwater");
JSP的Forward及sendRedirect方法    request.setAttribute("country","daguaiwan");
JSP的Forward及sendRedirect方法    response.sendRedirect("fengshan.jsp");
JSP的Forward及sendRedirect方法%>
 
JSP的Forward及sendRedirect方法fengshan.jsp
JSP的Forward及sendRedirect方法<%=request.getAttribute("river")%><br/>
JSP的Forward及sendRedirect方法<%=request.getAttribute("country")%>
 

  1. http://localhost:8080/ForwardRedirect/tiane.jsp 跳转后结果为:  
  2. redwater  
  3. daguaiwan  
  4.    
  5. http://localhost:8080/ForwardRedirect/donglan.jsp 跳转后结果为:  
  6. null  
  7. null  
  8.    
  9. http://localhost:8080/ForwardRedirect/bama.jsp 跳转后结果为:  
  10. null  
  11. 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设置的属性。