`
dingjun1
  • 浏览: 214340 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转发(forward)、包含(include)及转向(redirect)的区别与联系

阅读更多
转发(forward)、包含(include)及转向(redirect)的区别与联系
http://www.cn-java.com/www1/?action-viewnews-itemid-3176
阅读次数: 7944次 发布时间: 2005-04-09 00:00:00发布人: PaPA


来源:http://www.cn-java.com/www1/?action-viewnews-itemid-3176

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");
分享到:
评论

相关推荐

    Java-Web简答题.docx

    Servlet 中 forward() 与 redirect() 的区别 Servlet 中有两种页面跳转方式:forward() 和 redirect()。 * forward():一次请求,在容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。 * ...

    java面试题

    `jsp:include`不会改变当前页面的URL,只显示包含页面的结果,类似于函数调用,而`jsp:forward`则完全转向新的页面,客户端URL会改变,相当于直接跳转到新页面。 ### Servlet的生命周期 Servlet具有明确的生命周期...

    JSP和SERVLET笔试常遇到的一些问题

    3. forward与redirect: - forward:服务器内部重定向,不会改变URL,适合处理同一服务器内的请求。 - redirect:客户端重定向,浏览器重新发起请求,URL会改变,可用于跨域跳转。 4. JSP动态INCLUDE与静态...

    SQlServer面试题

    3. JAVA SERVLET API中的forward()与redirect()的区别: * forward():仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址 * redirect():完全的跳转,浏览器将会得到跳转的地址,并重新发送...

    javaweb 简历

    forward 和 redirect 的区别 在 JavaWeb 中,forward 和 redirect 是两种不同的跳转方式。forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,...

    JEE企业应用笔记

    5. **转发(forward)、包含(include)与重定向(redirect)的区别:** - **转发(Forward)**和**包含(Include)**都是由`javax.servlet.RequestDispatcher`接口实现的。 - **转发**:将请求转发给服务器上的另一个...

    Java最全的面试整理

    **69、forward 和 redirect 的区别** 在Java Web开发中,`forward`和`redirect`是两种常见的请求处理方式。 - `forward`(转发):在服务器端内部完成,不涉及客户端的重定向,浏览器地址栏中的URL不会改变。...

    JavaWeb面试题汇编.pdf

    69. Forward 和 Redirect 的区别 Forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪里来的,所以它的...

    2023年web面试题一答案.doc

    本文档总结了 Java Web 面试题一的答案,涵盖了 Servlet 生命周期、Servlet 和 CGI 的区别、forward 和 redirect 的区别、JSP 中动态 include 和静态 include 的区别、JSP 的内置对象、JSP 的常用指令、JSP 的动作、...

    j2ee考试资料,学校考试时的复习资料

    6. **forward()与redirect()的区别** - `forward()`:只在服务器内部进行控制权的转向,不会改变客户端浏览器地址栏中的URL。 - `redirect()`:会使客户端重新发起一个请求,因此地址栏中的URL会发生变化。 7. *...

    Struts2 result和type

    `dispatcher`是最常用的类型之一,它通过调用`RequestDispatcher`类的`forward()`方法或`include()`方法将请求转发到另一个资源(如JSP页面)。默认情况下,它会将请求转发到一个JSP文件,路径由`location`属性指定...

    jsp文件重点

    JAVASERVLET API 中 forward() 与 redirect() 的区别 - **forward()**: 这种方法只在服务器内部进行控制权的转移,客户端浏览器地址栏中不会显示转向后的地址。这种方式更加高效且有助于隐藏实际的链接地址。 - **...

    Struts2 demo

    - 有多种结果类型,如ACTION、FORWARD、REDIRECT、CONTINUATION等,满足不同场景需求。 - 全局结果可以在包级别定义,作为默认结果或异常处理。 7. **接收请求参数.rar** - Struts2通过注解或Action类的属性自动...

    夏帮贵《Java web开发完全掌握》示例源代码(1-5章)

    读者可能会接触到RequestDispatcher和Forward/Redirect的区别,以及如何使用Filter进行请求和响应的拦截处理。此外,对于初学者来说,这一章可能也会讲解如何组织项目结构,以符合良好的编程习惯和标准。 总之,这...

Global site tag (gtag.js) - Google Analytics