Perkenalan:
Mari kita ambil dua situs web besar sebagai contoh perbandingan:
51perekrutan dan Perekrutan Zhaopin (Pertama-tama saya harus menyatakan bahwa saya tidak mengiklankannya, saya hanya menggunakannya sebagai contoh untuk perbandingan teknis)
51job menggunakan teknologi PHP yang relatif "canggih", sedangkan Zhaopin menggunakan ASP yang relatif terbelakang. Namun kita mungkin merasa bahwa kecepatan respons 51job terlalu lambat dibandingkan dengan Zhaopin. Orang yang penuh perhatian mungkin memperhatikannya. Meskipun Zhilian menggunakan ASP, ia menggunakan teknologi lain yang lebih pintar - teknologi pembuatan halaman statis ASP. Semua halaman dinamis pada dasarnya diubah menjadi halaman statis HTML tanpa mengakses database. Tentu saja responnya cepat.
Mari kita bahas bagaimana cara mengubah jsp menjadi html??
Pertama buat templatnya. Tidak ada batasan untuk akhiran, tetapi *.template umumnya digunakan sebagai contoh.
<html>
<kepala>
<judul>#judul#</judul>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</kepala>
<tubuh>
<P sejajar="tengah">
#judul#<BR><BR><BR>
Penulis: #penulis#<BR><BR>
<BR>
#konten#<BR><BR><BR><BR>
</P>
</tubuh>
</html>
Buat file kelas atau jsp yang memproses template (untuk mengilustrasikan masalahnya, mari kita mulai dengan file jsp sederhana sebagai contoh)
filePath = permintaan.getRealPath("/")+"WEB-INF/templates/template.htm";
keluar.print(filePath);
String templatKonten="";
FileInputStream fileinputstream = FileInputStream baru(filePath);//Baca file modul
int panjang = fileinputstream.tersedia();
byte byte[] = byte baru[panjang];
fileinputstream.read(byte);
fileinputstream.close();
templateContent = String baru(byte);
out.print("Berikut isi template:<br>"+templateContent+"<br> Berikut isi html setelah penggantian<br><hr>");
templateContent=templateContent.replaceAll("#title#",judul);
templateContent=templateContent.replaceAll("#author#",editer);//Ganti tempat yang sesuai dalam modul
templateContent=templateContent.replaceAll("#content#",content);
// Dapatkan nama file berdasarkan waktu
Kalender kalender = Kalender.getInstance();
String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
fileame = request.getRealPath("/")+fileame;//Jalur penyimpanan file html yang dihasilkan
out.print(templateContent);
FileOutputStream fileoutputstream = new FileOutputStream(fileame);//Membuat aliran keluaran file
byte tag_bytes[] = templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
Nah, teknologi intinya seperti ini. Jika Anda membutuhkan performa yang lebih tinggi, Anda bisa menggunakan FreeMarker sebagai template.
Setelah beberapa debugging, itu berhasil. . Terlampir
adalah kode sumbernya. .
JDK 1.5 + ECLIPSE + TOMCAT 5.0.28 + MYSQL 5.0
database TEST, berita nama tabel
Bidang: id int otomatis bertambah, Judul varchar(20), Konten varchar(200), Penulis varchar(10)
makeFile.jsp
<%
Sambungan koneksi = DBconn.getConnection();
Pernyataan stmt = samb.createStatement();
ResultSet Rs = stmt.executeQuery("pilih * dari berita");
"
);
<%
String filePath = permintaan.getRealPath("/")+"template.htm"
;
Templat stringIsi;
FileInputStream fileinputstream = FileInputStream baru(filePath);
int panjang = fileinputstream.available(); //available() Mengembalikan jumlah byte yang dapat dibaca dari aliran input file ini tanpa pemblokiran.
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes); //read(byte[] b) Membaca hingga b.length byte data dari aliran input ini ke dalam array byte.
fileinputstream.close();
//templateContent = String baru(byte);
Judul string;
Konten string;
Penulis string;
while(Rs.berikutnya())
{
templateContent = new String(bytes);//Jika Anda tidak menggunakan kalimat ini, setelah menggantinya satu kali, tidak akan ada tanda #**# di templateContent. Jadi untuk regenerasi
title = Rs.getString("Judul");
konten = Rs.getString("Isi");
penulis = Rs.getString("Penulis");
out.println(judul+"********"+isi+"****"+penulis);
out.print("Berikut isi template:<br>"+templateContent+"<br> Berikut isi html setelah penggantian<br><hr>");
templateContent=templateContent.replaceAll("#title#",judul);
templateContent=templateContent.replaceAll("#author#",author);//Ganti tempat yang sesuai dalam modul
templateContent=templateContent.replaceAll("#content#",content);
// Dapatkan nama file berdasarkan waktu
Kalender kalender = Kalender.getInstance();
String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
fileame = request.getRealPath("/")+"Html/"+fileame;//Jalur penyimpanan file html yang dihasilkan
keluar.print(templateContent);
FileOutputStream fileoutputstream = new FileOutputStream(fileame);//Membuat aliran keluaran file
byte tag_bytes[] = templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
}
if(sambungan!=null)
{
samb.close();
}
jika(stmt!=batal)
{
stmt.tutup();
}
%>
//File koneksi database
import java.sql.*;
DBconn kelas publik {
publikDBconn() {
// TODO Stub konstruktor yang dibuat secara otomatis
}
Koneksi statis publik getConnection()
{
Sambungan koneksi = null;
mencoba {
Class.forName("org.gjt.mm.mysql.Driver");
samb = DriverManager.getConnection("jdbc:mysql://" + "localhost" + "/" + "test" +
"?useUnicode=true&characterEncoding=GB2312","root","111111");
}
menangkap (Pengecualian e)
{
e.printStackTrace();
}
koneksi kembali;
}
/*public static void main(String[] args) memunculkan Pengecualian
{
Koneksi con=getConnection();
Sistem.keluar.println(con.isClosed());
}
*/
}
//Template file
templat.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 ">
<kepala>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312" />
<judul>#judul#</judul>
</kepala>
<tubuh>
<tabel lebar = "380" tinggi = "107" border = "0" cellpadding = "0" sel spasi = "1" bgcolor = "#FFCC99">
<tr>
<td height="16" bgcolor="#FFCC99"><div align="center">#title#</div></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">#konten#</td>
</tr>
<tr>
<td height="13" align="right" bgcolor="#FFFFFF">#penulis#</td>
</tr>
</tabel>
</tubuh>
</html>