利用freemarker做html页面静态化

系统 1630 0

背景:

对实时性要求不高的网站需要静态化操作,那么我们基于freemarker做静态化处理

环境:

      <dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.20</version>
</dependency>
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
	<version>1.1.1</version>
</dependency>
    

代码实现:

模板文件:news.ftl

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
  <head>
    <title>
      ${article.title!}
    </title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!-- <link rel="stylesheet" type="text/css" href="styles.css">  
    -->
  </head>
  
  <body>
    <h2>
      ${article.title!}
    </h2>
    <hr/>
    <pre>
      ${article.content}
    </pre>
  </body>
</html>
    

Java封装类Article:

      public class Article  implements Serializable{
	private static final long serialVersionUID = 554206256994693476L;
	private String title;
	private String content;

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

}
    

注意:此类必须为public否则报freemarker.core.InvalidReferenceException

测试实现:

      public static void main(String[] ar) throws Exception, TemplateException {
	Configuration configuration = new Configuration();
	configuration.setEncoding(Locale.getDefault(), "UTF-8");
	TemplateLoader templateLoader = new FileTemplateLoader(new File("d:/"));
	configuration.setTemplateLoader(templateLoader);
	Template template = configuration.getTemplate("news.ftl");
	template.setEncoding("UTF-8");
	File file = new File("d:/news.html");
	Map<String, Article> rootMap = new HashMap<String, Article>();
	Article article = new Article();
	article.setTitle("关于小网客");
	article.setContent("解决方案咨询<br>大数据处理<br>系统架构<br>企业信息化咨询<br>Email:smallnetvisitor@qq.com<br>来自北京");
	rootMap.put("article", article);
	Writer out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

	template.process(rootMap, out);
}
    

 

说明:

此处采用了FileTemplateLoader,以D盘为根,写的html页面采用utf-8的编码

结果如下图:

 
利用freemarker做html页面静态化
 

 

利用freemarker做html页面静态化


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论