文档章节

j2ee 简单网站搭建:(四)将 freemaker 模板引擎作为 spring-mvc 展现层

b
 binux
发布于 2017/08/24 16:09
字数 1058
阅读 42
收藏 0

《j2ee 简单网站搭建:(一) windows 操作系统下使用 eclipse 建立 maven web 项目》
《j2ee 简单网站搭建:(二)添加和配置 spring + spring-mvc 的 mvc 开发环境》
《j2ee 简单网站搭建:(三)在搭建好的 spring maven web 项目中加入 mybatis 访问数据库》
《j2ee 简单网站搭建:(四)将 freemaker 模板引擎作为 spring-mvc 展现层》
《j2ee 简单网站搭建:(五)使用 jcaptcha 生成验证码图片》
《j2ee 简单网站搭建:(六)使用 hibernate validation 实现 domain 层实体类验证》
《j2ee 简单网站搭建:(七)使用 shiro 结合 jcaptcha 实现用户验证登录》
《j2ee 简单网站搭建:(八)使用 jquery-validate 实现页面验证入门》
《j2ee 简单网站搭建:(九)jquery datatables + jquery ui dialog 插件使用入门》
《j2ee 简单网站搭建:(十)jquery ztree 插件使用入门》
《j2ee 简单网站搭建:(十一)ckeditor 控件使用入门》

很多开源 java web 项目都在用 freemaker 作为展现层模板引擎,在之前查资料的时候很多人说 velocity 执行最快、jsp 次之、freemaker执行最慢,而且 jsp 更适合复杂的模板定制环境,但越来越多人使用 freemaker 肯定有原因,其次本人在做项目公共代码生成工具的时候使用过 freemaker ,确实挺好用,此外 freemaker 通过 <#include "/***.ftl"/> 标签能够将页面中固定的页头、页脚等部分进行分离和统一引用,相比 SiteMesh 的模板要好配置一些,所以本文特意介绍在 spring-mvc 已搭建环境下的 freemaker集成,供初学者参考。

注:1 freemaker 版本 2.3.23
    2 spring-mvc maven web 项目已完成搭建和配置一 在 pom.xml 中添加 freemaker 需要的库

<properties>

  <fasterxml.version>2.7.0-rc1</fasterxml.version>
  <freemarker.version>2.3.23</freemarker.version>
    
</properties>
<dependencies>

  <!-- freemaker包 start -->
  <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>${freemarker.version}</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${fasterxml.version}</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${fasterxml.version}</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${fasterxml.version}</version>
  </dependency>
  <!-- freemaker包 start -->
  
</dependencies>

二 新建 freemarker.properties 和 spring-freemaker-config.xml 两个配置文件
   其中 freemaker.properties 文件包含 freemaker 引擎初始化的各种参数,其中比较关键的是 freemaker 模板文件的存放位置 templateLoaderPaths ,该位置是相对网站根目录而言的,一般都会放在网站 WEB-INF 文件夹下,因为这个文件夹下的文件无法被客户端浏览器下载。其次是文件后缀属性 suffix=.ftl 设置模板文件后缀名称,在 controller 层设置转向页面或者加载页面时只写名字不写后缀就可以加载对应的 freemaker 模板。
   spring-freemaker-config.xml 是 freemaker 和 spring 的结合配置文件

freemarker.templateLoaderPaths=/WEB-INF/ftl/
freemarker.defaultEncoding=UTF-8
freemarker.freemarkerSettings.template_update_delay=10
freemarker.freemarkerSettings.defaultEncoding=UTF-8
freemarker.freemarkerSettings.url_escaping_charset=UTF-8
freemarker.freemarkerSettings.locale=zh_CN
freemarker.freemarkerSettings.boolean_format=true,false
freemarker.freemarkerSettings.time_format=HH:mm:ss
freemarker.freemarkerSettings.datetime_format=yyyy-MM-dd HH:mm:ss
freemarker.freemarkerSettings.date_format=yyyy-MM-dd
freemarker.freemarkerSettings.number_format=#.##
freemarker.freemarkerSettings.whitespace_stripping=true
freemarker.cache=true
freemarker.prefix=
freemarker.suffix=.ftl
freemarker.contentType=text/html;charset=UTF-8
freemarker.requestContextAttribute=request
freemarker.exposeSpringMacroHelpers=true
freemarker.exposeRequestAttributes=true
freemarker.exposeSessionAttributes=true
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans.xsd">
    <description>freemaker configuration</description>
    <!-- 引入资源目录下的所有properties属性文件 -->
    <context:property-placeholder location="classpath*:freemarker.properties"/>
    <!-- FreeMarker的配置开始 -->
    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPaths" value="${freemarker.templateLoaderPaths}" />
        <property name="defaultEncoding" value="${freemarker.defaultEncoding}" />
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">${freemarker.freemarkerSettings.template_update_delay}</prop>
                <prop key="defaultEncoding">${freemarker.freemarkerSettings.defaultEncoding}</prop>
                <prop key="url_escaping_charset">${freemarker.freemarkerSettings.url_escaping_charset}</prop>
                <prop key="locale">${freemarker.freemarkerSettings.locale}</prop>
                <prop key="boolean_format">${freemarker.freemarkerSettings.boolean_format}</prop>
                <prop key="time_format">${freemarker.freemarkerSettings.time_format}</prop>
                <prop key="datetime_format">${freemarker.freemarkerSettings.datetime_format}</prop>
                <prop key="date_format">${freemarker.freemarkerSettings.date_format}</prop>
                <prop key="number_format">${freemarker.freemarkerSettings.number_format}</prop>
                <prop key="whitespace_stripping">${freemarker.freemarkerSettings.whitespace_stripping}</prop>
            </props>
        </property>
    </bean>
    <!-- 配置 FreeMarker视图解析器 -->
    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="cache" value="${freemarker.cache}" />
        <property name="prefix" value="${freemarker.prefix}" />
        <property name="suffix" value="${freemarker.suffix}" />
        <property name="contentType" value="${freemarker.contentType}" />
        <property name="requestContextAttribute" value="${freemarker.requestContextAttribute}" />
        <property name="exposeSpringMacroHelpers" value="${freemarker.exposeSpringMacroHelpers}" />
        <property name="exposeRequestAttributes" value="${freemarker.exposeRequestAttributes}" />
        <property name="exposeSessionAttributes" value="${freemarker.exposeSessionAttributes}" />
    </bean>
    <!-- FreeMarker的配置结束 -->
