一、如何区分转发和重定向?生活中一个简单例子足以说明:

  转发:某人去了甲局,甲局看了之后,直到护照应该由乙局来管,但甲局的工作人员并没有赶走某人,而是让某人等着,自己在办公室后面联系了乙局的工作人员,乙局护照办好后送到了甲局,然后甲局的工作人员将护照交给了某人;

  重定向:某人去了甲局后,甲局的工作人员说护照不归他们关,应该去乙局。然后某人自己去了乙局,办了护照。

二、请求转发与重定向的定义及实现方式:

  (1)重定向:一个web资源收到客户端的请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。

           运用场景:如用户登录。

           实现方式:通过response来实现:

      

response.sendRedirect(req.getContextPath()+"/index.jsp");  

   (2)转发:一个web资源收到客户端的请求后,通知服务器调用另外一个web资源进行处理。

         运用场景:MVC设计模式

         实现方式:通过request对象来实现:

request.getRequestDispatcher("/index.jsp").forward(req, resp);

 三、转发与重定向的区别:

  (1)转发时地址栏的地址不会改变,重定向时地址栏的地址会变成重定向之后的地址

  (2)转发过程中,客户端与服务器之间只有一次请求和一次响应;而重定向时包含两次请求和响应。

  (3)转发只能访问当前web应用内部的资源,重定向既可以访问当前web应用内部的资源;也可以访问其他应用或网络资源。