整理Jsp生成html文件 |
发布: 2010-03-20
返回
|
最近在用jsp生成html文件,整理出三种方法,希望对大家有所帮助。 方法1: 为了减轻服务器压力,将原来的文章管理系统由JSP文件的从数据库中取数据显示改为由jsp生成静态html文件后直接访问html文件。下面是一个简单的示例 1.buildhtml.jsp
<%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>
<% try{ String title="jsp生成静态html文件"; String content="小样,还搞不定你?"; String editer="hpsoft"; String filePath = ""; filePath = request.getRealPath("/")+"template.htm"; out.print(filePath); String templateContent=""; FileInputStream fileinputstream = new FileInputStream(filePath);//读取模块文件 int lenght = fileinputstream.available(); byte bytes[] = new byte[lenght]; fileinputstream.read(bytes); fileinputstream.close(); templateContent = new String(bytes); out.print(templateContent); templateContent=templateContent.replaceAll("###title###",title); templateContent=templateContent.replaceAll("###content###",content); templateContent=templateContent.replaceAll("###author###",editer); //替换掉模块中相应的方法 out.print(templateContent); // 根据时间得文件名 Calendar calendar = Calendar.getInstance(); String fileame = String.valueOf(calendar.getTimeInMillis()) +".html"; fileame = request.getRealPath("/")+fileame;//生成的html文件保存路径 FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件输出流 byte tag_bytes[] = templateContent.getBytes(); fileoutputstream.write(tag_bytes); fileoutputstream.close(); } catch(Exception e){ out.print(e.toString()); }
%>
模板文件
2. template.htm <html> <head> <title>###title###</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <LINK href="../css.css" rel=stylesheet type=text/css> </head> <body> <table width="500" border="0" align="center" cellpadding="0" cellspacing="2"> <tr> <td align="center">###title###</td> </tr> <tr> <td align="center">作者:###author### </td> </tr> <tr> <td>###content### </td> </tr> </table> </body> </html>
方法2:
<%@ page contentType="text/html; charset=gb2312"%> <% String[] flag = {"<$title$>","<$date$>","<$author$>","<$content$>"}; String title=request.getParameter("title"); String content=request.getParameter("content"); String editer="admin"; //Session.getAttribute("s_userName"); String filePath = ""; filePath = application.getRealPath("./adminroot/news.template"); String templateContent; try{ templateContent = ReadTemplates.getTlpContent(filePath); }catch(Exception e){ throw new Exception("模板信息读取失败。请联系系统管理员。"); } templateContent = ReplaceAll.replace(templateContent,flag[0],title); templateContent = ReplaceAll.replace(templateContent,flag[1],GetDate.getStringDate()); templateContent = Replac eAll.replace(templateContent,flag[2],editer); templateContent = ReplaceAll.replace(templateContent,flag[3],content);
// 根据时间得文件名与路径名
Calendar calendar = Calendar.getInstance(); String fileName = String.valueOf(calendar.getTimeInMillis()) +".shtml"; String pathName = application.getRealPath("./news")+"\\"+ calendar.get(Calendar.YEAR) + "\\"+ (calendar.get(Calendar.MONTH)+1) +"\\"+ calendar.get(Calendar.DAY_OF_MONTH)+"\\"; try{ WriteHtml.save(templateContent,pathName,fileName); }catch(WriteFileException we){ throw new Exception("操作失败!"); }%> import java.io.*;
public class WriteHtml {
public WriteHtml() {
}
public static void save(String s, String s1, String s2)
{
try { a(s1); FileOutputStream fileoutputstream = new FileOutputStream(s1 + s2); byte abyte0[] = s.getBytes(); fileoutputstream.write(abyte0); fileoutputstream.close(); } catch (IOException e) { System.out.println( " write html error" +e.getMessage()); } }
private static void a(String s) {
try { File file = new File(s); if (!file.exists()) file.mkdirs(); } catch (Exception e) { System.out.println( " mkdirs error!" +e.getMessage()); } } } import java.io.*; public class ReplaceAll { private static Object a = new Object(); public ReplaceAll() { }
public String replace(String content,String flag,String temp)
{ String str = null;
try
{ //System.out.println("before-----"+content); String s1 = content; str = s1.replaceAll(flag,temp); // System.out.println("replace after-----"+str); } catch(Exception e) { System.out.println("replace all error:"+e.getMessage()); } return str;
  ; }
private static void a(String s) { File file = new File(s); if(!file.exists()) file.mkdirs(); } }
import java.io.*;
import java.util.*;
public class ReadTemplates
{
private String temp = null;
private Object a = new Object();
public ReadTemplates()
{ }
public String getTlpContent(String s)
{
if(temp == null) synchronized(a) { if(temp == null) try { System.out.println("----------------------------"); temp = a(s); //System.out.println("test the temp"+temp); } catch(Exception e) { System.out.println("get tlpconente error"+e.getMessage()); } } return temp; }
private synchronized String a(String s)
{
String s1 = null; try { FileInputStream fileinputstream = new FileInputStream(s); int i = fileinputstream.available(); byte abyte0[] = new byte[i]; fileinputstream.read(abyte0); fileinputstream.close(); s1 = new String(abyte0); } catch(IOException e) { System.out.println("ioexception error"+e.getMessage()); } return s1; }
}
<html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <LINK href="../css.css" rel=stylesheet type=text/css> </head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2"> <tr> <td align="center"><$title$></td> </tr> <tr> <td align="center">作者:<$author$> 发布时间:<font color=#ff0000><$date$></font></td> </tr> <tr> <td><$content$> </td>
</tr>
</table>
</body> </html> 方法3: package com.binghe.publish.database;
import java.io.*;
public class JspToHtml {
private String temp = ""; private Object a = new Object(); public JspToHtml() { }
public String readTemple(String filepath) {
if (temp == null) {
synchronized (a) { System.out.println("---------------"); try { FileInputStream fileinputstream = new FileInputStream(filepath); int i = fileinputstream.available(); byte byte0[] = new byte[i]; fileinputstream.read(byte0); fileinputstream.close(); temp = new String(byte0); } catch (FileNotFoundException ex) { &nb sp; System.out.println("FileNotFoundException error" + ex.getMessage()); } catch (IOException ex1) { System.out.println("IOException error" + ex1.getMessage()); } }
}
return temp; }
public String replaceAll(String content, String flag, String s) {
String str = null; String s1 = content; try { str = s1.replaceAll(flag, s); } catch (Exception ex2) { System.out.println("Exception error" + ex2.getMessage()); } return str; }
public static void writeHtml(String content, String pathname, String filename) {
File file = new File(pathname); if (!file.exists()) { file.mkdir(); } try { FileOutputStream fileoutputstream = new FileOutputStream(pathname + filename); byte byte0[] = content.getBytes();
fileoutputstream.close();
}
catch (FileNotFoundException ex) { System.out.println("FileNotFoundException error" + ex.getMessage()); } catch (IOException ex1) { System.out.println("IOException error" + ex1.getMessage()); }
}
} |