• 哆啦a梦教你页面的转发与重定向


    大家好,我是郭尕~
    在这里插入图片描述

    spring MVC视图

    1. 简单实例

    在Spring MVC的控制器方法中,常见的返回类型有ModelAndView、String、void。其中ModelAndView类型中可以添加Model数据并指定视图;String类型的返回值可以跳转试图,但是不能携带数据;void类型主要在异步请求时使用,只返回数据,不跳转视图。

    由于ModelAndView类型未能实现数据与视图之间的解耦,通常返回类型会选择String,那么用String作为返回值类型时, 如何将数据带入视图页面呢?

    这就需要Model参数类型来实现了,通过该参数类型,就可以添加需要在视图中显示的信息。

    控制器方法如下:

    @RequestMapping("/modelTest")
        public String modelTest(Model model){
            model.addAttribute("msg","这是一个Spring MVC 程序!");
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    String类型除了返回上述代码的视图页面外,还可以进行重定向与请求转发

    2. forward请求转发视图

    在发送请求的时候,可以通过forward:来实现转发的功能
    forward:也可以由一个请求跳转到另外一个请求

    控制器方法如下:

    @RequestMapping("/forwardTest")
        public String forwardTest(){
            return "forward:/modelTest";
        }
    
    • 1
    • 2
    • 3
    • 4

    注意:当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"forward:"去掉,剩余部分作为最终路径通过转发的方式实现跳转。

    3. redirect重定向视图

    redirect :重定向的路径

    控制器方法如下:

    @RequestMapping("/redirectTest")
        public String redirectTest(){
            return "redirect:/modelTest";
        }
    
    • 1
    • 2
    • 3
    • 4

    注意:当控制器方法中所设置的视图名称以"redirect:"为前缀时,创建RedirectView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是会将前缀"redirect:"去掉,剩余部分作为最终路径通过重定向的方式实现跳转。

    4. 重定向和转发的区别

    4.1 转发

    由服务器的页面进行跳转,不需要客户端重新发送请求:
    特点如下:
    1、地址栏的请求不会发生变化,显示的还是第一次请求的地址
    2、请求的次数,有且仅有一次请求
    3、请求域中的数据不会丢失
    4、根目录:localhost:8080/项目地址/,包含了项目的访问地址
    在这里插入图片描述

    4.2 重定向

    在浏览器端进行页面的跳转,需要发送两次请求(第一次是人为的,第二次是自动的)
    特点如下:
    1、地址栏的地址发生变化,显示最新发送请求的地址
    2、请求次数:2次
    3、请求域中的数据会丢失,因为是不同的请求
    4、根目录:localhost:8080/ 不包含项目的名称
    在这里插入图片描述

    4.3 对比

    区别

    转发(forward)

    重定向(redirect)

    根目录

    包含项目访问地址

    没有项目访问地址

    地址栏

    不会发生变化

    会发生变化

    跳转位置

    服务器端

    浏览器端

    请求域中的数据

    不会丢失

    会丢失

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板
    目标检测学习--yolo v4
    stdmap和stdmultimap的使用总结
    【OpenGL概念】QOpenGLWidget类详述--此文档基于Qt5.14.2
    Bigemap在土地规划行业是怎么应用的?
    [附源码]Python计算机毕业设计Django儿童早教课程管理系统论文2022
    【python】基础语法
    基于STC15单片机-LM35-DS8B20温度测量-DS1302计时-proteus仿真-源程序
    ROS+Gazebo+PX4(关系,配置资料)
    使用python获取城市经纬度以及城市间的距离、火车时间、所需成本等
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126066173