springMVC系列源码之请求处理过程――12(三)
2014-11-24 02:25:31
·
作者:
·
浏览: 4
View(ModelAndViewContainer mavContainer,
ModelFactory modelFactory, NativeWebRequest webRequest) throws Exception {
modelFactory.updateModel(webRequest, mavContainer);
if (mavContainer.isRequestHandled()) {
return null;
}
ModelMap model = mavContainer.getModel();
ModelAndView mav = new ModelAndView(mavContainer.getViewName(), model);
if (!mavContainer.isViewReference()) {
mav.setView((View) mavContainer.getView());
}
if (model instanceof RedirectAttributes) {
Map
flashAttributes = ((RedirectAttributes) model).getFlashAttributes();
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
RequestContextUtils.getOutputFlashMap(request).putAll(flashAttributes);
}
return mav;
}
然后经过一系列的Handlerinteceptor处理 处理被handler和handler adapter处理的result。最后将解析结果View返回给DispatcherServlet、
补充:
这里只是从抽象的角度来分析了一个请求的处理过程、具体的细节则是不同的实现类有不同的实现方式、不再过度关注、对源码的了解也是对设计者的思想的一种了解、随着时间的推移、各种各样的框架会层出不穷、但是万变不离其宗、掌握了最基础、最核心的东西、在接触新东西时就能更加的从容一点。并且不同框架之间也有些许相通的地方、比如springMVC的过滤器与struts2中是如此的相似、但是springMVC的过滤器多了一个完成之后的操作、同时也允许自己去扩展等等等等。到现在也告一小段落、总体的体会是:学习一个框架、理解设计思想、设计模式是非常重要的、还有对类的说明都是直接为我们展示设计者想要实现或者达到的目的。没事多看看官方文档、英文还是硬伤、但是不看永远都不会、看了、坚持下来、总有认识他的时候。
更多内容: springMVC系列之目录――00