日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

生成html页面的ftl文件,FreeMarker生成静态HTML页面的工具类FreeMarkerUtil

發(fā)布時(shí)間:2025/4/5 HTML 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成html页面的ftl文件,FreeMarker生成静态HTML页面的工具类FreeMarkerUtil 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FreeMarker生成靜態(tài)HTML頁面的工具類FreeMarkerUtil

一.FreeMarkerUtil工具類:

import com.huaxia.entity.News;

import com.huaxia.entity.User;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

import javax.servlet.http.HttpServletRequest;

import java.io.*;

import java.util.HashMap;

import java.util.Locale;

import java.util.Map;

/**

* 創(chuàng)建人: leon

* 創(chuàng)建時(shí)間: 2014年11月28日 上午10:07:51

* 類描述:Freemarker的工具類

*/

public class FreemarkerUtil {

/**

* 通過指定的名字獲取相應(yīng)的模板

* @param fileName

* @return

*/

public Template getTemplate(HttpServletRequest request,String fileName) {

try {

Configuration cfg = new Configuration();

cfg.setOutputEncoding("UTF-8");

cfg.setDefaultEncoding("UTF-8");// 編碼設(shè)置1

cfg.setEncoding(Locale.CHINA, "UTF-8");

//設(shè)定讀取ftl模板文件的目錄

//cfg.setClassForTemplateLoading(this.getClass(), "/template");//讀取src目錄下

cfg.setServletContextForTemplateLoading(request.getSession().getServletContext(), "/template");//讀取webroot目錄下

//在模板文件目錄中找到名稱為name的文件,并加載為模板

Template template = cfg.getTemplate(fileName);

template.setEncoding("UTF-8");// 編碼設(shè)置2

return template;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

/**

* 通過指定的文件目錄和文件名生成相應(yīng)的文件

* @param fileDir

* @param fileName

*/

public Boolean printToFile(Template template,String fileDir,String fileName,Map root) {

boolean done = false;

Writer writer = null;

try {

//判斷多級(jí)目錄是否存在,不存在則一級(jí)級(jí)創(chuàng)建

String[] paths = fileDir.split("\\\\");//注意:此處“\\”是錯(cuò)誤的,必須要“\\\\”才能分割字符串

String dir = paths[0];

for (int i = 1; i < paths.length; i++) {

dir = dir + File.separator + paths[i];

File file=new File(dir.toString());

if (!file.exists()) {

file.mkdir();

}

}

//創(chuàng)建輸出流

File file = new File(fileDir +File.separator+ fileName);

//設(shè)置生成的文件編碼為UTF-8

//服務(wù)器不支持UTF-8格式HTML時(shí)候使用ANSI格式HTML文件,即系統(tǒng)默認(rèn)編碼

writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8")); // 編碼設(shè)置3

//writer = new FileWriter(fileDir +File.separator+ fileName);

//輸出模板和數(shù)據(jù)模型都對(duì)應(yīng)的文件

template.process(root, writer);

done = true;

} catch (IOException e) {

e.printStackTrace();

} catch (TemplateException e) {

e.printStackTrace();

} finally {

try {

if(writer!=null){

writer.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

return done;

}

/**

* 通過傳入的請(qǐng)求和新聞信息重新生成html文件

* @param news //新聞實(shí)體類

* @param request //請(qǐng)求

* @param user //用戶

* @return

*/

public boolean genenateHtml(News news,HttpServletRequest request,User user) {

String fileName = news.getFileName();

Map root = new HashMap();

root.put("id", news.getId());

root.put("title", news.getTitle());

root.put("create_date", news.getCreateDate());

root.put("creator", news.getCreator());

root.put("content", ClobUtil.ClobToString(news.getContent()));

root.put("fileName", news.getUploadFile()==null?"":news.getUploadFile());

FreemarkerUtil freemarkerUtil = new FreemarkerUtil();

Template template = null;

template = freemarkerUtil.getTemplate(request, "news.ftl");//新聞發(fā)布系統(tǒng)的freemarker模板

String htmlDir = news.getDir();

boolean done = printToFile(template, htmlDir, fileName, root);

return done;

}

}

二.發(fā)布新聞信息的Servlet:

if ("publishNews".equals(action)) { //發(fā)布新聞:通過傳入的新聞id獲取新聞信息生成新聞模板

String idsStr = request.getParameter("newsIds");

INewsDao newsDao = new NewsDaoImpl();

boolean done = newsDao.publishNews(idsStr,request,user);

String str =null;

if(done){

str="{success:true}";

}else{

str="{success:false}";

}

response.setContentType("text/html;charset=UTF-8");

out=response.getWriter();

out.print(str);

out.close();

return;

}

三.發(fā)布新聞信息的Dao方法:

/**

* 發(fā)布新聞信息的Dao方法

* @param idsStr //新聞ID

* @param request

* @param user

*/

public boolean publishNews(String idsStr, HttpServletRequest request, User user) {

Session s = null;

boolean done = false;

FreemarkerUtil freemarkerUtil = new FreemarkerUtil();

List ids = new ArrayList();

String[] newIds = idsStr.split(",");

for (int i = 0; i < newIds.length; i++) {

ids.add(Integer.valueOf(newIds[i]));

}

try {

s = HibernateUtil.getSession();

s.beginTransaction();

StringBuffer sb = new StringBuffer("select * from news where id in(");

for (int i = 0; i < ids.size(); i++) {

sb.append(ids.get(i));

if (i != ids.size() -1) {

sb.append(",");

}

}

sb.append(")");

SQLQuery query = s.createSQLQuery(sb.toString());

List list = query.addEntity(News.class).list();

for (int i = 0; i < list.size(); i++) {

News news = list.get(i);

done = freemarkerUtil.genenateHtml(news, request, user);

if (!done) {

return done;

}

}

s.getTransaction().commit();

done = true;

} catch (Throwable e) {

logger.error(e.toString());

HibernateUtil.endSession(s);

} finally {

HibernateUtil.endSession(s);

}

return done;

}

相關(guān)鏈接:

Freemarker模板應(yīng)用

Freemarker生成html頁面

Freemarker 設(shè)置編碼

總結(jié)

以上是生活随笔為你收集整理的生成html页面的ftl文件,FreeMarker生成静态HTML页面的工具类FreeMarkerUtil的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。