Servlet与FreeMarker整合
http://oma1989.iteye.com/blog/1421804
SpringTemplateLoader
public class SpringTemplateLoader implements TemplateLoader { protected final Log logger = LogFactory.getLog(getClass()); private final ResourceLoader resourceLoader; private final String templateLoaderPath; /** * Create a new SpringTemplateLoader. * @param resourceLoader the Spring ResourceLoader to use * @param templateLoaderPath the template loader path to use */ public SpringTemplateLoader(ResourceLoader resourceLoader, String templateLoaderPath) { this.resourceLoader = resourceLoader; if (!templateLoaderPath.endsWith("/")) { templateLoaderPath += "/"; } this.templateLoaderPath = templateLoaderPath; if (logger.isInfoEnabled()) { logger.info("SpringTemplateLoader for FreeMarker: using resource loader [" + this.resourceLoader + "] and template loader path [" + this.templateLoaderPath + "]"); } } public Object findTemplateSource(String name) throws IOException { if (logger.isDebugEnabled()) { logger.debug("Looking for FreeMarker template with name [" + name + "]"); } Resource resource = this.resourceLoader.getResource(this.templateLoaderPath + name); return (resource.exists() ? resource : null); } public Reader getReader(Object templateSource, String encoding) throws IOException { Resource resource = (Resource) templateSource; try { return new InputStreamReader(resource.getInputStream(), encoding); } catch (IOException ex) { if (logger.isDebugEnabled()) { logger.debug("Could not find FreeMarker template: " + resource); } throw ex; } } public long getLastModified(Object templateSource) { Resource resource = (Resource) templateSource; try { return resource.lastModified(); } catch (IOException ex) { if (logger.isDebugEnabled()) { logger.debug("Could not obtain last-modified timestamp for FreeMarker template in " + resource + ": " + ex); } return -1; } } public void closeTemplateSource(Object templateSource) throws IOException { }
FreeMarkerConfigurationFactory:
protected TemplateLoader getTemplateLoaderForPath(String templateLoaderPath) { if (isPreferFileSystemAccess()) { // Try to load via the file system, fall back to SpringTemplateLoader // (for hot detection of template changes, if possible). try { Resource path = getResourceLoader().getResource(templateLoaderPath); File file = path.getFile(); // will fail if not resolvable in the file system if (logger.isDebugEnabled()) { logger.debug( "Template loader path [" + path + "] resolved to file path [" + file.getAbsolutePath() + "]"); } return new FileTemplateLoader(file); } catch (IOException ex) { if (logger.isDebugEnabled()) { logger.debug("Cannot resolve template loader path [" + templateLoaderPath + "] to [java.io.File]: using SpringTemplateLoader as fallback", ex); } return new SpringTemplateLoader(getResourceLoader(), templateLoaderPath); } } else { // Always load via SpringTemplateLoader (without hot detection of template changes). logger.debug("File system access not preferred: using SpringTemplateLoader"); return new SpringTemplateLoader(getResourceLoader(), templateLoaderPath); } }
FreeMarkerConfigurationFactory:
public Configuration createConfiguration() throws IOException, TemplateException { Configuration config = newConfiguration(); Properties props = new Properties(); // Load config file if specified. if (this.configLocation != null) { if (logger.isInfoEnabled()) { logger.info("Loading FreeMarker configuration from " + this.configLocation); } PropertiesLoaderUtils.fillProperties(props, this.configLocation); } // Merge local properties if specified. if (this.freemarkerSettings != null) { props.putAll(this.freemarkerSettings); } // FreeMarker will only accept known keys in its setSettings and // setAllSharedVariables methods. if (!props.isEmpty()) { config.setSettings(props); } if (!CollectionUtils.isEmpty(this.freemarkerVariables)) { config.setAllSharedVariables(new SimpleHash(this.freemarkerVariables, config.getObjectWrapper())); } if (this.defaultEncoding != null) { config.setDefaultEncoding(this.defaultEncoding); } // Register template loaders that are supposed to kick in early. if (this.preTemplateLoaders != null) { this.templateLoaders.addAll(this.preTemplateLoaders); } // Register default template loaders. if (this.templateLoaderPaths != null) { for (String path : this.templateLoaderPaths) { this.templateLoaders.add(getTemplateLoaderForPath(path)); } } postProcessTemplateLoaders(this.templateLoaders); // Register template loaders that are supposed to kick in late. if (this.postTemplateLoaders != null) { this.templateLoaders.addAll(this.postTemplateLoaders); } TemplateLoader loader = getAggregateTemplateLoader(this.templateLoaders); if (loader != null) { config.setTemplateLoader(loader); } postProcessConfiguration(config); return config; }
相关推荐
### FreeMarker中文手册知识点概述 #### 一、FreeMarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于一种简单的模板语言来处理文本输出。该手册为FreeMarker 2.3.19版本的中文翻译版,由南磊翻译,并...
<bean id="freemakerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <value>/WEB-INF/web/ <prop key="defaultEncoding">gbk ``` #### 方法二:处理...
freemarker调试实现了freemarker / spring mvc反模式。 用于跟踪工具开发的代码。 只需使用Maven运行它: mvn jetty:run 打开浏览器: 进行慢速演示用于模板崩溃演示(仅用于获取堆栈跟踪) ......
在Java中,Freemarker与ModelAndView、Velocity等模板引擎类似,它通过模板语言(Template Language)来描述数据如何被渲染。... 1. **导出Excel** - 使用Freemarker导出Excel通常涉及到Apache POI库。...
功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。
labview程序代码参考学习使用,希望对你有所帮助。
大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。