转发到JSP
request.getRequestDispatcher("myJSP.JSP").forward(request,response);
转发到Servlet
request.getRequestDispatcher("myServlet.do").forward(request,response);
从定向
response.sendRedirect("others");
可以重定向到本应用的Servlet/JSP,也可以重定向到另外一个应用,但转发只能是在一个应用中。
区别
- 转发client只发出一个请求;重定向发出两次请求,第二次请求是第一次响应给出的
- 转发是server内部的事情,在servlet内部跳转,也就地址栏不会改变;重定向发生在client端,第二次请求由client发出,所以地址栏会改变
- 转发一直是client发出的一个resquest,所以转发目的servlet/jsp中可以获取由request.setAttribute("name",object);的对象。而重定向是client发出了两次请求,所以是不能在第二次resques中获取到第一次request绑定属性。这也就说明,转发是可以共享数据的,而重定向是不能共享数据的