Spring针对velocity实现了默认的file的resourceLoader,每次读取的文件都是固定位置的,如果我们想实现随时改变文件随时页面生效这种效果就很难实现了。
但是现实的应用场景中这样的例子还不少,1营销页面,2产品化的配置管理等
实现方案,可以通过纯前端的方式实现
比如:
1.把页面模版写在数据库里,然后写死一个页面,通过ajax从后台取不同的模版,然后根据不同的数据做渲染展示
2.纯后端模式实现,改造springmvc的view的render这层,保证每次渲染的时候,原有从文件系统读模版改为从db中读模版。
本文主要采用第二种方案和大家做交流。
分析这个问题,首先要了解springMvc的DispatcherServlet处理链路
1. DispatcherServlet中获取到controller返回的ModelAndView之后会通过render方法来获取对应的view代码如下:
2. resolveViewName()方法中,通过所有配置的viewResolver来进行resolveViewName。这个链路一直看下去,会到具体的viewReso