// 获取视图名,如果没有设置视图名,返回一个默认的视图名,就是url对应的字符串当做视图
// 在处理请求时会做的事情
org.springframework.web.servlet.DispatcherServlet.applyDefaultViewName(processedRequest, mv);{
// 如果没有异常,并且modeAndView中没有设置视图
// 在Controller的方法中,没有添加ResponseBody注解,也没有添加String返回值,也没有使用Response响应
// 此时springmvc默认会返回一个空的modeAndView,符合这个条件
// 例如: @GetMapping("haha") public void haha(HttpServletRequest req) { req.setAttribute("luck", "luck");}
// 视图名会被解析成haha,因为不管有没有返回值,都会返回一个ModelAndView
// 大胆猜测,如果我的方法返回void,然后将设置属性到request,或者model中,然后SpringMVC会自动跳转到路径对应的jsp页面
// 也就是haha.jsp中,这个时候,在jsp中${luck}是可以获取到值的
if (mv != null && !mv.hasView()) {
// 获取一个默认的视图名,就是url对应的字符串当做视图
String defaultViewName = getDefaultViewName(request);
// 将这个当做是视图名,到时候找对应文件渲染
if (defaultViewName != null) {
mv.setViewName(defaultViewName);
}
}
}