转发(forward)、包含(include)及转向(redirect)的区别与联系
2007-04-06 06:52
555 查看
forward,include,redirect是jsp中web页面(jsp或servelt)的三种不同的路由关系,三个貌似相同,其实还是有许多差别的,而了解这些细微的差别,在web开发中是很重要的。
说明:
一、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");
说明:
一、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");
相关文章推荐
- 转发(forward)、包含(include)及转向(redirect)的区别与联系
- 转发/重定向/包含(forward/redirect/include)
- Servlet API中redirect(重定向)与forward(转发)/include(包含)的区别
- 转发(forward)和重定向(redirect)区别
- forward(转发)与redirect(重定向)的区别
- forward转发和redirect 重定向的区别
- 转发(request.setRequestDispacter)和重定向(response.sendRedirect)的区别以及转发的include和forward的区别
- forward(转发)和redirect(重定向)的区别
- 重定向(redirect)和转发(forward)区别
- 请求转发include()、forward()、sendRedict()的区别
- ## forward(请求转发)和redirect(重定向)的区别(整理) ##
- 请求转发(Forward)和重定向(Redirect)的区别
- 请求的跳转与转发 forward, redirect的区别
- forward与redirect转发的区别
- forward(转发)和redirect(重定向)的区别
- 请求转发(forward)和重定向(redirect)的区别
- forward(转发)和redirect(重定向)的区别
- forward(转发)和redirect(重定向)的区别
- forward和redirect的区别,rorward,redirect,转发与重定向
- 请求forward、include和redirect的实现方法和区别