springmvc经常可能遇到跳转路径出现问题,下面是我对跳转路径做的总结
1、直接跳转
@RequestMapping("login")
public String login() {
return "login";
}
它是经过视图viewResolver配置的视图解析器跳转到 /WEB-INF/jsp/login.jsp下,其实它是默认为forward转发跳转
2、当springmvc都没有配置分目录管理时,通过forward:login转发到其它@RequestMapping下,只能跳转到目录一致的Controller下,就是根相同,比如都是/WEB-INF/jsp/ Controller返回的都是xx 此时就可以跳转,/WEB-INF/jsp/ xx.jsp。如果是不同的Controller,就是根目录不一样,比如从/WEB-INF/jsp/到/WEB-INF/jsp/head/则跳转实现不了,必须重定向
@RequestMapping("toLogin")
public String login() {
return "forward:login";
}
@RequestMapping("login")
public String login2() {
System.out.println("login");
return "login";
}
3、当springmvc配置了分目录管理或者跳出根目录,此时通过forward转发是跳不到其它的目录,要用到redirect重定向跳转
@RequestMapping("toLogin")
public String login() {
return "forward:login";
}
@RequestMapping("login")
public String login2() {
System.out.println("login");
return "redirect:/item/item";
}
/表示当前项目,第一个item是其它controller层配置了分目录管理@RequestMapping("item"),第二个item分目录管理@RequestMapping("item")下的一个@RequestMapping("item")方法
@RequestMapping("item")//第一个item,这种就叫做分目录管理
@Controller
public class ItemController {
@Autowired
private ItemService itemService;
@RequestMapping(value= {"item","other"})//第二个item
public String getItemList(Model model) {
List<Item> listItem = itemService.getListItem();
model.addAttribute("itemList", listItem);
model.addAttribute("msg", "success!");
return "itemList";
}