首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

forward,include,redirect的差别(转)

2012-08-27 
forward,include,redirect的区别(转)?forward,include,redirect是jsp中web页面(jsp或servelt)的三种不同的

forward,include,redirect的区别(转)

?

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功能的实现,这样?
private void setForward(String url,ServletRequest request, ServletResponse response)throws Exception {???
??????? HttpServletRequest hreq = (HttpServletRequest) request;?
??????? RequestDispatcher dispatcher =? hreq.getSession().getServletContext().getRequestDispatcher(url);?
??????? dispatcher.forward(request,response);?
}原文地址?http://www.blogjava.net/swingboat/archive/2005/12/28/25663.html

?

热点排行