不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2021-03-30 17:33  分类:Java框架/系统  编辑

先参考文章:【Spring MVC】使用IDEA创建Spring MVC的Maven项目 ,创建 Spring MVC 项目。

1、在Maven中添加 FreeMarker jar 包依赖:

<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<!-- FreeMarker 模板引擎 -->
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

2、在 applicationContext.xml 中加入内容:

<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<!-- FreeMarker的配置 -->
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<bean id="freemarkerConfig"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/view"/>
    <!--上下文地址的获取-->
    <property name="freemarkerVariables">
        <map>
            <entry key="base" value="#{servletContext.contextPath}"/>
        </map>
    </property>
    <property name="defaultEncoding" value="UTF-8"/>
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">10</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="datetime_format">yyyy-MM-dd</prop><!-- 时间格式化 -->
            <prop key="date_format">yyyy-MM-dd</prop>
            <prop key="number_format">#.##</prop>
        </props>
    </property>
</bean>

3、在 dispatcher-servlet.xml 中加入内容:

<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<!-- FreeMarker的配置 -->
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value=""/>
    <property name="suffix" value=".ftl"/>
    <property name="contentType" value="text/html;charset=UTF-8"/>
    <property name="requestContextAttribute" value="request"/>
    <property name="exposeSpringMacroHelpers" value="true"/>
    <property name="exposeRequestAttributes" value="true"/>
    <property name="exposeSessionAttributes" value="true"/>
</bean>

4、新建模板文件:/WEB-INF/view/freemarker.ftl

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>${title}</title>
</head>
<body>
    ${content}
</body>
</html>

5、Controler示例,通过ModelAndView引用一个模板,使用的时候名字不带后缀

package com.jianbao.controller;

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;

@Controller
@RequestMapping("/home")
public class IndexController {
    @GetMapping("/index")
    public ModelAndView index() {
        ModelAndView mv = new ModelAndView("freemarker");
        mv.addObject("title", "Spring MVC And Freemarker");
        mv.addObject("content", "Hello world,This is my first spring mvc !");
        return mv;
    }
}

6、浏览器访问: http://localhost:8080/home/index,输出

Hello world,This is my first spring mvc ! 

 

温馨提示:

可以把模板文件放到 \src\main\resources\templates 目录下(如:Spring Boot 项目的默认模板文件目录就是这个)

然后再调整一下FreeMarker的模板加载目录,即把

<property name="templateLoaderPath" value="/WEB-INF/view"/>

改为:

<property name="templateLoaderPath" value="classpath:/templates"/>

 

 

参考:

Spring Boot FreeMarker 模板路径的几种设置方式