一、forward、include由javax.servlet.RequestDispatcher来封装,由包容
器container提供RequestDispatcher接口的实现,其中声明如下: void forward
(ServletRequest req,ServletResponse res) void include(ServeltRequest
req,ServletResponse res) 可以通过两种方式得到RequestDispatcher:
1、
ServletContext.getRequestDispatcher(String path); 其中这里的path必须开始
为"/",即这里的path必须相对于context的root.
2、ServeltRequest.getRequestDispatcher(String path) 这里的path可以为相对路径,如果path开始为"/",则也认为是从context的root开始的。
二、Redirect由HttpServletResponse.sendRedirect(String location)来支持差别:三个都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面:
1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。
2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com");
器container提供RequestDispatcher接口的实现,其中声明如下: void forward
(ServletRequest req,ServletResponse res) void include(ServeltRequest
req,ServletResponse res) 可以通过两种方式得到RequestDispatcher:
1、
ServletContext.getRequestDispatcher(String path); 其中这里的path必须开始
为"/",即这里的path必须相对于context的root.
2、ServeltRequest.getRequestDispatcher(String path) 这里的path可以为相对路径,如果path开始为"/",则也认为是从context的root开始的。
二、Redirect由HttpServletResponse.sendRedirect(String location)来支持差别:三个都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面:
1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。
2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com");