用JSP生成静态页面

时间:2021-05-18

主要原理请参考http://blog.hunan2s.com/article.asp?id=233

经过一翻调试,成功了。。呵

附上源码。。


JDK1.5+ECLIPSE+TOMCAT5.0.28+MYSQL5.0

数据库TEST ,表名news
字段: idint自动增长 ,Titlevarchar(20),Contentvarchar(200),Authorvarchar(10)

makeFile.jsp

<%
Connectionconn=DBconn.getConnection();
Statementstmt=conn.createStatement();
ResultSetRs=stmt.executeQuery("select*fromnews");
System.out.println("success");

%>

<%

StringfilePath=request.getRealPath("/")+"template.htm";

System.out.println(filePath);

StringtemplateContent;
FileInputStreamfileinputstream=newFileInputStream(filePath);
intlenght=fileinputstream.available();//available()返回可以不受阻塞地从此文件输入流中读取的字节数。

bytebytes[]=newbyte[lenght];

fileinputstream.read(bytes);//read(byte[]b)从此输入流中将最多b.length个字节的数据读入一个字节数组中。

fileinputstream.close();
//templateContent=newString(bytes);
Stringtitle;
Stringcontent;
Stringauthor;
while(Rs.next())
{
templateContent=newString(bytes);//如果不用这句,则替换一次之后,templateContent中就没有#**#标志了。所以要重新生成
title=Rs.getString("Title");
content=Rs.getString("Content");
author=Rs.getString("Author");
out.println(title+"********"+content+"****"+author);
out.print("以下是模板内容:<br>"+templateContent+"<br>以下是置换以后的html内容<br><hr>");
templateContent=templateContent.replaceAll("#title#",title);
templateContent=templateContent.replaceAll("#author#",author);//替换掉模块中相应的地方
templateContent=templateContent.replaceAll("#content#",content);

//根据时间得文件名
Calendarcalendar=Calendar.getInstance();
Stringfileame=String.valueOf(calendar.getTimeInMillis())+".html";
fileame=request.getRealPath("/")+"Html/"+fileame;//生成的html文件保存路径


out.print(templateContent);
FileOutputStreamfileoutputstream=newFileOutputStream(fileame);//建立文件输出流
bytetag_bytes[]=templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();

}

if(conn!=null)
{
conn.close();
}
if(stmt!=null)
{
stmt.close();
}



%>

//数据库连接文件

importjava.sql.*;
publicclassDBconn{

publicDBconn(){

//TODOAuto-generatedconstructorstub
}

publicstaticConnectiongetConnection()
{
Connectionconn=null;

try{
Class.forName("org.gjt.mm.mysql.Driver");
conn=DriverManager.getConnection("jdbc:mysql://"+"localhost"+"/"+"test"+
"?useUnicode=true&characterEncoding=GB2312","root","111111");

}
catch(Exceptione)
{
e.printStackTrace();
}
returnconn;
}

}



// 模板文件

template.htm
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>#title#</title>
</head>

<body>
<tablewidth="380"height="107"border="0"cellpadding="0"cellspacing="1"bgcolor="#FFCC99">
<tr>
<tdheight="16"bgcolor="#FFCC99"><divalign="center">#title#</div></td>
</tr>
<tr>
<tdbgcolor="#FFFFFF">#content#</td>
</tr>
<tr>
<tdheight="13"align="right"bgcolor="#FFFFFF">#author#</td>
</tr>
</table>
</body>
</html>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章