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功能的实现,这样
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);
}
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);
}
相关推荐
Servlet 中 forward() 与 redirect() 的区别 Servlet 中有两种页面跳转方式:forward() 和 redirect()。 * forward():一次请求,在容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。 * ...
forward 和 redirect 的区别 在 JavaWeb 中,forward 和 redirect 是两种不同的跳转方式。forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,...
本文档总结了 Java Web 面试题一的答案,涵盖了 Servlet 生命周期、Servlet 和 CGI 的区别、forward 和 redirect 的区别、JSP 中动态 include 和静态 include 的区别、JSP 的内置对象、JSP 的常用指令、JSP 的动作、...
3. JAVA SERVLET API中的forward()与redirect()的区别: * forward():仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址 * redirect():完全的跳转,浏览器将会得到跳转的地址,并重新发送...
2.jsp有哪些动作 3.forward 和redirect的区别 4.JSP中动态INCLUDE与静态INCLUDE的区别 5.两种跳转方式分别是什么 6.J
69. Forward 和 Redirect 的区别 Forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪里来的,所以它的...
3. Forward 和 Redirect 的区别 Forward 和 Redirect 都是Servlet 中的请求转发机制,但它们的实现方式不同。Forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些...
本文总结了Java web开发面试中的一些常见问题和答案,涵盖了forward和redirect的区别、JSP中的INCLUDE、应用服务器、数据连接池、JSP的内置对象、JSP指令、Servlet的生命周期等知识点。 一、forward和redirect的...
Java Servlet API 中 forward 和 redirect 的区别在于 forward 客户端请求服务器一次,而 redirect 请求服务器两次,forward 可以获得 request 作用域的信息,而 redirect 不能获得。 九、Class.forName 的作用 ...
3. forward与redirect: - forward:服务器内部重定向,不会改变URL,适合处理同一服务器内的请求。 - redirect:客户端重定向,浏览器重新发起请求,URL会改变,可用于跨域跳转。 4. JSP动态INCLUDE与静态...
#### 题目三:forward与redirect的区别 下列关于JSP和Servlet中forward与redirect的描述,哪一项是不正确的? - forward不会改变浏览器地址栏中的URL,而redirect会。 - 在forward和redirect的情况下,服务器都会...
包括页面间的参数传递、hidden表单域的作用、jsp的内置对象、request和session的作用、jsp动作、servlet API中的forward和redirect、class.forName的作用、分页的实现、cookie被禁止后使用session、项目开发的阶段、...
### forward()与redirect()的区别 `forward()`仅在服务器端进行控制权的转移,不会改变客户端的URL,而`redirect()`则会完全重定向请求,客户端的URL会显示新的地址,通常在需要跨服务器跳转时使用`redirect()`。 ...
### Java面试题之Forward与Redirect的区别 #### Forward 1. **概念**: `Forward`是一种服务器端请求跳转的方式,通过`RequestDispatcher`接口中的`forward()`方法实现。 2. **作用**: `Forward`可以将当前请求转发...
**69、forward 和 redirect 的区别** 在Java Web开发中,`forward`和`redirect`是两种常见的请求处理方式。 - `forward`(转发):在服务器端内部完成,不涉及客户端的重定向,浏览器地址栏中的URL不会改变。...
2. **forward()与redirect()的区别**:`forward()`是服务器内部跳转,它不会改变浏览器的URL,适合用于在同一应用内的页面间传递。而`redirect()`是浏览器级别的重定向,浏览器会发起一个新的请求,URL会显示为重...
forward 和 redirect 是两种不同的页面跳转机制: * forward:在服务器端跳转,客户端不知道跳转的过程 * redirect:在客户端跳转,客户端知道跳转的过程 6. JSP 内置对象 JSP 内置对象包括: * request:请求...
**题目内容:** `forward` 和 `redirect` 的区别。 **答案解析:** 在JSP和Servlet编程中,`forward` 和 `redirect` 都是用来控制页面跳转的方法,但它们之间存在显著差异: 1. **`forward`**:服务器内部的跳转,...
在Java Web中,主要有两种页面跳转方式:请求转发(Request Forward)和重定向(Redirect)。这两种方式有着不同的工作原理和适用场景。 **请求转发(Request Forward)** 请求转发是由服务器内部完成的,不会向...
5. **转发(forward)、包含(include)与重定向(redirect)的区别:** - **转发(Forward)**和**包含(Include)**都是由`javax.servlet.RequestDispatcher`接口实现的。 - **转发**:将请求转发给服务器上的另一个...