Spring Boot中的页面跳转
通常来说,Controller
都会返回一个视图名称,Spring Boot
会默认在main/resource/templates
目录下找,因为该目录是安全的,意味着该目录下的内容是不允许外界直接访问的。有些情况下,Controller
会返回客户端一个HTTP Redirect
重定向请求,希望客户端按照指定地址重新发起一次请求,比如客户登陆成功之后,重定向到后台系统首页;客户端通过POST提交了一个订单,可以返回一个重定向请求到此订单明细的请求地址,这样做的好处就是,如果用户再次刷新界面,则访问的是订单详情地址,而不会是再次提交订单。
1. return new ModelAndView("redirect:http://www.appblog.cn/success"); //若报错则采用方法3或4
2. return "redirect:http://www.appblog.cn/success"; //若报错则采用方法3或4
3. return new RedirectView("http://www.appblog.cn/success");
4. return new ModelAndView(new RedirectView("http://www.appblog.cn/success"));
redirect
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";
}
}
还可以在ModelAndView
中设置带有redirect:
为前缀的URI:
ModelAndView modelAndView = new ModelAndView("redirect:/detail.html?openId=" + user.getUserOpenid());
或者直接使用RedirectView
类:
RedirectView redirectView = new RedirectView("redirect:/detail.html?openId=" + user.getUserOpenid());
forward
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";
}
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/20/page-jumping-in-spring-boot/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论