springboot页面跳转怎么实现?有哪些方式?

在前端中,跳转页面是可以说是最基础也是最核心的功能之一,最基础是它的实现可以说是极为简单,最核心是不管什么项目都需要这个功能,这次我们就来看看该如何在springboot中跳转页面。

一般来说,springboot的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中测试:

springboot页面跳转

还可以在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";
    }
}

测试:

springboot页面跳转

以上就是本篇文章的所有内容了,你都明白了吗?更多java项目中常见问题,请记得关注我们了解答案。

推荐阅读:

springboot整合quartz要如何实现?需要哪些依赖?

springboot打war包部署如何配置?

springboot设置日志级别详解,如何设置