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文件保存路径
}
}
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文件保存路径
}
}