静态生成HTML

package com.tcit.util;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

import com.tcit.yanqingfang.struts.form.TemplateForm;
/**
 *          生成静态HTML类
 * 功能描述:
 *     一  根据HTML模板
 *         将动态内容信息替换模板中的标签处
 *         最终生成静态HTML文件
 *     二  将JSP文件转换HTML文件
 * 实现原理:
 *        1:首先获取HTML模板当前系统路径
 *        2:读取HTML模板文件信息到templateContent中
 *        3:用动态内容信息替换templateContent中指定标签信息
 *        4:将templateContent中生成静态HTML文件,保存在指定的系统路径中
 * */
public class Static_html_Builder {
    private String template_path ;//模板HTML文件路径+文件名
    private HttpServletRequest request;
    HttpServletResponse response;
    private String real_html_path;//最终生成html文件路径
    private String Coding="UTF-8";//生成文件编码设置
   
    public Static_html_Builder(HttpServletRequest request,
            HttpServletResponse response, String coding) {
        super();
        this.request = request;
        this.response = response;
        this.Coding = coding;
    }
    public Static_html_Builder(HttpServletRequest request,
            HttpServletResponse response) {
        super();
        this.request = request;
        this.response = response;
       
    }

/*
     * 生成静态页面
     * */
public void template_to_Html(TemplateForm article) throws IOException{
   
    System.out.print(template_path);
    String templateContent="";
    FileInputStream fileinputstream = new FileInputStream(template_path);//读取模块文件
    int lenght = fileinputstream.available();
    byte bytes[] = new byte[lenght];
    fileinputstream.read(bytes);//读入bytes[]中
    fileinputstream.close();//关闭文件输入流
    templateContent = new String(bytes);
    System.out.println(templateContent);
    //替换模板标签
    templateContent=templateContent.replaceAll("#title#",article.getTitle());
    templateContent=templateContent.replaceAll("#content#",article.getContent());
    templateContent=templateContent.replaceAll("#author#",article.getAuthor());//替换掉模块中相应的地方
    templateContent=templateContent.replaceAll("#release_time#",article.getRelease_time());
    System.out.println(templateContent);
    PrintWriter writer=new PrintWriter(real_html_path,Coding);
    writer.write(templateContent);
    writer.close();
}
//JSP 转换静态 HTML
public void jsp_to_static_html(String url_jsp) throws ServletException, IOException
{
    RequestDispatcher rd=request.getRequestDispatcher(request.getRealPath("/")+url_jsp);
                                                                        //生成与源文件同名的HTML文件
    final PrintWriter pw = new PrintWriter(request.getRealPath("/")+url_jsp.replace("jsp", "html"),Coding);
    final ServletOutputStream stream = new ServletOutputStream() {
    public void write(String data, int offset, int length) {
    pw.write(data, offset, length);
    }
    public void write(int b) throws IOException {
    pw.write(b);
    }
    };

    HttpServletResponse rep = new HttpServletResponseWrapper(response) {
    public ServletOutputStream getOutputStream() {
    return stream;
    }
    public PrintWriter getWriter() {
    return pw;
    }
    };
    rd.include(request, rep);
    pw.flush();
     
    PrintWriter out = response.getWriter();
   
    System.out.print("success");
}
public String getTemplate_path() {
    return template_path;
}
public void setTemplate_path(String template_path) {//设置模板HTML文件路径
    this.template_path = request.getRealPath("/")+template_path;//request.getRealPath("/")得到系统当前路径
}

public String getReal_html_path() {
    return real_html_path;
}
public void setReal_html_path(String real_html_path) {//设置生成静态HTML路径
    // 根据时间得文件名
    Calendar calendar = Calendar.getInstance();
    String filename = String.valueOf(calendar.getTimeInMillis()) +".html";//生成静态html文件名
    this.real_html_path = request.getRealPath("/")+real_html_path+filename;//生成的html文件保存路径
}

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值