FreeMarker与SpringMVC整合实例代码教程
2014-09-30 16:18
776 查看
增加视图XML配置/testMvc/src/main/resources/conf/springMVC-servlet.xml
上面配置中先查找 FreeMarker模板ftl后缀文件,如果找不到,才会去找后面的jsp文件
如果更换后面两个bean的顺序,则会先去找jsp文件,找不到时才去查找ftl模板
需要引入包freemarker-2.3.18.jar
如果是用maven方式构建项目,在pom文件中增加依赖包申明
另附手动读取FreeMarker配置文件freemarker.properties,进行模板输出配置。获取模板输出字符串辅助类,
有疑问的可以密我,代码如下
上面类的freeMarkerConfigurer属性由spring注入,在springMVC-servlet.xml中增加bean配置
还有freemarker.properties配置如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" default-autowire="byName"> <context:component-scan base-package="com.tangq.test" /> <mvc:annotation-driven/> <bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location" value="classpath:/freemarker.properties" /> </bean> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerSettings" ref="freemarkerConfiguration"></property> <property name="templateLoaderPath" value="template/pages/" /> <property name="defaultEncoding" value="utf-8" /> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="cache" value="true" /> <property name="prefix" value="" /> <property name="suffix" value=".ftl" /> <property name="contentType" value="text/html;charset=UTF-8" /> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="template/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
上面配置中先查找 FreeMarker模板ftl后缀文件,如果找不到,才会去找后面的jsp文件
如果更换后面两个bean的顺序,则会先去找jsp文件,找不到时才去查找ftl模板
需要引入包freemarker-2.3.18.jar
如果是用maven方式构建项目,在pom文件中增加依赖包申明
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.18</version> </dependency>
另附手动读取FreeMarker配置文件freemarker.properties,进行模板输出配置。获取模板输出字符串辅助类,
有疑问的可以密我,代码如下
/** * <模板IO操作管理类> */ public class TemplateIOManager { private static final Logger logger = LoggerFactory.getLogger(TemplateIOManager.class); private static FreeMarkerConfigurer freeMarkerConfigurer; private static Configuration DEFAULT_CONFIG; public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) { TemplateIOManager.freeMarkerConfigurer = freeMarkerConfigurer; } /** * <获取模板输出字符串> * @param ftlName * @param data * @return */ public static String parse(String ftlName, Map<String, Object> data) { String result = null; Template t; try { if (freeMarkerConfigurer != null) { t = freeMarkerConfigurer.getConfiguration().getTemplate(ftlName); result = FreeMarkerTemplateUtils.processTemplateIntoString(t, data); } else { t = getDefaultConfig().getTemplate(ftlName); result = FreeMarkerTemplateUtils.processTemplateIntoString(t, data); } } catch (IOException e) { logger.error(" ftl output IOException ,while ftlName=" + ftlName, e); } catch (TemplateException e) { logger.error(" ftl output TemplateException ,while ftlName=" + ftlName, e); } return result; } private static Configuration getDefaultConfig() { if (DEFAULT_CONFIG == null) DEFAULT_CONFIG = createDefaultCfg(); return DEFAULT_CONFIG; } /** * <获取模板配置项> * @param loaderPath * @return */ private static Configuration createDefaultCfg() { Configuration cfg = new Configuration(); // 设置模板文件所在的目录 try { cfg.setDirectoryForTemplateLoading(new File(getTemplateLoaderPath())); } catch (IOException e) { logger.error("设置模板加载目录失败", e); } Properties p = new Properties(); try { p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties")); cfg.setSettings(p); } catch (IOException e) { logger.error("获取freemarker.properties配置项io流异常", e); } catch (TemplateException e) { logger.error("配置模板发生异常", e); } return cfg; } /** * <获取模板加载目录> * @return */ private static String getTemplateLoaderPath() { String path = TemplateIOManager.class.getResource("/").getFile(); String fileSeparator = System.getProperty("file.separator"); path = path.replace(fileSeparator, "/"); path = path.substring(0, path.indexOf("WEB-INF")) + "template/pages/"; return path; } }
上面类的freeMarkerConfigurer属性由spring注入,在springMVC-servlet.xml中增加bean配置
<bean class="com.gvtv.app.epg.service.xml.TemplateIOManager"> <property name="freeMarkerConfigurer" ref="freemarkerConfig" /> </bean>
还有freemarker.properties配置如下
datetime_format=yyyy-MM-dd HH:mm:ss date_format=yyyy-MM-dd time_format=HH:mm:ss boolean_format=true,false whitespace_stripping=true default_encoding=UTF-8 tag_syntax=auto_detect url_escaping_charset=UTF-8 classic_compatible=true number_format=#
相关文章推荐
- FreeMarker与SpringMVC整合实例代码教程
- FreeMarker与SpringMVC整合实例代码教程
- FreeMarker与SpringMVC整合实例代码教程
- FreeMarker与SpringMVC整合实例代码教程
- 通过SpringMVC整合基于注解的JPA的实例教程代码下载
- 通过SpringMVC整合基于注解的JPA的实例教程代码下载
- SpringMvc多视图整合配置教程(jsp、velocity、freemarker)
- Freemarker使用教程-基于Springmvc的Freemarker实例
- SpringMVC mybatis整合实例代码详解
- SpringMvc多视图整合配置教程(jsp、velocity、freemarker)
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- SpringMVC整合mybatis实例代码
- springmvc整合freemarker教程
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤
- SpringMVC与iReport(JasperReports) 整合开发实例教程
- SpringMVC入门教程及其原理讲解和实例代码下载
- springMVC多视图整合配置教程(jsp,velocity,freemarker)
- SpringMvc多视图整合配置教程(jsp、velocity、freemarker)
- rabbitMQ教程(三) spring整合rabbitMQ代码实例