转发和重定向

在servlet中转发和重定向:

request.getRequestDispatcher("/student_list.jsp").forward(request,response);//转发
response.sendRedirect("/student_list.jsp");//重定向

在jsp页面中也有

<jsp:forward page=" test.jsp" />  //转发
<%
response.sendRedirect("test.jsp");
%> 
//重定向到test.jsp

转发和重定向最主要的区别就是:

重定向不共享request和response,转发共享request和response。如下图:步骤4之后,request就有了学生列表信息只能转发到jsp上,如果重定向的话,request携带的信息就消失了。步骤5就是转发,这是服务器端的行为。

转发和重定向

但是如果该为重定向之后,就变成了下图这样。步骤5、6是重定向的行为,需要经过web客户端,这样request就丢失了。

转发和重定向

总结

转发:

    1.转发不会改变浏览器的地址栏

    2.转发共享同一个request

    3.转发只能在同一个web应用中使用

    4.速度较快

重定向:

   1.重定向会改变浏览器的地址栏

   2.重定向不共享request

   3.可以重定向到任意URL

   4.速度较慢