转发和重定向
在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.速度较慢