# 7SpringMVC整合Freemarker

# 导航

回到Spring MVC导航页

# Spring MVC 整合Freemarker步骤

  1. 引入pom依赖
  2. 要通知spring MVC启用Freemarker模板引擎-在applicationContext.xml文件中配置
  3. 配置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

引入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

# 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

配置好上面的以后,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

# 导航,上一页,下一页

6springMVC响应输出结果
8RESTful开发风格

# 支持我-微信扫一扫-加入微信公众号

Aseven公众号

# 赞赏作者

赞赏作者

# 种一棵树,最好的时间是十年前,其次是现在

立志用功,如种树然。方其根芽,犹未有干;及其有干,尚未有枝;枝而后叶,叶而后花、实。初种根时,只管栽培灌溉,勿作枝想,勿作实想。悬想何益?何不忘栽培之功,怕没有枝叶花实?