`
dilei1366
  • 浏览: 2101 次
  • 性别: Icon_minigender_1
  • 来自: 濮阳
社区版块
存档分类
最新评论

转发和重定向的区别

阅读更多
转发:首先地址URL不会改变..其次转发forward需要传两个参数request和response  可以在转发后的页面通过request.getParameter()取值...
重定向:重定向的URL地址会改变成重定向后的页面的URL,并且没有参数传递。不能通过request.getParameter()取值....只能通过seesion,application等来取值...



转发与重定向的区别,这在求职中是一个经常被问到的问题。所谓转发,实际上是指下面这条语句:

   request.getRequestDispatcher("某地址").forward(request, response);

  它能将请求由一个Servlet转到另外一个Servlet,或者在JSP页面之间转向。另一种用得比较多的是重定向,它的代码如下:

  response.sendRedirect("某地址");

  从本质上来说,它们的区别在于是否生成响应。上面那句话在执行时,实际上是生成了一个临时响应,这个响应是一个用户无法看到的响应,状态码是300。浏览器在接收到这个响应后,不显示任何东西,而再次发出一个请求到重定向的响应所指定的地址上。因此,用户最后看到的最后结果并不是第一次请求过的地址,而是重定向后的地址产生的结果。而请求的转发则不同,它是将请求交给另外一个Servlet来处理,然后处理好的结果还是由原来的Servlet返回。

  在讲到这里时,我经常举的一个例子是买白菜的例子。

  我是一个程序员,但是你不知道,以为我是卖白菜的,来找我买白菜。那么,我有两种选择,一是我去菜市场找个卖白菜,一毛钱买进来,然后再两毛钱卖给你。在这个过程中,你自始至终都是跟我一个人打交道,你并不知道菜农的存在;二是我直接告诉你,你找错人了,你应该去找菜农,然后你找到菜农,也买到了白菜。

  在这个例子中,前者就是请求的转发,后者就是响应的重定向。前者是一个请求“买菜”,一个响应“菜给你”,但菜怎么来的你不用管。后者是两次请求,两次响应。先请求一次,然后响应告诉你找错了人,接下来再请求正确的人,最后直接拿到结果。

  总结一下,它们的区别有三点:
1、是否生成响应;
2、地址栏是否发生变化;
3、是否在同一个请求作用域中
分享到:
评论

相关推荐

    转发与重定向的区别

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

    请求转发与重定向的区别

    2. 实践编程:通过编写实际的Servlet或Filter来实现请求转发和重定向,这能帮助你更好地掌握它们的用法和区别。 3. 分析案例:研究不同应用场景下,何时选择请求转发,何时选择重定向,这有助于你在实际工作中做出...

    重定向和转发的区别

    ### 重定向与转发的区别 在Web开发中,经常需要用到重定向(Redirect)与转发(Forward)这两种控制页面跳转的技术。尽管它们都能实现页面之间的跳转,但在具体的应用场景和技术实现上却有着本质的不同。下面将从多...

    转发与重定向区别

    尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。下面是HttpServletResponse.sendRedirect方法实现的...

    jsp 转发和重定向的区别(forward sendRedicreat)

    jsp 转发和重定向的区别 jsp 转发和重定向是两种常见的控制转移方式,它们都可以把控制从一个页面转到另一个页面,但是它们有很大的区别。 转发 jsp 转发是通过 `<jsp:forward>` 元素或 `request....

    请求转发与重定向

    在Web开发中,**请求转发**与**重定向**是两种非常重要的控制流程技术,它们都用于实现页面跳转的功能,但其工作原理和应用场景有所不同。 #### 二、请求转发 ##### 1. 定义 **请求转发**是在服务器内部进行的,它...

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

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

    小谈“转发与重定向”

    总结而言,转发与重定向各有优势与局限性,开发者需要根据具体的应用场景和技术需求来灵活选择使用哪种方式。通常情况下,如果希望在同一个Web应用内部进行跳转,并且希望保持请求的数据不丢失,那么选择转发更为...

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

    Servlet请求转发、重定向和包含是Servlet中处理客户端请求的重要技术,它们都涉及到如何有效地管理用户请求和页面跳转,但各自有不同的特性和应用场景。 1. **请求转发(Request Forward)** - 请求转发是在服务器...

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

    本篇文章将详细解析请求转发与重定向的区别。 一、请求转发(Request Forwarding) 1. 定义:请求转发是在服务器端完成的内部操作,它不涉及客户端浏览器的任何更改。当服务器接收到一个请求后,可以决定将该请求...

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

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

    javaServlet请求转发和重定向.pdf

    请求转发和重定向的主要区别在于: * 请求转发只能将请求转发给同一个 Web 应用中的组件,而 sendRedirect() 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。 * 请求转发过程结束后...

    java 转发和重定向区别及实例代码

    在Java Web开发中,转发(Forward)和重定向...理解这些区别有助于我们在实际开发中合理选择使用转发或重定向,以实现更高效和安全的Web应用。同时,了解这些基础知识也能帮助我们更好地排查和解决问题,提升编程效率。

    Servlet转发与重定向

    Servlet 转发与重定向是 Java Servlet 编程中两个重要的概念,它们都可以让浏览器获得另外一个 URL 所指向的资源,但是它们的内部运行机制有着很大的区别。 RequestDispatcher.forward 方法 RequestDispatcher....

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

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

Global site tag (gtag.js) - Google Analytics