首页 > 编程语言 > 详细

SpringBoot入门教程(二十二)controller 之间实现跳转

时间:2020-03-14 20:32:35      阅读:441      评论:0      收藏:0      [点我收藏+]

如下图,创建两个控制器来测试跳转效果。以下所有跳转方式均以这两个控制器为实例。

技术分享图片

? 1 sendRedirect方式
response.sendRedirect("redirect:映射路径?参数名="+参数值);
? 2 forward方式
package com.demo.controller.Jump;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by toutou on 2019/1/27.
 */
@Controller
@Slf4j
public class FirstJumpController {
    @RequestMapping(value = "/myfirst")
    public String MyFirst(){
        // 如果使用ModelAndView方式: return new ModelAndView("forward:/mysecond");
        // forward是请求转发,是服务器端行为,相当于一次请求,地址栏的 URL 不会改变。
        return "forward:/mysecond";
    }
}
? 3 redirect方式
    @RequestMapping(value = "/myfirst2")
    public String MyFirst2(){
        // redirect是请求重定向,是客户端行为,相当于两次请求,地址栏的 URL 会改变。
        return "redirect:/mysecond";
    }
? 4 拼接url方式
    @RequestMapping(value = "/myfirst3")
    public String MyFirst3(String name){
        // redirect是请求重定向,是客户端行为,相当于两次请求,地址栏的 URL 会改变。
        return "redirect:/mysecond2?name=" + name;
    }

bug: 参数包含中文字符的话,容易出现问题

? 5 RedirectAttributes方式

第一种:redirectAttributes.addAttributie("prama",value);

redirectAttributes.addAttribute("prama1",value1);
redirectAttributes.addAttribute("prama2",value2);
return:"redirect:/path/list" 

不足:这种方法相当于在重定向链接地址追加传递的参数:return:"redirect:/path/list?prama1=value1&prama2=value2(直接追加参数会将传递的参数暴露在链接的地址上,非常的不安全)

第二种:redirectAttributes.addFlashAttribute("prama",value);

redirectAttributes.addFlashAttribute("prama1",str);
redirectAttributes.addFlashAttribute("prama2",list);
redirectAttributes.addFlashAttribute("prama3",map);
return:"redirect:/path/list" ;

此方法隐藏了参数,链接地址上不直接暴露,但是能且只能在重定向的页面上获取prama的值。其原理是参数放到了session中,session在跳转之后马上移除对象。如果重定向到一个controller,是取不到该prama的值的。

? 6 modelAndView方式
public ModelAndView findProjectPage() {
        ModelAndView modelAndView = new ModelAndView("redirect:映射路径?参数名="+参数值);
        XXXXXXX
        return modelAndView;
    }

SpringBoot入门教程(二十二)controller 之间实现跳转

原文:https://www.cnblogs.com/toutou/p/springboot_controller.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!