扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
ViewResolver也就是视图解析器,他将是我们《探索SpringMVC》系列要介绍的最后一个常用的组件。其他组件:MultipartResolver、LocaleResolver、ThemeResolver、RequestToViewNameTranslator、FlashMapManager,相对简单,大家可以自行了解。
公司主营业务:成都网站制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出南溪免费做网站回馈大家。ViewResolver我们知道视图技术有很多种,例如:JSP、FreeMarker、Thymeleaf等。如果直接操作这些技术,那简直不要太糟糕。为了统一操作,SpringMVC抽象出来两个接口:ViewResolver和View。任何视图技术都需要实现这两个接口。
Spring源码中的定义
从上述定义,视图解析器需要创建View。而这意味着两个重要使命实例化和初始化。实例化,当然是创建对应的View实现对象。而初始化则负责将View与对应的实现技术进行绑定/衔接。
与视图技术的衔接前面我们知道View才是真正渲染页面内容的,这意味着View才是视图技术的真正操作者。因此必须通过某种手段获得响应的配置或者重要的组件。而Spring提供的是WebApplicationObjectSupport
。不管是ViewResolver,还是View都是基于该抽象类来实现获取ApplicationContext。
为了便于各个视图技术厂商对接,Spring实际上构建了一套完整的体系(一系列抽象实现类),按需实现。
这里重点提一下
UrlBaseViewResolver#applyLifecycleMethods
前面我们说了,WebApplicationObjectSupport
是重要的初始化接口。同样我们也说,是按需实现。
FreeMarkerViewResolver
从上面的类图看,FreeMarkerViewResolver似乎并没有使用到这个接口,但是其父类UrlBaseViewResolver使用到了。UrlBaseViewResolver通过WebApplicationObjectSupport
才能获取到ApplicationContext。才有了后面对FreeMarkerView的初始化。
FreeMarkerView
通过该WebApplicationObjectSupport
实现了与FreeMarker的衔接。
重点方法:
FreeMarkerView#initServletContext
UrlBaseViewResolver#applyLifecycleMethods
调用到。这里会通过ApplicationContext获取到FreeMarkerConfig。该类是SpringMVC与Freemarker衔接的类,他会持有FreeMarker的Configuration对象。通过Configuration对象,就能获得FreeMarker的Template类。FreeMarkerView#buildTemplateModel
FreeMarkerView#processTemplate
想看源码的同学,这里送一张简化版调用流程图
注意,该图不涉及分支流程,例如:缓存逻辑、重定向逻辑。
WebApplicationObjectSupport
获取到ApplicationContext对AbstractUrlBasedView进行初始化。AbstractUrlBasedView则通过InitializingBean实现对View的url进行校验。WebApplicationObjectSupport
从容器中获取FreeMarkerConfig,实现与FreeMarker的衔接。ViewResolver相对简单。但我们重点要学会设计思想。SpringMVC设计了一层中间层,做了一层接口转换,换取统一接口、统一操作的便利,以及更多的扩展可能。
下一次,我们终于回到了DispatcherServlet了。忘记的同学,可以回去看看。
上一篇:
探索SpringMVC-组件之HandlerExceptionResolver
第一篇:
探索SpringMVC-web上下文
下一篇:
探索SpringMVC-DispatcherServlet
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流