`
liuhd2010
  • 浏览: 147910 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

JSP:forward与redirect区别

 
阅读更多

forward:RequestDispatcher.forward()

是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet JSP或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递。

注:forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递。
redirect:HttpServletResponse.sendRedirect()

是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame的jsp文件。

具体来讲:

1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。

2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据。
redirect:不能共享数据。
redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
forward方法只能在同一个Web应用程序内的资源之间转发请求。
forward是服务器内部的一种操作。
redirect是服务器通知客户端,让客户端重新发起请求。
所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "。

3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块。
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

4.从效率来说
forward:高。
redirect:低。

分享到:
评论

相关推荐

    Struts2中实现页面的跳转

    `<jsp:forward/>`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面或者一个Action。在Struts2框架下使用`<jsp:forward/>`进行页面跳转时,可能会遇到“404 Not...

    jsp forward与redirect实探

    在Java Web开发中,JSP(Java...总之,理解并熟练掌握`jsp forward`和`redirect`对于开发高效、安全的Java Web应用至关重要。它们是构建动态网站结构的重要工具,合理运用可以优化用户体验并提高应用程序的灵活性。

    forward与redirect区别

    在开发Web应用时,我们经常会遇到“forward”和“redirect”的概念,它们是两种不同的页面跳转方式。理解和掌握它们的区别对于优化用户交互和处理请求流至关重要。 **forward(转发)**: - 转发是由服务器端完成的...

    forward与redirect!转发和重定向 解析

    ### Forward与Redirect解析 在Web开发中,Forward(转发)与Redirect(重定向)是两种常见的页面跳转方式。它们虽然都可以实现从一个页面跳转到另一个页面的功能,但在实现机制、应用场景以及对用户浏览器地址栏的...

    forward转发与redirect重定向的区别.zip

    在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的请求处理方式,它们在实现客户端和服务器之间的交互时起到至关重要的作用。了解它们的区别对于优化用户体验和提高应用性能至关重要。 首先,让...

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

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

    JSPServlet新手学习资料

    **六、Servlet API中的forward()和redirect()** 1. **forward()**:服务器端的转发,URL不变,效率较高,常用于内部跳转,避免暴露实际路径。 2. **redirect()**:客户端重定向,浏览器地址栏显示新URL,效率较低,...

    转发和重定向的区别 forward和redirect的区别

    - 示例代码:`request.getRequestDispatcher("/a/a.jsp").forward(request, response);` 2. 重定向(Redirect): - 使用`Response.sendRedirect()`方法实现。 - 重定向会导致浏览器发起一个新的HTTP请求,所以...

    JAVA面试题之Forward与Redirect的区别详解

    "JAVA面试题之Forward与Redirect的区别详解" 本文主要讲解了在JAVA面试中可能遇到的问题,即JAVA中Forward与Redirect两者之间的区别。文中详细介绍了两种请求转发方式的原理和区别,包括请求转发的含义、Forward...

    JEE企业应用笔记

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

    jsp学习资料及应用

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

    SQlServer面试题

    * session:与请求有关的会话期 * application:servlet正在执行的内容 * out:用来传送回应的输出 * config:servlet的构架部件 * page:JSP网页本身 * exception:针对错误网页,未捕捉的例外 2. JSP共有6种...

    jsp四种会话跟踪技术

    **forward和redirect的区别** - **jsp:forward**:页面内部跳转,不改变URL,相当于函数调用,可以带参数。 - **jsp:redirect**:客户端重定向,URL改变,无法带回参数,类似于Go To语句。 **JSP动作** JSP共有六...

    jsp期末考试试题及答案

    #### 三、Forward与Redirect的区别 - **forward**(转发):服务器内部操作,不改变客户端地址栏中的URL。转发后,客户端只发送一次请求,效率较高。 - **redirect**(重定向):客户端操作,地址栏中的URL会发生...

    jsp页面跳转

    `<jsp:forward>` 标签本质上是调用 `RequestDispatcher.forward()` 来完成页面跳转的。该标签会将当前请求转发到指定的JSP页面,保持请求数据的完整性。 **应用场景:** - 当需要简化代码实现,提高可读性时。 - ...

    java,jsp面试题

    ### JSP页面重定向与转发的区别 - **重定向(Redirect)**:通过响应对象 `response.sendRedirect("url")` 来实现。客户端会收到一个新的HTTP请求,因此原请求中的数据(如request对象中的属性)会被丢失。 - **...

    JSP经典例子教程-100例

    JSP页面跳转有两种方式:使用`<jsp:forward>`标签和`<c:redirect>`标签。这两种方式都可以实现页面间的跳转,但具体实现机制有所不同。 - **使用<jsp:forward>标签**: ```jsp <jsp:forward page="/newPage.jsp" ...

    java面试题

    JSP中动态INCLUDE和静态INCLUDE的主要区别在于动态INCLUDE(jsp:include)每次都会检查包含文件的更新,适合包含动态内容,可以传递参数;而静态INCLUDE(%@ include file=... %>)不会检查文件变化,适用于包含静态...

    华为面试题

    - `session`:与特定请求相关的会话对象,用于存储用户会话数据。 - `application`:表示整个Web应用,用于共享全局信息。 - `out`:输出到客户端的流,用于发送响应内容。 - `config`:servlet的配置信息。 - ...

    JSP课程目录

    - <jsp:forward>和<jsp:redirect>处理页面跳转 - <jsp:useBean>创建和操作JavaBean - <jsp:setProperty>和<jsp:getProperty>设置和获取Bean属性 2. **JSTL(JavaServer Pages Standard Tag Library)** - JSTL...

Global site tag (gtag.js) - Google Analytics