博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
j2ee 简单网站搭建:(四)将 freemaker 模板引擎作为 spring-mvc 展现层
阅读量:6220 次
发布时间:2019-06-21

本文共 4687 字,大约阅读时间需要 15 分钟。

  hot3.png

很多开源 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 需要的库

 
2.7.0-rc1
 
2.3.23
    
 
 
   
org.freemarker
   
freemarker
   
${freemarker.version}
 
 
   
com.fasterxml.jackson.core
   
jackson-core
   
${fasterxml.version}
 
 
   
com.fasterxml.jackson.core
   
jackson-databind
   
${fasterxml.version}
 
 
   
com.fasterxml.jackson.core
   
jackson-annotations
   
${fasterxml.version}
 
 
  

二 新建 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-8freemarker.freemarkerSettings.template_update_delay=10freemarker.freemarkerSettings.defaultEncoding=UTF-8freemarker.freemarkerSettings.url_escaping_charset=UTF-8freemarker.freemarkerSettings.locale=zh_CNfreemarker.freemarkerSettings.boolean_format=true,falsefreemarker.freemarkerSettings.time_format=HH:mm:ssfreemarker.freemarkerSettings.datetime_format=yyyy-MM-dd HH:mm:ssfreemarker.freemarkerSettings.date_format=yyyy-MM-ddfreemarker.freemarkerSettings.number_format=#.##freemarker.freemarkerSettings.whitespace_stripping=truefreemarker.cache=truefreemarker.prefix=freemarker.suffix=.ftlfreemarker.contentType=text/html;charset=UTF-8freemarker.requestContextAttribute=requestfreemarker.exposeSpringMacroHelpers=truefreemarker.exposeRequestAttributes=truefreemarker.exposeSessionAttributes=true
    
freemaker configuration
    
    
    
    
        
        
        
            
                
${freemarker.freemarkerSettings.template_update_delay}
                
${freemarker.freemarkerSettings.defaultEncoding}
                
${freemarker.freemarkerSettings.url_escaping_charset}
                
${freemarker.freemarkerSettings.locale}
                
${freemarker.freemarkerSettings.boolean_format}
                
${freemarker.freemarkerSettings.time_format}
                
${freemarker.freemarkerSettings.datetime_format}
                
${freemarker.freemarkerSettings.date_format}
                
${freemarker.freemarkerSettings.number_format}
                
${freemarker.freemarkerSettings.whitespace_stripping}
            
        
    
    
    
        
        
        
        
        
        
        
        
    
    

三 在 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;    }}

转载于:https://my.oschina.net/ioooi/blog/1522952

你可能感兴趣的文章
Unable to install breakpoint in XXX due to missing line number attributes的解决
查看>>
分享SQL2005 查询表结构的SQL语句
查看>>
Android 手机如何防范吸费插件
查看>>
Copy-On-Write容器之二:CopyOnWriteArraySet
查看>>
ACCESS的分页之道,Access中实现row_number() over()聚合函数功能
查看>>
IOS成长之路-NSMutableURLRequest实现Post请求
查看>>
【Cocos2D-X 】初窥门径(9)播放音乐/音效
查看>>
HDU3930(离散对数与原根)
查看>>
茴香豆的第五种写法---设置ExpandableListView系统自带图标按下效果
查看>>
MSSQL Rebuild(重建)索引
查看>>
Linux_CentOS-服务器搭建 <七>
查看>>
转载:mysql如果数据不存在,则插入新数据,否则更新的实现方法
查看>>
<转>多线程中的lua同步问题
查看>>
转oracle 学习- 数据类型
查看>>
Eclipse安装插件支持jQuery智能提示
查看>>
cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
查看>>
C语言课程设计—图书管理系统
查看>>
iOS 多线程
查看>>
【BZOJ】1096: [ZJOI2007]仓库建设(dp+斜率优化)
查看>>
SQL删除重复数据方法
查看>>