1、重定向 sendredirect 会使地址栏显示的地址改变

2、重定向 sendredirect 可以访问外部资源, 而请求转发 forward只可以在访问本身的内部资源。

3、请求转发 forward 都会共享request里面的资源。 而重定向 sendredirect 不可以(重定向不可以获取重定向前请求对象的值,请求转发可以获取请求转发前请求对象的值)

4、重定向 sendredirect 相当于2次请求2次回复,而请求转发 forward 只是一次请求一次回复 


response.sendRedirect 是重定向到某个页面上,相当于重新打开浏览器输入你要打开的网址。

request.getRequestDispatcher(a.jsp).forward(request,response)这个方***将参数传会a.jsp页面。而浏览器的地址栏也不会显示a.jsp,显示的会是你处理操作的那个页面。

如果当前页面是http://127.0.0.1/b.jsp使用response.sendRedirect("a.jsp")的话,地址栏将显示http://127.0.0.1/a.jsp

而request.getRequestDispatcher(a.jsp).forward(request,response)显示的还是http://127.0.0.1/b.jsp..如果有参数,后面还会有参数


这个方法可以将request和response对象传递过去,在a.jsp当中可以直接获得request当中的参数。而sendRedirect只是重定向,参数需要拼成串通过URL传递 


重定向是将用户从当前Servlet定向到另一个Servlet,以前的request中存放的信息全部失效,并进入一个新的request作用域;           Servlet中通过调用HttpServletResponse类中的方法sendRedirect(String location)来实现重定向,重定向的目标页面或Servlet(由参数location指定),无法从以前的request对象中获取用户提交的数据。

转发是将用户对当前Servlet的请求转发给另一个Servlet,以前的request中存放的信息不会失效。                                      javax.servlet.RequestDispatcher对象可以将用户对当前Servlet的请求转发给另一个Servlet

实现转发需要2个步骤:

                     •获得RequestDispatcher对象

                        RequestDispatcher dis=request.getRequestDispatcher("dologin");

                    •RequestDispatcher对象调用forward()方法实现转发             

                        dis.forward(request,response);