`

请求重定向(redirect)和转发(forward)之间区别

阅读更多

1. 请求的重定向通过HttpServletResponse的sendRedirect方法实现,此过程包含两次请求,具体执行过程如下:

  • 第一次请求即原始请求,是用户通过输入网址到地址栏或者点击链接所产生的请求,通过调用sendRedirect方法,服务器设置此次请求的reponse状态为302,并且设置response的Location header为最终访问资源的url。
  • 浏览器收到第一次请求的response,发现状态为302,所以又自动发送一条请求,地址即为第一次请求的response的Location header的url,此次请求为第二次请求,并且将它的response作为最终结果返回给浏览器,用户看到的结果也是第二次请求的response。
  • 因为是两次请求,所以用户看到的地址栏的url也更新为了第二次请求时所使用的url。即地址栏中的url变了。
  • 因为是两次请求,因此两次请求对应各自的HttpServletRequest和HttpServletResponse对象。
  • 因为是两次请求,所以第二次请求的资源可以不是同一服务器的资源,而是完全不同服务器上的资源。(第二次请求完全由浏览器控制,就像直接在地址栏中输入想要访问的资源)

2. 请求的转发一般通过RequestDispatcher的forward方法实现,此过程只包含一次请求,具体执行过程如下:

  • 用户通过输入网址到地址栏或者点击链接所请求服务器上的资源,服务器通过调用forward方法,根据实际的执行结果设置请求的response状态,一般为为200。
  • 浏览器收到请求的response,发现状态为200,即直接将请求的response结果反映给用户。
  • 因为是一次请求,所以用户看到的地址栏的url也没有变化,即地址栏中url没有变化。
  • 因为是一次请求,所以forward前后都是同一个HttpServletRequet和HttpServletResponse对象。
  • 因为是一次请求,所以请求的资源只能是同一服务器上的资源。
分享到:
评论

相关推荐

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

    在Java的Servlet编程中,`转发`和`重定向`是两种不同的机制,用于在服务器端将客户端的请求导向不同的资源。它们的主要区别在于请求处理流程、URL改变以及数据共享方式。 1. 转发(Forward): - 使用`...

    servlet请求转发、重定向、包含

    2. **请求重定向(Redirect)** - 请求重定向是服务器告诉浏览器需要重新发起一个新的HTTP请求到不同的URL。浏览器会显示新的URL,并且所有的请求参数都会丢失,因为这是一个全新的请求。 - 通过`...

    重定向和转发的区别

    综上所述,重定向和转发虽然都能实现页面跳转的功能,但它们在技术实现、应用场景以及对请求处理等方面存在着明显的差异。开发者在实际应用中应根据具体的业务需求和技术背景来选择合适的方式。了解这些区别有助于更...

    转发和重定向的区别

    在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的页面跳转方式,它们虽然在效果上看似相似,但其实有着本质的区别。理解这两种技术的工作原理及其应用场景对于优化应用程序的性能和用户体验至关...

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

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

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

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

    小谈“转发与重定向”

    转发(Forward)与重定向(Redirect)是Web开发中两种常见的页面跳转方式,它们各自有着不同的应用场景与特点。为了更好地理解这两种机制,我们首先来了解一下它们的基本概念。 1. **转发(Forward)**:转发是一种...

    转发与重定向的区别

    在Web开发中,转发(Forward)和重定向(Redirect)是两种常见的页面跳转方式。这两种方法虽然都能实现页面的跳转,但其内部工作原理、对客户端的影响以及应用场景都有所不同。本文将详细介绍转发与重定向之间的区别...

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    主要分为直接请求转发(Forward)和间接请求转发(Redirect)。这两种转发方式在处理请求时有着显著的区别。 直接请求转发(Forward): 直接请求转发是服务器内部的资源调度,用户在浏览器中只会看到最初的请求...

    request和response实现跳转和重定向的区别

    1. 请求重定向(Redirect): 请求重定向是通过`Response`对象来实现的,服务器在收到请求后,会返回一个状态码3xx(如301永久重定向,302临时重定向),并在响应头中设置`Location`字段,指示客户端应该去新的URL...

    请求转发和重定向的区别共1页.pdf.zip

    在Web应用开发中,请求转发和重定向是两种常见的页面跳转方式,它们在处理用户请求时起到关键作用,但工作原理和效果有所不同。这里我们将深入探讨这两种技术的区别。 首先,我们来理解请求转发(Request Forward)...

    请求转发与重定向详解代码

    在Web开发中,请求转发(Request Forward)和重定向(Redirect)是两种常见的处理客户端请求的方式,它们在处理用户请求并展示相应页面时起到关键作用。这篇文章将深入讲解这两种技术的工作流程,以及它们在实际应用...

    (代码)SpringMVC第6讲:请求转发和重定向

    在Spring MVC框架中,请求转发和重定向是两种常见的页面跳转方式,它们在处理用户请求和构建应用程序的流程控制中扮演着重要角色。本文将深入探讨这两种技术,并结合实际的代码示例来阐述其工作原理和使用场景。 ...

    一个基于struts的重定向和转发实例

    在这个基于Struts的重定向和转发实例中,我们将探讨这两个关键概念在Web应用程序中的应用。 首先,让我们理解什么是重定向和转发: 1. **重定向(Redirect)**:在HTTP响应中,服务器向客户端发送一个302状态码,...

    jsp中标签,对象存储与提交,还有重定向和转发的区别。

    而掌握重定向和转发的区别,则能优化用户体验并正确处理页面间的导航逻辑。 项目总体规划文档(项目总体规划.docx)可能包含了关于实习项目的整体设计思路、技术选型、开发计划等内容,而WebDemo可能是一个实际的...

    JavaWeb中的 请求转发 和 重定向.docx

    在JavaWeb开发中,请求转发和重定向是两种常见的客户端请求处理方式,它们都是用于将一个请求从一个Servlet传递到另一个Servlet或者从一个资源跳转到另一个资源。这两种方法虽然都可以实现页面间的跳转,但它们的...

    javaweb转发和重定向

    javaweb请求转发的简单实例,演示了forward()方法和getRequestDispatcher()的不同之处

    深入浅出Java 重定向和请求转发的区别

    在Java Web开发中,了解重定向(Redirect)和请求转发(Request Forward)的区别至关重要,因为它们是控制HTTP请求流向的主要手段。这两种技术都是用来在不同的Web资源之间传递控制,但它们的工作方式和应用场景有所...

Global site tag (gtag.js) - Google Analytics