在JSP中,可以使用response.sendRedirect("");
来重定向,但这条语句不会终止函数执行,即执行完这条语句之后,后面的语句还会执行,这就会造成一些问题。
例如有如下显示店铺的控制器,如果用户设置类店铺名,就显示店铺,如果没有,就跳转到店铺名设置页面。
@RequestMapping(method = RequestMethod.GET, path = "/shop/{shopid}")
public String showmyshop(Model model,
@PathVariable String shopid) {
ShopEntity shop = shopService.getShop(shopid);
if(shop==null){
System.out.println("商铺不存在");
//TODO 跳转到店铺名设置页面
}
return "user/seller/myshop";
}
很明显,TODO 里是一个跳转语句,那么,能不能使用呢?
response.sendRedirect("/shopnamesetting");
答案是不能,使用这句的话,函数不会返回,而是继续执行return "user/seller/myshop";
,结果是不会跳转。
所以,这里应该用“redirect:”跳转指示符来跳转:
return "redirect:/shopnamesetting";
当返回的字符串中带有“redirect:”或“forward:”前缀时,Spring MVC会对其进行特殊处理,将“redirect:”或“forward:”当做指示符,其后的字符串当做URL来处理