# 7SpringMVC整合Freemarker
# 导航
# Spring MVC 整合Freemarker步骤
- 引入pom依赖
- 要通知spring MVC启用Freemarker模板引擎-在applicationContext.xml文件中配置
- 配置Freemarker参数-在applicationContext.xml文件中配置
# 1 引入pom依赖
<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>5.1.9.RELEASE</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
引入pom依赖后,idea需要设置一下:File-->Project Structure-->Artifacts-->
# 2 要通知spring MVC启用Freemarker模板引擎-在applicationContext.xml文件中配置
在applicationContext.xml文件中配置,内容如下:
<!--配置bean id="ViewResolver",ViewResolver 就是视图解析器,就是告诉springMVC,模板引擎使用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>
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3 配置Freemarker参数-在applicationContext.xml文件中配置
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--指定freemarker文件存放的地址-->
<!--为啥要放到这个/WEB-INF/ftl目录下:WEB-INF是不能被直接访问的,freemarker这个模板文件不像jsp一样,jsp天然的可以被tomcat支持,能被tomcat运行,而tomcat无法直接解析freemarker模板,为了保证模板的安全,就必须把模板文件存放在从外侧无法直接访问的/WEB-INF目录下-->
<property name="templateLoaderPath" value="/WEB-INF/ftl"/>
<property name="freemarkerSettings">
<props>
<!--这里是产生结果以后生成的字符集(也就是Freemarker脚本与数据渲染时使用的字符集)的字符编码-->
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
配置好上面的以后,freemarker就算是整合成功了
# 测试运行实例代码如下:
在webapp/WEB-INF目录下新建ftl/test.ftl文件,文件内容如下:
<h1>${u.username}</h1>
1
package com.torey.springmvc.controller;
import com.torey.springmvc.dto.UserDto;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* @Author http://torey611.gitee.io/li-tao-feng/
* @Email torey6061@qq.com
* @Date 2021/5/6 7:08
* @描述:freemarker测试
*/
@Controller
@RequestMapping("/fm")
public class FreemarkerController {
@GetMapping("/test")
public ModelAndView showTest(){
//这里的/(根路径)指的是:webapp/WEB-INF/ftl目录(applicationContext.xml配置文件配置了)
// /test 相当于/text.ftl,因为配置文件配置了后缀名,所以这里不要写了
ModelAndView modelAndView = new ModelAndView("/test");
UserDto userDto=new UserDto();
userDto.setUsername("小明");
modelAndView.addObject("u",userDto);
return modelAndView;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 导航,上一页,下一页
# 支持我-微信扫一扫-加入微信公众号
# 赞赏作者
# 种一棵树,最好的时间是十年前,其次是现在
立志用功,如种树然。方其根芽,犹未有干;及其有干,尚未有枝;枝而后叶,叶而后花、实。初种根时,只管栽培灌溉,勿作枝想,勿作实想。悬想何益?何不忘栽培之功,怕没有枝叶花实?