1.在pro.xml配置文件中引入架包
<!--freemarker-->
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker-version}</version>
</dependency>
2.Freemarker的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- 配置Freemarker --> <bean id="staticPageService" class="cn.itcast.core.service.staticpage.StaticPageServiceImpl"> <property name="freeMarkerConfigurer"> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl/"/> <property name="defaultEncoding" value="UTF-8"/> </bean> </property> </bean> </beans>
3.Freemarker静态化页面
package cn.itcast.core.service.staticpage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Map; import javax.servlet.ServletContext; import org.springframework.web.context.ServletContextAware; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import freemarker.template.Configuration; import freemarker.template.Template; /** * 生成静态页实现类 * @author lx * */ public class StaticPageServiceImpl implements StaticPageService,ServletContextAware{ private Configuration conf; public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) { this.conf = freeMarkerConfigurer.getConfiguration(); } //静态化方法 public void productIndex(Map<String,Object> root,Integer id){ //String dir = "C:Userslxworkspaceabasport12"; //设置模板的目录 //conf.setDirectoryForTemplateLoading(dir); //输出流 从内存写出去 磁盘上 Writer out = null; try { //读进来 UTF-8 内存中 Template template = conf.getTemplate("productDetail.html"); //获取Html的路径 String path = getPath("/html/product/" + id + ".html");//278.html File f = new File(path); File parentFile = f.getParentFile(); if(!parentFile.exists()){ parentFile.mkdirs(); } //输出流 out = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); //处理模板 template.process(root, out); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(out != null){ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //获取路径 public String getPath(String name){ return servletContext.getRealPath(name); } private ServletContext servletContext; @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } }