大家在學習jsp的時候是不是都會很好奇網站中的靜態頁面是怎么生成的呢?其實生成靜態頁面的方法很簡單,下面我們就一起跟小編去看看JSP如何生成靜態頁面的吧,希望對大家有所幫助。
附上源碼。。
JDK?1.5?+ECLIPSE?+TOMCAT?5.0.28?+?MYSQL?5.0?
數據庫TEST ,表名news?
字段: id???int?自動增長 ,?Title??varchar(20)?,?Content??varchar(200)??,?Author??varchar(10)?
makeFile.jsp
?<%
??Connection?conn?=?DBconn.getConnection();
??Statement?stmt?=?conn.createStatement();
??ResultSet?Rs?=?stmt.executeQuery("select?*?from?news");
??System.out.println("success");
?%>
??<%
??String?filePath?=?request.getRealPath("/")+"template.htm";
??System.out.println(filePath);
??String?templateContent;
??FileInputStream?fileinputstream?=?new?FileInputStream(filePath);
??int?lenght?=?fileinputstream.available();?//available()?返回可以不受阻塞地從此文件輸入流中讀取的字節數。
byte?bytes[]?=?new?byte[lenght];
fileinputstream.read(bytes);?//read(byte[]?b)?從此輸入流中將最多?b.length?個字節的數據讀入一個字節數組中。
fileinputstream.close();
//templateContent?=?new?String(bytes);
String?title;
String?content;
String?author;
while(Rs.next())
{
templateContent?=?new?String(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);
//?根據時間得文件名
Calendar?calendar?=?Calendar.getInstance();
String?fileame?=?String.valueOf(calendar.getTimeInMillis())?+".html";
fileame?=?request.getRealPath("/")+"Html/"+fileame;//生成的html文件保存路徑
out.print(templateContent);
FileOutputStream?fileoutputstream?=?new?FileOutputStream(fileame);//建立文件輸出流
byte?tag_bytes[]?=?templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
}
if(conn!=null)
????{
????????conn.close();
????}
????if(stmt!=null)
????{
????????stmt.close();
????}
??%>
//數據庫連接文件
import?java.sql.*;
public?class?DBconn?{
????public?DBconn()?{
????????//?TODO?Auto-generated?constructor?stub
????}
????public?static?Connection?getConnection()?
????{
????????Connection?conn?=?null;
????????try?{?
????????????Class.forName("org.gjt.mm.mysql.Driver");?
????????????conn?=?DriverManager.getConnection("jdbc:mysql://"?+?"localhost"?+?"/"?+?"test"?+
????????"?useUnicode=true&characterEncoding=GB2312","root","111111");?
????????}
????????catch(Exception?e)
????????{
????????????e.printStackTrace();
????????}
????????return?conn;
????????}
????/*public?static?void?main(String[]?args)?throws?Exception
????{
????????Connection?con=getConnection();
????????System.out.println(con.isClosed());
????}
*/
}
// 模板文件
template.htm
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"?/>
<title>#title#</title>
</head>
<body>
<table?width="380"?height="107"?border="0"?cellpadding="0"?cellspacing="1"?bgcolor="#FFCC99">
??<tr>
????<td?height="16"?bgcolor="#FFCC99"><div?align="center">#title#</div></td>
??</tr>
??<tr>
????<td?bgcolor="#FFFFFF">#content#</td>
??</tr>
??<tr>
????<td?height="13"?align="right"?bgcolor="#FFFFFF">#author#</td>
??</tr>
</table>
</body>
</html>
看完本文后你知道JSP如何生成靜態頁面了嗎?希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答