一 处理方法返回值设置为String类,一切麻烦都没有了:
@RequestMapping("/dologin")
public String dologin(HttpServletRequest request, User user) {
return "panel/bingo";
}
原因很简单,你返回一个String,一个字符串,这个字符串代表View的名字。你的返回值由谁来处理?答:由ViewResolver。
你告诉ViewResolver一个名字,这个名字是一个字符串。ViewResolver会依据这个名字,去WEB-INF中找到对应的jsp页面。靠,这么聪明?傻逼,你之前配置过的啊:
二 处理方法返回值设置为ModelAndView类:
@RequestMapping("/dologin")
public ModelAndView dologin(HttpServletRequest request, User user) {
User us1 = uss.getUserByName(user.getSrName());
ModelAndView mav = new ModelAndView();
mav.setViewName("login/login");
if (us1 == null) {
mav.addObject("errorMsg", "用户名不存在");
} else if (!us1.getSrPwd().equals(user.getSrPwd())) {
mav.addObject("errorMsg", "用户密码不正确");
} else {
mav.setViewName("public");
}
return mav;
}
上面使用ModelAndView对象作为返回值,最好使用setViewName()方法设置一下View的名字。这个viewname的解析过程和1中一样。
三 forward和redirect关键词
forward和redirect只能定位到WEB-INF目录之外的jsp文件
ModelAndView对象被解析,可以定位到WEB-INF目录中的jsp文件。