一、调用方式
在servlet中调用转发、重定向的语句如下:
request.getRequestDispacher("new.jsp").forward(request,response); //请求转发到new.jsp
reponse.sendRedirect("new.jsp"); //重定向到new.jsp
在jsp页面中也可以实现转发和重定向
<jsp:forward page="new.jsp" /> //转发
<%response.sendRedirect("new.jsp") //重定向
二、本质区别
1.请求重定向:客户端行为
reponse.sendRedirect()从本质上讲等同于2次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
2.请求转发:服务器行为
request.getRequestDispacher().forward(request,response)是1次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
三、详细解释
重定向:其实是2次request,第一次,客户端request A,服务器响应,并response回来,告诉浏览器你应该去B。这个时候IE可以看到地址变了,回退按钮亮了。
转发:服务器内部把对一个request/reponse的处理权移交给另外一个。