日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

JSP生成静态HTML页面的实践方法和设计思路

發(fā)布時間:2025/3/16 HTML 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP生成静态HTML页面的实践方法和设计思路 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們以兩個大型網(wǎng)站為例作比較:
51job和智聯(lián)招聘(先聲明我不是為他們作廣告,僅以他們?yōu)槔骷夹g(shù)上的比較)
51job采用的是比較“先進(jìn)”的php技術(shù),而智聯(lián)用的是比較落后的asp.但我們可能會明顯的感覺到51job的反應(yīng)速度相比智聯(lián)招聘實在是太慢了,為什么會這樣?細(xì)心的人可能會察覺到了。智聯(lián)雖然用的是asp,但他采用了另一種更巧妙的技術(shù)--asp生成靜態(tài)頁技術(shù)。所有的動態(tài)頁基本上都轉(zhuǎn)換成了html靜態(tài)頁,不用訪問數(shù)據(jù)庫,當(dāng)然反應(yīng)快了。
下面我們討論一下jsp怎么轉(zhuǎn)換成html??
首先要做一個模板。后綴不限,但一般都用*.template例子
<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>
<P align="center">
#title#<BR><BR><BR>
作者:#author#<BR><BR>
<BR>
#content#<BR><BR><BR><BR>
</P>
</body>
</html>
做一個處理模板的類或者jsp文件、(為說明問題我們從簡單入手以一個jsp文件為例)
?filePath = request.getRealPath("/")+"WEB-INF/templates/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("以下是模板內(nèi)容:<br>"+templateContent+"<br> 以下是置換以后的html內(nèi)容<br><hr>");
?templateContent=templateContent.replaceAll("#title#",title);
?templateContent=templateContent.replaceAll("#author#",editer);//替換掉模塊中相應(yīng)的地方
?templateContent=templateContent.replaceAll("#content#",content);
?// 根據(jù)時間得文件名
?Calendar calendar = Calendar.getInstance();
?String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
?fileame = request.getRealPath("/")+fileame;//生成的html文件保存路徑 out.print(templateContent);
?FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件輸出流
?byte tag_bytes[] = templateContent.getBytes();
?fileoutputstream.write(tag_bytes);
?fileoutputstream.close();
嗯,核心技術(shù)就是這樣了,如果大家要求的性能更高,可以改用freemarker做模板。 經(jīng)過一翻調(diào)試,成功了。。呵 附上源碼。。
JDK 1.5 +ECLIPSE +TOMCAT 5.0.28 + MYSQL 5.0 數(shù)據(jù)庫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() 返回可以不受阻塞地從此文件輸入流中讀取的字節(jié)數(shù)。
?
byte bytes[] = new byte[lenght]; fileinputstream.read(bytes); //read(byte[] b) 從此輸入流中將最多 b.length 個字節(jié)的數(shù)據(jù)讀入一個字節(jié)數(shù)組中。 fileinputstream.close();
//templateContent = new String(bytes);
String title;
String content;
String author;
while(Rs.next())
{
templateContent = new String(bytes);//如果不用這句,則替換一次之后,templateContent中就沒有#**#標(biāo)志了。所以要重新生成
?title = Rs.getString("Title");
?content = Rs.getString("Content");
?author = Rs.getString("Author");
out.println(title+"********"+content+"****"+author);
out.print("以下是模板內(nèi)容:<br>"+templateContent+"<br> 以下是置換以后的html內(nèi)容<br><hr>");
templateContent=templateContent.replaceAll("#title#",title);
templateContent=templateContent.replaceAll("#author#",author);//替換掉模塊中相應(yīng)的地方
templateContent=templateContent.replaceAll("#content#",content); // 根據(jù)時間得文件名
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();
??? }
?
? %> //數(shù)據(jù)庫連接文件 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" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url]http://www.w3.org/1999/xhtml[/url]">
<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> 為了減輕服務(wù)器壓力,將原來的文章管理系統(tǒng)由JSP文件的從數(shù)據(jù)庫中取數(shù)據(jù)顯示改為由jsp生成靜態(tài)html文件后直接訪問html文件。下面是一個簡單的示例 1.buildhtml.jsp <%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>
<%
try{
?String title="This is Title";
?String content="This is Content Area";
?String editer="LaoMao";
?String filePath = "";
?filePath = request.getRealPath("/")+"test/template.htm";
?//out.print(filePath+"<br>");
?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);//替換掉模塊中相應(yīng)的地方
?//out.print(templateContent);
?// 根據(jù)時間得文件名
?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:###author###&nbsp;&nbsp;</td>
? </tr>
? <tr>
??? <td>###content###
?</td>
?
? </tr> </table>
</body>
</html>
?

