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