</beans>

三 在 web.xml 文件 <context-param> 节点的 <param-value> 参数节点中添加一行 spring-freemaker-config.xml 的配置信息,格式为 classpath*:spring-freemaker-config.xml

四 在 src/main/webapp/WEB-INF/ftl 文件夹下新建测试模板 freemakertest.ftl

freemaker 模板加载成功

五 在 com.binux.webdemo.controller 包 TestController.java 文件中增加 freemakerShow 方法,调用并输出 freemakertest.ftl 模板,启动项目用浏览器打开地址 http://localhost:8080/webdemo/test/freemakerShow 应该正确输出 freemaker 模板加载成功。

package com.binux.webdemo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.binux.webdemo.service.TestService;

@Controller
@RequestMapping("/test")
public class TestController {
    @RequestMapping(value="/freemakerShow")
    public ModelAndView freemakerShow() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("freemakertest");
        return mv;
    }
}

© 著作权归作者所有

b
粉丝 2
博文 34
码字总数 58499
作品 0
兰州
程序员
私信 提问
spring boot学习

大家好,最近在学习spring boot,我的理解:spring boot就是 spring、spring mvc等spring产品的一个自动配置(启动)的工具,或者说是一个快速搭建,还支持一些其他工具的集成,比如集成:myb...

樱木花道VS康
2018/01/03
59
1
Java开发框架搭建:配置文件

工欲善其事,必先利其器。我们知道,Java开发最难的部分,就是初期框架的搭建工作。本文将记录一个可用的Java开发框架的搭建过程,以期满足大多数Java项目的开发。 本项目采用Maven管理Jar包...

纠结名字
2015/08/13
0
0
Spring Boot干货系列: (四)开发Web应用之Thymeleaf篇

        前言   Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持。   正文   Spring Boot提供了spring-boot-starter-web为Web开发予以支持,s...

后端编程嘟
2017/03/13
0
0
Java Web开发表现层大家都是用的啥流派?

最近看java,看完servlet和jsp的基本技术,感觉在表现层这一块比较混乱。 感觉基本上有这些个 jsp基本声明、指令、代码片段 EL表达式 自定义JSP标签(标准/simple) JSTL标签库(core/i18n/s...

linnchord
2010/08/19
2.9K
20
Spring笔记10---Spring MVC

本节主要讲解SpringMVC. :) =============================== 浏览器请求->DispatcherServlet->MVC控制器(数据交互,产生信息Model)+View名称 ->DispatcherServlet->查询视图解析器->视图渲......

强子哥哥
2015/01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql mysql常用的常用函数

1. 数学函数 函 数 作 用 ABS(x) 返回x的绝对值 CEIL(x),CEILIN(x) 返回不小于x的最小整数值 FLOOR(x) 返回不大于x的最大整数值 RAND() 返回0~1的随机数 RAND(x) 返回0~1的随机数,x值相同返...

edison_kwok
43分钟前
1
0
译:Spring Data Repository 不区分大小写查询

使用Spring Data Repository 不区分大小写查询 原文链接:https://www.baeldung.com/spring-data-case-insensitive-queries 作者:Shubhra Srivastava 译者:liululee 1. 概览 Spring Data ......

liululee
50分钟前
2
0
读书replay《maven实战》.1.20190526

前情提要 maven这个工具用了好久了,但是一直都用的迷迷糊糊的,没有对它进行过系统性的学习,只是知道一些常用的功能怎么实现,所以20190516这一天我从JD购买了徐晓斌老师所著的《maven实战...

wanxiangming
今天
2
0
真实项目案例实战——【状态设计模式】使用场景

什么是状态模式 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。 状态模式应用场景 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根...

须臾之余
今天
2
0
Java 实现把字符串转换成整数【底层实现】

https://blog.csdn.net/zl18310999566/article/details/80263396

qimh
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部