SpringMVC默认使用JSP作为模板引擎,那么如何在SpringMVC中支持对Freemarker的支持了?
主要分为4步:
(1)pox.xml中引入依赖
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.8.RELEASE</version> </dependency>
(2)启动Freemarker模板引擎
<bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <!--设置响应输出,并解决中文乱码--> <property name="contentType" value="text/html;charset=utf-8"/> <!--指定Freemarker模板文件扩展名--> <property name="suffix" value=".ftl"/> </bean>
(3)配置Freemarker参数
<!--配置Freemarker参数--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <!--设置模板保存的目录--> <property name="templateLoaderPath" value="/WEB-INF/ftl"/> <!--其他模板引擎设置--> <property name="freemarkerSettings"> <props> <!--设置Freemarker脚本与数据渲染时使用的字符集--> <prop key="defaultEncoding">UTF-8</prop> </props> </property> </bean>
(4)简单示例
@Controller @RequestMapping("/fm") public class FreemarkerController { @GetMapping("/t") public ModelAndView showTest(){ ModelAndView mav = new ModelAndView("/test"); //因为配置了扩展名,所以不需要写完整名 UserInfo userInfo = new UserInfo(); userInfo.setName("kebi"); mav.addObject("u",userInfo); return mav; } }
创建文件目录:
编辑test.ftl文件:
<h1>${u.name}</h1>
注意在运行前需要将新的依赖包添加到Tomcat里面:
访问: