Kita semua tahu bahwa ada dua bentuk penyertaan di jsp, yaitu
<%@ sertakan file=” ”%>
<jsp:include page=” ” flush=”true”/></P>
Yang pertama adalah unsur instruksi dan yang kedua adalah unsur perilaku. Dimana tepatnya mereka akan digunakan? Bagaimana cara menggunakannya dan apa bedanya? Ini seharusnya menjadi pertanyaan yang terlintas di benak banyak orang ketika melihatnya. Mari kita lihat di bawah ini. </P>
Biasanya ketika bagian tertentu dari seluruh halaman dalam aplikasi (seperti judul, footer, dan bilah navigasi) sama, kita dapat mempertimbangkan untuk menggunakan penyertaan. Khususnya, kapan menggunakan <%@ include file=""%>, dan kapan menggunakan <jsp:include page="" flush="true"/>. Hal pertama yang harus dipahami adalah perbedaan di antara keduanya. Hanya dengan memahami perbedaan penggunaannya Anda dapat memahami kapan menggunakannya dan bagaimana memilihnya.
<%@ include file=" ”%>, elemen direktif jsp include membaca konten halaman yang ditentukan. Dan integrasikan konten tersebut dengan halaman aslinya. (Proses ini dilakukan pada tahap penerjemahan: yaitu tahap ketika jsp diubah menjadi servlet.</P>
Berikut penjelasan tahap penerjemahannya: Kita tahu bahwa halaman jsp tidak dapat dikirim ke browser secara utuh, dan semua elemen jsp harus diproses terlebih dahulu oleh server. Hal ini dilakukan dengan mengubah halaman jsp menjadi servlet dan kemudian mengeksekusi servlet. Server memerlukan wadah jsp untuk memproses halaman jsp. Kontainer jsp biasanya diimplementasikan dalam bentuk servlet. Servlet ini dikonfigurasi untuk menangani semua permintaan halaman jsp. </P>
Kontainer Jsp bertanggung jawab untuk mengubah halaman jsp menjadi servlet (disebut kelas implementasi halaman jsp? Kelas implementasi Halaman JSP) dan mengkompilasi servlet ini. Kedua langkah ini merupakan tahap penerjemahan.</P>
Dari sini kita akan mengetahui: halaman jsp menambahkan konten sebenarnya (yaitu cuplikan kode) dari halaman yang ditentukan oleh elemen arahan include ke halaman jsp yang memperkenalkannya. Setelah disintesis menjadi file, diubah menjadi a servlet oleh wadah jsp. Anda dapat melihat bahwa file kelas sementara dan file java akan dibuat saat ini. Berikut ini contohnya. </P>
Server menggunakan Tomcat, dan file jsp yang dimasukkan ke halaman disebut test.jsp. Halaman yang diimpor disebut date.jsp. File jsp ini menyimpan kode jsp yang terkait dengan waktu, dan root konteks saat ini disetel untuk diuji.
//======File sumber date.jsp======//
<%@ halaman bahasa="java" contentType="teks/html;charset=gb2312"%>
<%
java.util.Date date=baru java.util.Date();
String tanggal_cn = "";
String tanggalStr = "";
beralih(tanggal.getDay())
{
case 0:date_cn = "Hari";
kasus 1:tanggal_cn = "一"; istirahat;
kasus 2:tanggal_cn = "二"; istirahat;
kasus 3:tanggal_cn = "三"; istirahat;
kasus 4:date_cn = "四";
kasus 5:tanggal_cn = "五"; istirahat;
kasus 6:date_cn = "六"; istirahat;
}
dateStr = (1900+tanggal.getYear()) + "Tahun" + (tanggal.getMonth()+1) + "Bulan" + tanggal.getDate() + "Hari (Hari Kerja) + date_cn + ")";
%>
dokumen.write("<%=dateStr%>");
//======Berikut ini adalah file sumber test.jsp==============//
<%@ halaman bahasa=”java” contentType=”teks/html;charset=gb2312”%>
<html>
<kepala>
<title>Dua kegunaan include</title>
<jsp:sertakan halaman=”tanggal.jsp” flush=”benar”/>
<%--@ sertakan file=”date.jsp” %-->
//Kami menggunakan dua bentuk penyertaan yang berbeda di sini untuk memperkenalkan file date.jsp.
<kepala>
<tubuh>
<tabel><tr><td>
Harap perhatikan dua penggunaan include di jsp.
</td></tr></tabel>
</tubuh>
</html></P>
Di file test.jsp, kita hanya menampilkan sebaris teks "Tentang dua kegunaan penyertaan di jsp. Mohon perhatiannya." Sekarang mari kita gunakan dulu formulir <%@ include file="date.jsp" %> Perkenalkan file tanggal.jsp. Apakah menurut Anda ada yang tidak beres? Pesan kesalahan muncul saat ini:
Status HTTPnya 500?
org.apache.jasper.JasperException: /date.jsp(0,0) Petunjuk halaman: tidak boleh memiliki banyak kemunculan contentType
Ada banyak kesalahan di bawah ini, tetapi kita hanya perlu melihatnya untuk melihat di mana letak masalahnya. Kode statusnya adalah http 500 Server Internal Error. Simak lagi tipsnya di bawah ini. Beberapa tipe konten tidak dapat ditentukan di halaman date.jsp.</P>
Inilah alasannya. Hal ini karena selama tahap penerjemahan, kode file date.jsp ditambahkan ke halaman test.jsp secara utuh untuk mensintesis file. File yang disintesis akan sama:
<%@ halaman bahasa=”java” contentType=”teks/html;charset=gb2312”%>
Kode ini. Solusinya adalah dengan menghapus kalimat ini di file date.jsp. Segarkan lalu minta halaman test.jsp</P>
Permintaan test.jsp ditampilkan pada halaman sebagai berikut
10 Desember 2003 13:12:40
Harap perhatikan dua penggunaan include di jsp. </P>
Kami belum dapat menemukan apa pun. Mari kita periksa file sementara di bawah kucing jantan. Pergi ke sana dan lihat apakah konten file date.jsp telah ditambahkan ke file test.jsp.
<Catatan. Kucing jantan di sini dipasang di direktori root drive E>
Daftar isi
E:TomcatworkStandalonelocalhosttest.
Di direktori ini Anda akan melihat
Ada dua file test_jsp.java dan test_jsp.class. </P>
File java disini adalah file test_jsp.java yang diperoleh dengan mengkonversi jsp menjadi servlet oleh container jsp. </P>
File test_jsp.class yang sesuai adalah file kelas yang dihasilkan dengan mengkompilasi file servlet test_jsp.java. Buka file servlet yang dihasilkan (test_jsp.java). Pada titik ini kita akan menemukan bahwa ketika file test.jsp diubah menjadi file servlet, beberapa kode yang tidak ada di halaman test.jsp ditambahkan di antara output <haed>. jsp: Silakan tes dan lihat konten baru apa yang ditambahkan atau apakah konten baru benar-benar ditambahkan. Sekilas saya tidak akan menjelaskan secara detail.</P>
Di atas adalah hasil yang kita peroleh dengan menggunakan form <%@ include file="date.jsp"%>.
Selanjutnya, kita menggunakan <jsp:include page="dae.jsp" flush="true"/>, yaitu,
Ganti <%@ include file="date.jsp"%> dengan <jsp:include page="dae.jsp" flush="true"/>, lalu minta test.jsp.
2003?ê 12??10?? 13:30:13
Harap perhatikan dua penggunaan include di jsp. </P>
Saat ini, Anda akan melihat di halaman bahwa karakter Cina pada keluaran tanggal pada date.jsp yang kami perkenalkan kacau. Apa alasannya? Itu karena elemen perilaku penyertaan dijalankan selama tahap pemrosesan permintaan (di sini kita perlu menjelaskan tahap pemrosesan permintaan. Selain bertanggung jawab untuk mengubah halaman jsp menjadi servlet seperti yang disebutkan di atas, wadah Jsp juga bertanggung jawab untuk memanggil kelas implementasi halaman jsp untuk memproses setiap permintaan dan menghasilkan respons tahap pemrosesan permintaan. Tahap pemrosesan permintaan hanya mengeksekusi file kelas) . </P>
Jadi ketika kami memperkenalkan elemen tindakan penyertaan ke dalam halaman, kami sebenarnya hanya mereferensikan file kelas servlet yang dihasilkan setelah file date.jsp dikonversi dan dikompilasi. Dalam hal ini, date.jsp diuji sebagai file terpisah setelah eksekusi dipanggil ketika file .jsp sedang berjalan. Karena pengkodean karakter tidak ditentukan dalam file date.jsp, muncul karakter yang kacau. Solusinya adalah dengan mengganti kembali karakter yang baru saja dihapus di file date.jsp.
<%@ halaman bahasa=”java” contentType=”teks/html;charset=gb2312”%>
Setelah menambahkan baris pernyataan ini, segarkan dan jalankan kembali. Saat ini, halaman ditampilkan dengan benar dan sama seperti saat berjalan normal dengan direktif include. Jika Anda melihat file sementara di bawah kucing jantan, Anda akan menemukannya di sana adalah file date_jsp.java dan file date_jsp.class. Kedua file ini diperoleh dengan cara yang sama seperti file test_jsp.java dan test_jsp.class. Anda akan menemukan bahwa hanya baris kode baru yang ditambahkan saat ini:
JspRuntimeLibrary.include(permintaan, respons, "tanggal.jsp", keluar, benar);</P>
Itu tidak menambahkan kode file date.jsp ke test.jsp.</P>
Itu hanya memperkenalkan respons yang dihasilkan setelah halaman date.jsp dijalankan saat runtime. Ini berarti bahwa kita dapat menentukan sumber daya Web apa pun yang dapat menghasilkan respons (seperti halaman servlet atau jsp), selama tipe yang dihasilkan oleh ini. sumber daya sama dengan jsp Jenis konten yang dihasilkan oleh halaman tersebut sama. Wadah JSP akan mengeksekusi sumber daya yang ditentukan melalui pemanggilan fungsi internal. Oleh karena itu, sumber daya yang diimpor ini dapat membantu memproses permintaan asli, sehingga sumber daya ini dapat mengakses semua objek dalam cakupan permintaan. Dan semua parameter permintaan Asli.</P>
Karena halaman ini belum diperkenalkan ke halaman utama ketika halaman utama diminta, Anda dapat menggunakan nilai atribut waktu permintaan untuk atribut halaman untuk menentukan halaman mana yang akan diperkenalkan berdasarkan situasi runtime parameter yang akan dibaca oleh halaman masuk.
<jsp:sertakan halaman="<%=pageSelectedAtRuntime%>" flush="true" >
<jsp:param name=”fitstParamer” value=”nilai pertama”>
<jsp:param name=”lastParamer” nilai=”nilai terakhir”>
</jsp:sertakan></P>
Jika halaman jsp yang diimpor diubah, halaman versi terbaru dapat langsung digunakan. Hal ini karena halaman yang diimpor diperlakukan sama persis dengan halaman jsp yang dipanggil langsung oleh browser . , dan secara otomatis masuk ke tahap terjemahan untuk mendapatkan halaman versi terbaru.</P>
(Perhatikan bahwa elemen include behavior sama dengan elemen jsp lainnya. Jika tidak ada badan behavior, maka harus diakhiri dengan "/". Seperti berikut ini.
<jsp:include page="<%=pageSelectedAtRuntime%>" flush="true" />)</P>
Berikut perbedaan antara kedua penggunaan include. Ada dua perbedaan utama;
1: Waktu eksekusi:
<%@ include file=”relativeURI”%> dijalankan selama fase penerjemahan
<jsp:include page="relativeURI" flush="true" /> dijalankan selama fase pemrosesan permintaan.
2: Perbedaan konten yang diperkenalkan:
<%@ sertakan file=”URI relatif”%>
Perkenalkan teks statis (html, jsp) dan integrasikan dengan halaman JSP sebelum diubah menjadi servlet.
<jsp:include page="relativeURI" flush="true" />Memperkenalkan teks respons yang dihasilkan oleh halaman eksekusi atau servlet.
Juga dalam penggunaan, atribut file dan halaman ditafsirkan sebagai URI relatif. Jika dimulai dengan garis miring, maka itu adalah jalur yang relatif terhadap lingkungan. Akan ditafsirkan sesuai dengan awalan yang ditetapkan ke URI aplikasi, jika itu Jika itu tidak dimulai dengan garis miring, maka itu adalah jalur yang terkait dengan halaman tersebut. Ini akan ditafsirkan sesuai dengan jalur halaman di mana file ini diperkenalkan. Untuk informasi lebih lanjut tentang bagaimana URL diinterpretasikan, silakan merujuk ke materi yang relevan atau buku.