Servlet中sendRedirect()方法和getRequestDispatcher()方法的区别

  

 

      request.getRequestDispatcher()这个方法是将请求回送给服务器,由服务器转发请求,response.sendRedirect()方法是将求情回送到浏览器,再由浏览器重新发送求情,在这个转发过程中,url需要填写web项目的名称,而getRequestDispatcher()方法则不需要填写web项目的名称,只需要填写转发的Servlet名称,因为它是通过服务器转发的,意味着它还没有离开这个项目,还在同一个生命周期中,它所转发的请求是同一个对象,而sendRedirect()是将请求发送给浏览器,这时一个生命周期已经结束,浏览器接受到请求后又新建一个对象进行转发,这又是一个新的生命周期,

      sendRedirect()方法可以将请求转发到项目以外的url,比如response.sendRedirect("https://www.baidu.com");而getRequestDispatcher()则不可以,因为sendRedirect()请求是由浏览器发起的,它可以访问任意的url,而getRequestDispatcher()是由服务器发起的,它只能通过web.xml文件来定位资源,配置文件中没有的资源他是找不到的。

     

posted @ 2015-10-15 17:36  Draeen  阅读(314)  评论(0编辑  收藏  举报