Strut2和FreeMarker整合时的一些问题

简介: 在struts2与freemarker整合时,可以在项目的类路径下放置freemarker.properties配置文件, struts2会自动读取(struts2封装了)。今天用freemarker作为模板生成静态文件时,发现并不读取freemarker.properties配置文件。 看一下freemarker源码,freemarker本身并不加载freemarker.proper
在struts2与freemarker整合时,可以在项目的类路径下放置freemarker.properties配置文件,

struts2会自动读取(struts2封装了)。今天用freemarker作为模板生成静态文件时,发现并不读取freemarker.properties配置文件。

看一下freemarker源码,freemarker本身并不加载freemarker.properties配置文件,需要代码中指定配置文件。

代码如下:

 

Java代码 复制代码  收藏代码
  1. package com.ldl.freemarker;   
  2.   
  3. import java.io.BufferedWriter;   
  4. import java.io.IOException;   
  5. import java.io.OutputStreamWriter;   
  6. import java.io.Writer;   
  7. import java.util.HashMap;   
  8. import java.util.Map;   
  9. import java.util.Properties;   
  10.   
  11. import freemarker.cache.ClassTemplateLoader;   
  12. import freemarker.template.Configuration;   
  13. import freemarker.template.DefaultObjectWrapper;   
  14. import freemarker.template.Template;   
  15. import freemarker.template.TemplateException;   
  16.   
  17. public class freemarkerTest {   
  18.   
  19.     /**  
  20.      * @param args  
  21.      * @throws IOException   
  22.      * @throws TemplateException   
  23.      */  
  24.     @SuppressWarnings("unchecked")   
  25.     public static void main(String[] args) throws IOException, TemplateException {   
  26.         Configuration cfg = new Configuration();   
  27.         cfg.setTemplateLoader(new ClassTemplateLoader(freemarkerTest.class,""));   
  28.         cfg.setObjectWrapper(new DefaultObjectWrapper());   
  29.         //加载并设置freemarker.properties   
  30.         Properties p = new Properties();   
  31.         p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties"));   
  32.         cfg.setSettings(p);   
  33.         /* 在整个应用的生命周期中,这个工作你可以执行多次 */  
  34.         /* 获取或创建模板*/  
  35.         Template temp = cfg.getTemplate("test.xml");   
  36.         /* 创建数据模型 */  
  37.         Map root = new HashMap();   
  38.         root.put("user""Big Joe");   
  39.         /* 将模板和数据模型合并 */  
  40.         Writer out = new BufferedWriter(new OutputStreamWriter(System.out));   
  41.         temp.process(root, out);   
  42.         out.flush();   
  43.     }   
  44. }  

 测试代码在附件中,freemarker.properties里的default_encoding值为utf-8,看控制台打印的是否有乱码,如果有乱码说明生效了。

目录
相关文章
|
传感器 存储
STM32--TIM定时器(3)
STM32--TIM定时器(3)
418 0
STM32--TIM定时器(3)
|
开发框架 Java .NET
Sitemesh3使用及配置
Sitemesh3使用及配置
243 0
|
前端开发 安全 Android开发
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
Tauri 2.0 正式版于 2024 年 10 月 2 日发布,带来了多项重大更新。此次更新不仅全面支持 iOS 和 Android,实现“一次编写,到处运行”,还升级了插件系统,增强了灵活性与可扩展性。安全性大幅提升,引入新的权限系统,并优化了 IPC 层,支持原始有效载荷传输,大幅提高性能。此外,Tauri 2.0 还支持热模块替换(HMR),简化了应用分发流程,成为跨平台开发的重要里程碑。
2020 0
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
263 0
|
Ubuntu
蓝易云 - ubuntu系统如何将文件打包成tar.gz
这样,"example"目录就会被打包成"example.tar.gz"文件。
710 0
|
安全 前端开发 Java
学习从Struts迁移到Spring的策略概述
从Struts框架迁移到Spring框架是一个常见的升级路径,主要是为了利用Spring框架提供的更多功能、更好的模块化支持以及更广泛的社区资源。
342 3
|
人工智能 数据安全/隐私保护 开发者
AIGC带来的伦理之思
【1月更文挑战第13天】AIGC带来的伦理之思
831 4
AIGC带来的伦理之思
解决win11开启移动热点共享手机连上后无法上网的问题
本文提供了解决Windows 11开启移动热点后手机无法上网问题的步骤:通过控制面板进入网络和共享中心,在以太网属性中勾选“允许其他网络用户通过此计算机的Internet连接来连接”,然后手机重新连接共享热点即可上网。
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
2051 0
|
存储 文件存储 对象存储
一文读懂温冷数据存储的技术选型
在温存储或者冷存储领域,通常都是追求低成本和高密度。在满足这两个条件的情况下,性能越高越好。但不管怎么说,冷存储或者温存储,都应是绿色节能的。
1322 1