Servlet中重定向与转发的区别
转发重定向两者之间的区别:
转发
获得请求转发器----path是转发的地址 RequestDispatcher getRequestDispatcher(String path)通过转发器对象转发 requestDispathcer.forward(ServletRequest request, ServletResponse response)
从Servlet1中蒋将请求转发待到Servlet2中;Servlet2在网页打印hello
浏览器访问servlet1获得结果是servlet2的响应。地址不变。 转发只是将其交给另一个servlet或jsp来实现
重定向
使用方法:response.sendRedirect("/web/xxxServlet");
在Servlet3内,我将其重定向到Servlet2.
在访问servlet3时,虽然也响应的是servlet2,但是地址栏发生了改变
两者之间的区别:
重定向发生两次请求;而转发只有一次。转发不会改变访问的地址;而重定向会更改。请求转发发生在服务器端,由服务器(比如servlet)控制;重定向发生在客户端,由客户(通常是浏览器)控制。转发只能将请求转发给同一个WEB应用中的组件;而重定向方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。------------(重新定向可以访问外部网站 转发只能访问内部资源)请求转发相对快:因为请求转发过程在同一请求中;重定向相对慢:因为重定向过程发生在两个不同的请求中。转发的性能要优于重定向。