首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

servlet 调整freemarkder

2013-04-26 
servlet 整合freemarkder?Servlet与FreeMarker整合 http://oma1989.iteye.com/blog/1421804?SpringTemplat

servlet 整合freemarkder

?

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 systemif (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;}

?

热点排行