Springboot中的页面跳转

作者: PawsUp | 来源:发表于2019-03-15 16:00 被阅读35次

    通常来说,Controller都会返回一个视图名称,Springboot会默认在main/resource/templates目录下找,因为该目录是安全的,意味着该目录下的内容是不允许外界直接访问的。有些情况下,Controller会返回客户端一个HTTP Redirect重定向请求,希望客户端按照指定地址重新发起一次请求,比如客户登陆成功之后,重定向到后台系统首页;客户端通过POST提交了一个名单,可以返回一个重定向请求到此订单明细的请求地址,这样做的好处就是,如果用户再次刷新界面,则访问的是订单详情地址,而不会是再次提交订单。

    • Controller中重定向返回以redirect:为前缀的URI :

      首先,在main/resource/templates下创建一个detail.html

      controller中的代码如下(仅供参考):

      @Controller
      @RequestMapping
      @Slf4j
      public class DemoController {
      
        @Resource
        private UserMapper userMapper;
      
        @PostMapping("/insertuser.html")
        public String insertUser(User user){
      
            /**
             * 插入用户信息,返回用户详情界面
             */
            return "redirect:/detail.html?openId="+user.getUserOpenid();
        }
      
        @GetMapping("/detail.html")
        public String getUser(@RequestParam  String openId ,Model model){
      
            User user = userMapper.selectByOpenId(openId);
      
            model.addAttribute("user",user);
      
           return "detail.html";
        }
      
      }
      

      在postman中测试(在这里不在显示数据):


      image.png

      还可以在ModelAndView中设置带有redirect:为前缀的URI :

      ModelAndView modelAndView=new ModelAndView("redirect:/detail.html?openId="+user.getUserOpenid());
      

      或者直接使用RedirectView类:

      RedirectView redirectView = new RedirectView("redirect:/detail.html?openId="+user.getUserOpenid());
      
    • Spring MVC也支持foward前缀,用来在Controller执行完毕后,再执行另一个Controller中的方法。

      @Controller
      @RequestMapping
      @Slf4j
      public class DemoController {
      
         @GetMapping("/index")
         public String index(){
      
             return "forward:/detail/1-2.html";
         }
      
         @GetMapping("/detail/{pageIndex}-{pageSize}.html")
         public String module(@PathVariable int pageIndex,
                              @PathVariable int pageSize) {
      
             log.info("pageIndex-pageSize:{}",pageIndex+"-"+pageSize);
      
             return "detail.html";
         }
      }
      

      在postman中测试:


      image.png

    相关文章

      网友评论

        本文标题:Springboot中的页面跳转

        本文链接:https://www.haomeiwen.com/subject/pmoqsqtx.html