精华内容
下载资源
问答
  • 转发与重定向区别 转发是实际上是服务器内部的一次请求,重定向是客户端的两次请求。基本表现为转发时候浏览器地址不会发生改变,而重定向会改变。由此导致对应 Request 域来说,转发能够在内共享数据,而重定向则...

    转发与重定向的区别

    转发是实际上是服务器内部的一次请求,重定向是客户端的两次请求。基本表现为转发时候浏览器地址不会发生改变,而重定向会改变。由此导致对应 Request 域来说,转发能够在内共享数据,而重定向则不能。当然,转发只能跳转服务器内部的URL指令,重定向能够跳转服务器外部URL。两者各有用途,本文主要简单罗列在 Spring MVC 中的基本使用。

    直接将 Spring MVC 的转发与重定向代码复制如下:

    @Controller
    @RequestMapping("/testView")
    public class VieController {
        @RequestMapping("/testThymeleafView")
        public String thymeleafView(){
            return "first";
        }
        @RequestMapping("/testForward")
        public String forwardView(){
            return "forward:/testView/testThymeleafView";
        }
        @RequestMapping("/testRedirect")
        public String redirectView(){
            return "redirect:/testView//testThymeleafView";
        }
    }
    

    浏览器代码地址
    其中第一个请求 http://localhost:8080/SpringMVC/testView/testForward 为转发和重定向的页面,这里利用了 ThymeleafView 技术,转发的页面为 first.html 。
    /testForward 请求为转发页面。 /testRedirect 为重定向页面。
    首先,观察浏览器的不同点,
    分别在输入:
    http://localhost:8080/SpringMVC/testView/testRedirect
    http://localhost:8080/SpringMVC/testView/testForward
    浏览器会显示:
    http://localhost:8080/SpringMVC/testView//testThymeleafView
    http://localhost:8080/SpringMVC/testView/testForward
    浏览器地址会在重定向的时候再次发送一个新的URL,在转发时则不会改变。

    request 于内容变化
    为了更好的测试,将后端代码改为:

    @Controller
    @RequestMapping("/testView")
    public class VieController {
        @RequestMapping("/testThymeleafView")
        public String thymeleafView(HttpServletRequest request){
            return "first";
        }
        @RequestMapping("/testForward")
        public String forwardView(HttpServletRequest request){
            request.setAttribute("test","testForward");
            return "forward:/testView/testThymeleafView";
        }
        @RequestMapping("/testRedirect")
        public String redirectView(HttpServletRequest request){
            request.setAttribute("test","testRedirect");
            return "redirect:/testView/testThymeleafView";
        }
    }
    

    这里主要分别修改 Request 域的数据,其中 键值为 test ,对于转发与重定向分别写入,对前端页面进行展示最终 Request 域中 test 的 value 值。
    代码如下:

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.themleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    测试结果:
    <p th:text="${test}"></p>
    </body>
    </html>
    

    浏览器输入:http://localhost:8080/SpringMVC/testView/testForward
    前端显示为

    测试结果:
    testForward
    

    由此可知在转发状态下,转发的页面能够进行数据共享的。

    浏览器输入:http://localhost:8080/SpringMVC/testView/testRedirect
    测试结果

    测试结果:
    

    结果为空可知,重定向无法共享 Request 域的数据。
    当然,Application,Session 这两个更大范围的域在转发和重定向都是可以共享数据的。

    在 Spring MVC 中,无论是直接到页面还是转发重定向,都会经过SpringMVC中的视图解析器的View接口,视图的作用渲染数据,将模型Model中的数据展示给用户。SpringMVC视图的种类很多,默认有转发视图和重定向视图。若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,由此视图解析器解析之后所得到的是ThymeleafView。
    在代码中,ThymeleafView当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置
    的视图解析器解析,视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转。
    SpringMVC中默认的转发视图是InternalResourceView,SpringMVC中创建转发视图的情况:当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部分作为最终路径通过转发的方式实现跳转。
    SpringMVC中默认的重定向视图是RedirectView,当控制器方法中所设置的视图名称以"redirect:"为前缀时,创建RedirectView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"redirect:"去掉,剩余部分作为最终路径通过重定向的方式实现跳转。

    Spring MVC 中确定哪个接口的源码方法如下:

    View view;
    if (viewName != null) {
          view = this.resolveViewName(viewName, mv.getModelInternal(), locale, request);
          if (view == null) {
                throw new ServletException("Could not resolve view with name '" + mv.getViewName() + "' in servlet with name '" + this.getServletName() + "'");
         }
        } else {
           view = mv.getView();
           if (view == null) {
           throw new ServletException("ModelAndView [" + mv + "] neither contains a view name nor a View object in servlet with name '" + this.getServletName() + "'");
       }}
    
    展开全文
  • 跳转的方式有两种,服务端跳转(转发)和客户端跳转(重定向)。 这两种当然是有不同之处,下面就来看看两者的区别转发的特点: 地址栏不发生变化,显示的是上一个页面的地址 请求次数:只有1次请求 根目录

    在学习Servlet后,我们知道了如何页面跳转和从页面获取参数等。下面要说的就是其中的页面跳转,页面跳转是开发一个web应用经常会发生的事情。比如登录成功或是失败后,分别会跳转到不同的页面。跳转的方式有两种,服务端跳转(转发)和客户端跳转(重定向)。
    这两种当然是有不同之处,下面就来看看两者的区别。

    转发的特点:

    1. 地址栏不发生变化,显示的是上一个页面的地址
    2. 请求次数:只有1次请求
    3. 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
    4. 请求域中数据不会丢失

    代码如下图所示:
    在这里插入图片描述

    在浏览器地址栏输入http://localhost:8080/JWeb/LoginServlet,
    效果如下图所示:
    在这里插入图片描述

    可以看到页面成功跳转了,但是地址栏没有发生变化。

    下面再看重定向
    特点:

    1. 地址栏:显示新的地址
    2. 请求次数:2次
    3. 根目录:http://localhost:8080/ 没有项目的名字
    4. 请求域中的数据会丢失,因为是2次请求
      代码如下图所示:
      在这里插入图片描述

    同样浏览器地址栏输入http://localhost:8080/JWeb/LoginServlet
    效果如下图所示:
    在这里插入图片描述

    页面成功跳转了,但是地址栏发生了变化。

    以上就是Servlet中转发和重定向的最大区别,详细区别如下图所示:
    在这里插入图片描述

    (摘自学习文档)
    以上就是这个案例全部内容了,供大家学习和参考。

    展开全文
  • 1、重定向的地址栏会变,而请求转发不会。 2、用户可以知道重定向使用那些资源,用户不知道请求转发内部发生什么。 3、请求转发只能是一次请求,用request对象共享数据,并且只能是当前服务器下的资源。 4、重定向两...

    区别:
    1、重定向的地址栏会变,而请求转发不会。
    2、用户可以知道重定向使用那些资源,用户不知道请求转发内部发生什么。
    3、请求转发只能是一次请求,用request对象共享数据,并且只能是当前服务器下的资源。
    4、重定向两次请求,不能使用request对象共享数据,可以访问其他站点服务器下的资源。

    展开全文
  • 之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还...

    重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

    怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。

    转发和重定向的区别

    不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。

    重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。

    转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。

    展开全文
  • 转发是服务器行为,重定向是客户端行为1.转发在服务器端完成的;重定向是在客户端完成的2.转发的速度快;重定向速度慢3.转发的是同一次请求;重定向是两次不同请求4.转发不会执行转发后的代码;重定向会执行重定向之后的...
  • Servlet 转发与重定向

    2021-04-14 21:56:36
    当文档移动到新的位置,我们需要向客户端发送这个新位置时,我们需要用到网页重定向。当然,也可能是为了负载均衡,或者只是为了简单的随机,这些情况都有可能用到网页重定向重定向请求到另一个网页的最简单的...
  • 为什么有转发重定向区别
  • 展开全部转发与重定32313133353236313431303231363533e4b893e5b19e31333363396334向的区别如下:转发是服务器行为,重定向是客户端行为1.转发在服务器端完成的;重定向是在客户端完成的2.转发的速度快;重定向速度慢3....
  • 请求转发 在一个浏览器发送请求时,需要多个web资源上传才能有响应结果,但因为servlet对象无法调用其他的servlet,就像是有两个servlet对象,客户端请求到servlet1后,servlet1又转发到servlet2,最后由servlet2为...
  • 转发重定向区别

    2021-03-07 07:51:58
    转发重定向区别 / 转发 重定向 请求数量 使用转发时从始至终只发生了一个请求 使用重定向时 会重新生成一个新的请求 跳转限制 转发只能跳转到本站点的其他地方 使用重定向时可以跳转至任意URL ...
  •  /*转发到ShowServlet context .getRequestDispatcher("/ShowServlet") .forward(request,response); */ //重定向到ShowServlet 是走get方法 response.sendRedirect("/day07/ShowServlet"); }} ...
  • 主要是探究servlet跳转也面的两个方式转发重定向区别 一、转发重定向是什么? 当我们在登录页面的时候输入了账号密码然后点击登录按照正常的逻辑应该要跳转一个登录成功或者是失败的页面,那么如何跳转过去呢...
  • 内部转发重定向区别 内部转发地址栏不会发生改变 而重定向地址栏会发生改变 重定向相当于发送了两次请求,而内部转发只有一次请求 重定向(路径)相对于tomcat服务器 ,而内部转发是相对于web应用 重定向可以访问...
  • 文章目录前言一、转发重定向区别?1.方式2.相同点3.不同点二、图文详解1.流程图2.代码测试总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,...
  • 请求转发与重定向区别 学习spring时又想到了javaweb的小知识 我觉得这个问题我们有必要来搞清楚一下。其实理清关系也不是很难。 转发request: request.getRequestDispatcher(path).forward(request, response); ...
  • 请求转发重定向区别 1、请求转发是服务器行为,重定向是客户端行为。 2、请求转发只能将请求转发给同一个web应用下的其他页面 重定向不仅可以将请求转发给同一个web应用下的其他页面,还可以转发到其它站点的 ...
  • 请求转发与重定向

    2020-12-24 20:18:38
    一、请求转发重定向 1)请求转发 关键词 request 语法:request.getRequestDispatcher(URL地址).forward(request, response) 2)重定向 关键词 request 语法:response.sendRedirect(URL地址) 二.请求转发代码实例...
  • 这两个例子,在车上改目的地,是“请求转发”, 重新打车是“请求重定向” 请求转发时,浏览器地址栏中的地址不会变换,二请求重定向时,浏览器地址栏中的地址会变化。也就是请求转发通过浏览器发了一次请求,请求...
  • 定义1.1 转发1.2 重定向2. springmvc实战代码3. 总结异同 前言 页面跳转的主要两种实现方式: 转发 重定向 1. 定义 1.1 转发 在客户端中发送请求到服务端,在服务端中有所匹配的servlet即可,之后servlet执行其...
  • 复习-转发与重定向

    2021-01-30 15:45:45
    请求转发:一种在服务器内部的资源跳转方式 1. 步骤: 1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) 2. 使用RequestDispatcher对象来进行转发:forward...
  • 转发重定向

    2021-03-30 15:03:46
    重定向可以理解为重新定向资源,当服务器进行转发时,客户端会进行2次请求,资源地址也会跟着变化, 通俗点理解:客户机想服务器请求资源,但是服务器没有这个资源,这时候服务器会返回一个302的状态给客户端,并...
  • 转发与重定向区别

    2021-04-26 22:49:36
    转发 转发的作用在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理。 1.页面跳转 request.getRequestDispatcher("/目标URL-pattern").forward(request, response); 使用forword跳转时,是在...
  • 转发与重定向区别

    2021-05-26 22:48:01
    servlet请求转发与重定向区别: request.setAttribute(“test”,“hello”); request.getRequestDispacther("/test.jsp").forword(request,response); response.sendRedirect(“test.jsp”); 一、显示结果: 1、当...
  • SpringMVC转发重定向

    2021-04-28 16:11:43
    SpringMVC转发重定向 @Controller public class ModelTest { @RequestMapping("/m/t1") public String test1(Model model){ model.addAttribute("msg","ModelTest"); //转发 return "hello"; //也可以写成...
  • 以何种方式前往 type的常用取值: dispatcher:请求转发 redirect:重定向重定向到一个动作或者重定向到.jsp) redirectAction:重定向到另一Action(自动在后面拼接url后缀,所以只能重定向到动作) 请求转发 : ...
  • 一、如何区分转发重定向?生活中一个简单例子足以说明:转发:某人去了甲局,甲局看了之后,直到护照应该由乙局来管,但甲局的工作人员并没有赶走某人,而是让某人等着...二、请求转发与重定向的定义及实现方式:(...
  • post get请求的额区别 比较角度 GET POST ...请求的数据是否在url上显示 ...转发与请求重定向区别 一般提交成功响应重定向 输入失败跳转到登陆界面请求转发转发 重定向 转发不可以跨
  • 在设计Web应用程序的时候,经常需要把一个系统...为了实现这种程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet中主要有两种实现跳转的方式:forward方式redirect方式。forward是服务器内部的...
  • 请求转发 和 请求重定向区别 转发 由服务器完成; 地址栏不发生变化,显示的转发前的地址(针对浏览器); 只发生一次请求; 请求中携带的参数不会丢失。 重定向 服务端告诉浏览器或客户端重定向的地址,由...
  • 转发重定向区别

    2021-07-08 14:00:31
    重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次; 2、地址栏不同 重定向地址栏会发生变化,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 108,459
精华内容 43,383
关键字:

转发与重定向的区别

友情链接: doc.rar