轉(zhuǎn)載于:https://blog.51cto.com/nonoshow/118453

總結(jié)

以上是生活随笔為你收集整理的JSP生成静态HTML页面的实践方法和设计思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久国产精品二区 | 九九热国产 | 欧美视频在线观看一区二区 | 免费极品av一视觉盛宴 | 4438五月天| 日韩美女做爰高潮免费 | 男性影院 | 特色特色大片在线 | 中国毛片网 | 蜜桃精品视频 | 五月色丁香 | 乱人伦xxxx国语对白 | 6699av| 黄色片免费在线播放 | 日本午夜一区二区 | 日韩亚洲欧美中文字幕 | 日本性视频网站 | 青青成人在线 | 久久激情五月 | 91不卡视频| 一级黄色大片免费看 | 日本肉体xxxⅹ裸体交 | 亚洲激情视频在线观看 | 天堂中文在线资源 | 亚洲精品久久视频 | 日韩中文字幕亚洲精品欧美 | 黄色片不卡 | 美女视频一区二区三区 | 操一操| 亚洲高清精品视频 | 91麻豆蜜桃一区二区三区 | 国产精品99一区二区三区 | 亚洲日本综合 | 亚洲精品社区 | 成人在线网址 | 先锋影音av资源在线 | 91蝌蚪网| 污视频在线观看免费 | 欧美淫| 亚洲国产精品一区二区尤物区 | 中文字幕三级电影 | 色呦呦麻豆 | 人人做| 欧美色xxxxx| 东北少妇不戴套对白第一次 | 国产成年妇视频 | www日本xxx | www.xxx在线观看 | 亚洲中文字幕无码一区二区三区 | 亚洲综合av一区 | 少妇人妻偷人精品一区二区 | 福利国产在线 | 91喷水视频 | 五月天小说网 | 在线观看成人免费 | 96国产在线 | 国产精品suv一区二区88 | 午夜看片福利 | 少妇搡bbbb搡bbbb | 97国产资源 | 国产精品久久久久无码av色戒 | 欧美暧暧视频 | 深夜福利国产精品 | 91精品国产乱码久久久久久久久 | 天天草天天爽 | 国产精彩视频在线 | 少妇福利在线 | 主播av在线 | 成人手机视频 | 天堂成人在线视频 | 91中文字幕在线观看 | 樱花电影最新免费观看国语版 | 游戏涩涩免费网站 | 偷啪自啪| 欧美精品久久久久久久久 | av手机天堂网 | 亚州欧美| 不卡精品 | 日韩高清在线一区二区 | 在线国产视频一区 | 亚洲在线a| 驯服少爷漫画免费观看下拉式漫画 | 四虎视频 | 午夜精产品一区二区在线观看的 | 国产福利视频在线 | 男人的天堂狠狠干 | 一区二区三区手机在线观看 | 综合激情四射 | 日韩黄色影院 | 西西4444www大胆无视频 | 国产熟妇一区二区三区aⅴ网站 | 欧美日韩在线视频免费观看 | 美国一区二区 | 欧美被狂躁喷白浆精品 | 亚州av影院 | 欧美日韩一区二区三区四区 | 国产日韩精品电影 | 福利av在线 | 青青草视频在线观看免费 |