`
snoopy3384
  • 浏览: 12918 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

forward redirect include三种跳转区别

阅读更多
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).
分享到:
评论
1 楼 james23dier 2010-01-05  
其实sendredict就是重定向,而requestDispatcher则是转发。我认为两个最主要的区别在于重定向是返回数据到客户端之后客户端再向另外的地址发送请求,这样一个来回就发送两次请求,接受两次响应,客户端知道请求发生了变化;而转发则是在服务器端直接发送请求到另外的地址,然后将响应返回到客户端,这样只有一次请求,一次响应,而客户端是不知道请求已经发生变化的。

相关推荐

    Java Web中的页面跳转.pdf

    在Java Web中,主要有两种页面跳转方式:请求转发(Request Forward)和重定向(Redirect)。这两种方式有着不同的工作原理和适用场景。 **请求转发(Request Forward)** 请求转发是由服务器内部完成的,不会向...

    servlet/jsp跳转

    - **请求转发(Request Forward)**:使用`RequestDispatcher`的`forward()`方法在同一应用内部进行跳转,请求只发送一次,浏览器地址栏不会改变。 - **重定向(Redirect)**:使用`response.sendRedirect()`方法...

    response 对象:页面跳转.pptx

    JSP 中页面跳转有两种常用的方式:重定向(Redirect)和转发(Forward)。 重定向(Redirect) 重定向是将客户端重定向到另一个 URL,这个过程会产生第二次请求。使用 `response.sendRedirect(path)` 方法可以实现...

    Java-Web简答题.docx

    forward 和 redirect 是两种页面跳转方式,分别有以下特点: * forward():一次请求,在容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址。 * redirect():两次请求,完全的跳转,浏览器将会得到...

    javaweb 简历

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

    JSP试题及答案(1)1

    2.jsp有哪些动作 3.forward 和redirect的区别 4.JSP中动态INCLUDE与静态INCLUDE的区别 5.两种跳转方式分别是什么 6.J

    笔试JSP1.doc

    forward 和 redirect 是两种不同的页面跳转机制: * forward:在服务器端跳转,客户端不知道跳转的过程 * redirect:在客户端跳转,客户端知道跳转的过程 6. JSP 内置对象 JSP 内置对象包括: * request:请求...

    SQlServer面试题

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

    java面试题web部分

    forward和redirect是两种不同的服务器端跳转方式。forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来...

    华为面试题

    - `forward()`:服务器内部跳转,客户端浏览器地址栏不变,效率较高,适合同服务器内的资源跳转。 - `redirect()`:客户端重定向,地址栏显示新URL,适合跨域或需要用户可见跳转的情况。 以上是华为面试中可能...

    JavaWeb面试题汇编.pdf

    有两种跳转方式,分别为:<jsp:include page="included.jsp" flush="true"> 和 <jsp:forward page="nextpage.jsp" />。前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还...

    jsp学习资料及应用

    **三、forward与redirect的区别** - **forward**:服务器内部重定向,不改变URL,浏览器地址栏保持不变,适合于同一次请求的多个操作。 - **redirect**:客户端重定向,浏览器发起新的请求,URL会发生改变,适合于...

    2023年web面试题一答案.doc

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

    JSPServlet新手学习资料

    **三、JSP动态INCLUDE与静态INCLUDE** 1. **动态INCLUDE**:使用`<jsp:include>`,每次请求都会检查被包含页面的更新,适用于动态内容,可以传递参数。 2. **静态INCLUDE**:使用`<%@ include file="">`,在编译时...

    JAVA 基础题

    在JSP和Servlet编程中,`forward` 和 `redirect` 都是用来控制页面跳转的方法,但它们之间存在显著差异: 1. **`forward`**:服务器内部的跳转,客户端浏览器地址栏不会改变,且只能在Web应用内部进行跳转。使用 `...

    javaweb面试总结

    2. **forward()与redirect()的区别**:`forward()`是服务器内部跳转,它不会改变浏览器的URL,适合用于在同一应用内的页面间传递。而`redirect()`是浏览器级别的重定向,浏览器会发起一个新的请求,URL会显示为重...

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

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

    java面试题

    `forward()`仅在服务器端进行控制权的转移,不会改变客户端的URL,而`redirect()`则会完全重定向请求,客户端的URL会显示新的地址,通常在需要跨服务器跳转时使用`redirect()`。 ### Servlet的基本结构 Servlet的...

    jsp四种会话跟踪技术

    JSP指令主要有三种: 1. `<%@ page>`:设置JSP页面的属性,如语言、导入的包、错误处理页面等。 2. `<%@ include>`:静态包含其他文件。 3. `<%@ taglib>`:引入自定义标签库。 **forward和redirect的区别** - **...

    文章分类:Java编程,java面试题4

    1. **概念**: `Forward`是一种服务器端请求跳转的方式,通过`RequestDispatcher`接口中的`forward()`方法实现。 2. **作用**: `Forward`可以将当前请求转发到另一个资源(通常是Servlet或JSP页面),同时共享`...

Global site tag (gtag.js) - Google Analytics