请求与重定向的区别
1.请求转发只能将请求转发给同一个WEB应用中的组件,而重定向还可以重新定向到同一个站点不同应用程序 中的资源,甚至可以定向到一绝对的URL
2.重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都 是有服务器来做的。
3.请求响应调用者和被调用者之间共享相同的request对象和response对象,重定向调用者和被 调用者属于两个独立访问请求和响应过程。
4.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。
Servlet 可通过两种方式得到RequestDispatcher对象:
调用ServletContext的getRequestDispatcher(String path)方法,path参数指定目标组件的中径。
调用ServletRequest的getRequestDispathcer(String path)方法
以上两处方式的区别在于,前者的path参数必须是绝对路径,而后者的path参数可以是绝对 路径,也可以是相对路径。所谓绝对路径,就是绝对路径,就是指以符号“/”开头的路径,"/"表示当前web应用的URL入口。
.5.sendRedirect对浏览器做出的响应是重新发出对另外一个URL的访问请求,forward在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果
6..forward的调用者与被调用者之间共享相同的request对象和response对象,他们属于同一个访问请求和响应过程;sendRedirect的调用者与被调用者使用各自的request和response对象,属于两个独立的访问请求和响应过程。