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";
    }

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

2. forward请求转发视图

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

控制器方法如下:

@RequestMapping("/forwardTest")
    public String forwardTest(){
        return "forward:/modelTest";
    }

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

3. redirect重定向视图

redirect :重定向的路径

控制器方法如下:

@RequestMapping("/redirectTest")
    public String redirectTest(){
        return "redirect:/modelTest";
    }

注意:当控制器方法中所设置的视图名称以"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)
根目录 包含项目访问地址 没有项目访问地址
地址栏 不会发生变化 会发生变化
跳转位置 服务器端 浏览器端
请求域中的数据 不会丢失 会丢失
相关文章
|
1月前
|
JSON 前端开发 Java
spring mvc Rest风格
spring mvc Rest风格
20 0
|
17天前
|
前端开发 Java 应用服务中间件
我以为我对Spring MVC很了解,直到我遇到了...
所有人都知道Spring MVC是是开发的,却鲜有人知道Spring MVC的理论基础来自于1978 年提出MVC模式的一个老头子,他就是Trygve Mikkjel Heyerdahl Reenskaug,挪威计算机科学家,名誉教授。Trygve Reenskaug的MVC架构思想早期用于图形用户界面(GUI) 的软件设计,他对MVC是这样解释的。MVC 被认为是解决用户控制大型复杂数据集问题的通用解决方案。最困难的部分是为不同的架构组件想出好的名字。模型-视图-编辑器是第一个。
我以为我对Spring MVC很了解,直到我遇到了...
|
26天前
|
前端开发 Java Spring
Spring MVC中使用ModelAndView传递数据
Spring MVC中使用ModelAndView传递数据
|
1月前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
32 1
|
1月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
24 1
|
1月前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
|
1月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
29 3
|
19天前
|
XML 前端开发 Java
Spring Boot与Spring MVC的区别和联系
Spring Boot与Spring MVC的区别和联系
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
1月前
|
JSON 前端开发 数据格式
SpringMVC的数据响应-直接回写json字符串
SpringMVC的数据响应-直接回写json字符串