0
点赞
收藏
分享

微信扫一扫

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


大家好,我是郭尕~

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


spring MVC视图

  • ​​1. 简单实例​​
  • ​​2. forward请求转发视图​​
  • ​​3. redirect重定向视图​​
  • ​​4. 重定向和转发的区别​​
  • ​​4.1 转发​​
  • ​​4.2 重定向​​
  • ​​4.3 对比​​

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/项目地址/,包含了项目的访问地址

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

4.2 重定向

在浏览器端进行页面的跳转,需要发送两次请求(第一次是人为的,第二次是自动的)

特点如下:

1、地址栏的地址发生变化,显示最新发送请求的地址

2、请求次数:2次

3、请求域中的数据会丢失,因为是不同的请求

4、根目录:localhost:8080/ 不包含项目的名称

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

4.3 对比

区别

转发(forward)

重定向(redirect)

根目录

包含项目访问地址

没有项目访问地址

地址栏

不会发生变化

会发生变化

跳转位置

服务器端

浏览器端

请求域中的数据

不会丢失

会丢失


举报

相关推荐

0 条评论