1. Pengenalan JSP
JSP (Java Server Pages) adalah bahasa skrip sisi server. Ini adalah teknologi yang menambahkan bahasa Java ke halaman HTML untuk menghasilkan halaman dinamis: tag baru (<%, %>,...) ditambahkan.
JSP adalah teknologi pembuatan halaman web dinamis yang dikembangkan berdasarkan Java dan Servlet. Implementasi dasarnya adalah Java Servlet.
Halaman JSP terdiri dari kode HTML dan kode Java yang tertanam di dalamnya. Server memproses kode Java ini setelah halaman diminta oleh klien, dan kemudian mengembalikan halaman HTML yang dihasilkan ke browser klien.
2. Proses eksekusi JSP Klien meminta halaman JSP -> JSP Parser mem-parsing *.jsp dan mengkompilasinya menjadi *.java -> perintah javac mengkompilasinya menjadi *.class -> mengeksekusi file kelas -> merespons dan mengembalikan hasilnya ke klien
Kode JSP berisi dua kategori: elemen JSP dan data Templat. Data templat mengacu pada bagian yang tidak diproses oleh mesin JSP, yaitu mesin JSP akan langsung membagikan bagian selain tag <%...%> tanpa pemrosesan apa pun.
Saat JSP dijalankan pertama kali atau setelah memodifikasi file JSP, maka akan memanggil JSP Parser untuk mengkompilasi file *.jsp ke dalam program servlet, sehingga akan lebih lambat.
3. Sintaks dasar JSP
1. Dua jenis anotasi
(1) Komentar HTML Anda dapat menambahkan komentar dalam format HTML ke kode JSP. Komentar ini dikirim ke klien tetapi tidak ditampilkan di halaman.
<!-- Komentar dalam format HTML, terlihat saat melihat kode sumber di klien -->
<!-- Komentar ini ditambahkan oleh <%=programmer%>-->
Jika pemrogram adalah seorang peretas, komentar yang dikembalikan pada klien adalah <!-- Komentar ini ditambahkan oleh peretas -->
(2) Komentar JSP ditulis dalam kode JSP tetapi tidak dikirimkan ke klien.
<%-- Komentar JSP, komentar ini akan diabaikan ketika JSP dikompilasi --%>
<%-- /*Komentar multi-baris di Scriptlet*/ --%>
<%-- /**Komentar multi-baris di Scriptlet, yang dapat diekstraksi dari file java menggunakan javadoc*/ --%>
<%-- Komentar satu baris JSP--%>
2. 3 elemen skrip
(1) Deklarasi variabel global
<%!int i=0; String str="Halo Dunia!";
(2)Ekspresi
Dalam kode JSP, ekspresi sering digunakan untuk menampilkan nilai suatu variabel, yang bisa dimana saja
<%! ke dalam a=1; ke dalam b=2; Tali str="Halo Dunia!";
<%=a+b%> <%=str>
PS: Anda tidak dapat menggunakan simbol ";" sebagai terminator suatu ekspresi. Namun ekspresi yang sama harus diakhiri dengan titik koma di Scriptlet.
(3) Naskah
Segmen skrip digunakan untuk memuat segmen program Java yang valid
<% int b=3; %>variabel lokal
3. 3 elemen perintah
(1) perintah halaman
<%@ halaman contentType="teks/html;charset=utf-8"%>
Tentukan atribut global file JSP, termasuk: bahasa, perluasan, impor, sesi, buffer, autoflush, isThreadSafe, info, errorPage, isErrorPage, contentType (format output dari server ke klien)
Letaknya bisa di mana saja pada halaman, namun disarankan untuk meletakkannya di bagian atas halaman.
bahasa: mendeklarasikan jenis bahasa skrip. Saat ini, hanya "java" yang dapat digunakan.
extends: Menunjukkan nama lengkap Kelas Java yang perlu ditambahkan saat mengkompilasi JSP. Ini akan membatasi kemampuan kompilasi JSP, jadi gunakan dengan hati-hati!
import: Daftar paket Java yang perlu diimpor.
sesi: Setel apakah klien memerlukan Sesi HTTP. Standarnya benar.
buffer: Ukuran buffer digunakan oleh objek out untuk memproses output JSP yang dieksekusi ke browser klien. Nilai defaultnya adalah 8Kb.
autoFlush: Menyetel apakah akan memaksa keluaran jika buffer meluap. Jika didefinisikan sebagai benar (nilai default), keluaran akan normal; jika didefinisikan sebagai salah, kesalahan yang tidak terduga akan terjadi.
isThreadSafe: Mengatur apakah file JSP dapat digunakan di beberapa thread. Standarnya benar.
info: informasi teks. Itu dapat diambil menggunakan metode Servlet.getServletInfo().
errorPage: Mengatur file JSP yang menangani peristiwa pengecualian
sErrorPage: Setel apakah halaman ini adalah halaman yang menangani kejadian pengecualian. Jika disetel ke true, objek pengecualian dapat digunakan.
contentType: Menyetel tipe MIME dan kumpulan pengkodean karakter. Tipe MIME default adalah teks/html, dan rangkaian karakter default adalah charset=ISO-8859-1.
Beberapa direktif < %@page %> dapat digunakan dalam satu halaman, namun kecuali untuk atribut import, atribut lainnya hanya dapat digunakan satu kali.
Paket diimpor oleh JSP secara default. Paket berikut telah diimpor selama kompilasi JSP, jadi tidak perlu menggunakan direktif halaman untuk memasukkannya ke dalam file JSP:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
(2) menyertakan arahan
Kode HTML
<%@ sertakan file = "jalur relatif" %>
Gunakan direktif include untuk menyertakan file statis di JSP dan parsing pernyataan JSP dalam file ini.
Jika jalur dimulai dengan "/", maka jalur ini terutama merujuk pada jalur konteks aplikasi jsp.
Jika path dibuka sebagai nama file atau direktori file, maka path ini adalah path file JSP yang sedang digunakan saat ini.
(3) perintah taglib
Kode HTML
<%@ taglib uri = "TagLibrary" awalan = "mypfx" %>
Gunakan arahan taglib untuk menentukan pustaka tag dan awalan kustomnya.
uri: Uniform Resource Identifier secara unik memberi nama label khusus berdasarkan awalan label, yang dapat berupa jalur relatif atau absolut.
awalan: awalan label khusus. Jangan gunakan jsp, jspx, java, javax, servlet, sun, sunw sebagai awalan, ini telah dinyatakan dicadangkan oleh Sun.
4. 8 perintah tindakan
(1) Lompatan halaman: <jsp:maju>
Tag <jsp:forward> meneruskan objek permintaan yang berisi permintaan pengguna dari satu file jsp ke file jsp lainnya.
Berisi total 2 atribut
Atribut halaman adalah ekspresi atau string yang menjelaskan file atau URL yang akan diarahkan.
<jsp:param>Kirim satu atau lebih parameter ke file dinamis. Jika tag <jsp:param> digunakan, file target harus berupa file dinamis (seperti Servlet atau JSP, dll.)
Kode HTML
<jsp:halaman depan=test.jsp>
<jsp:param name="nama pengguna" value="<%=pengguna%>"/>
<jsp:param nama="kata sandi" value="12345678"/>
</jsp:maju>
Dapatkan nama pengguna melalui request.getParameter("username")
(2)Sertakan halaman: <jsp:include>
<jsp:include> memungkinkan penyertaan sumber daya web statis dan dinamis, dan hasil dari kedua penyertaan ini berbeda.
Jika hanya file statis yang disertakan, penyertaan ini hanya menambahkan konten file yang disertakan ke file JSP, mirip dengan < %@include% >;
Jika sumber daya web dinamis disertakan, file yang disertakan juga akan dijalankan oleh kompiler JSP.
Jika file penyertaan ini bersifat dinamis, Anda juga dapat menggunakan <jsp:param> untuk meneruskan parameter dan nilai parameter.
(3) Buat Kacang: <jsp:useBean>
Buat instance Bean dan tentukan nama dan cakupannya.
<jsp:useBean id="beanInstanceName" scope="halaman|permintaan|sesi|aplikasi" class="package.className"/>
Berisi 5 atribut.
id: Konfirmasikan variabel Bean dalam cakupan yang ditentukan, dan gunakan id untuk menggunakan instance Bean ini dalam program. Nilai id peka huruf besar-kecil.
Cakupan: Cakupan di mana Bean berada dan cakupan nama variabel id yang valid. Nilai defaultnya adalah halaman.
kelas: Gunakan kata kunci baru dan konstruktor kelas untuk membuat instance kacang dari suatu kelas. Kelas tidak boleh abstrak dan harus memiliki konstruktor publik tanpa argumen.
type: Jika Bean ini sudah ada dalam lingkup yang ditentukan, penggunaan type akan menetapkan tipe data ke Bean ini. Jika tipe digunakan tanpa kelas atau beanName, bean tidak akan dipakai.
beanName: beanName dapat berupa string package.class, atau ekspresi jsp, dan nilainya akan diteruskan ke metode Beans.instantiate. Nilai tipe bisa sama dengan beanName, kelas dasarnya, atau antarmuka yang diimplementasikannya.
(4) Atur properti Bean: <jsp:setProperty>
<jsp:setProperty name="beanInstanceName" property="*"|property="propertyName" value="string|<%=expression%>"|param="parameterName"/>
name: Menunjukkan nama instance Bean yang telah dibuat di <jsp:useBean>, yaitu id.
property: Cocokkan properti di Bean
param: mengacu pada nama parameter di objek permintaan, dan menetapkan nilai yang sesuai dengan atribut Bean.
nilai: Gunakan nilai yang ditentukan untuk mengatur properti Bean. Nilai ini bisa berupa string atau ekspresi. Jika berupa string, maka akan dikonversi ke tipe atribut Bean (misalnya, "0,98" akan dikonversi ke tipe ganda 0,98). Jika berupa ekspresi, tipenya harus konsisten dengan tipe atribut Bean.
PS: Atribut param dan atribut nilai tidak dapat digunakan secara bersamaan di <jsp:setProperty> yang sama
(5) Dapatkan properti Bean: <jsp:getProperty>
Dapatkan nilai atribut pada objek Bean yang ada dan tampilkan di halaman.
<jsp:getProperty name="beanInstanceName property="propertyName"/>
name: Nama yang sama dengan instance objek yang ada.
property: nama properti pada objek
(6) Gunakan plugin Applet: <jsp:plugin>
Kode HTML
<jsp:plugin type="applet" code="MeidaPlay.class" codebase="../classes">
<jsp:parma>
<jsp:param name="way" value="Hall"/>
</jsp:params>
<jsp:pengembalian>
<p>Tidak dapat memuat applet!</p>
</kebalikan>
</jsp:plugin>
Gunakan <jsp:plugin> untuk memasukkan applet atau Bean, dan jika perlu, unduh plug-in Java untuk menjalankannya.
(7) Tentukan parameter: <jsp:param>
Dapat digunakan di <jsp:include>, <jsp:forward>, <jsp:plugin>.
(8) Pesan kesalahan plugin: <jsp:fallback>
Ketika plug-in <jsp:plugin> tidak dapat ditampilkan secara normal, pesan prompt akan ditampilkan.
3. Objek bawaan JSP
1. Permintaan: Objek permintaan. Objek ini merangkum informasi yang dikirimkan oleh pengguna. Informasi yang dienkapsulasi dapat diperoleh dengan memanggil metode yang sesuai dari objek tersebut.
Ketika objek permintaan memperoleh karakter Cina yang dikirimkan oleh pelanggan, karakter kacau akan muncul dan pemrosesan khusus harus dilakukan.
Metode yang umum digunakan:
getParameter(String parameterName): Dapatkan informasi pengiriman formulir.
getProtocol(): Dapatkan protokol yang digunakan oleh pelanggan.
getServletPath(): Dapatkan halaman tempat pelanggan mengirimkan informasi.
getMethod(): Metode untuk memperoleh informasi yang dikirimkan oleh pelanggan.
getHeader(String str): Dapatkan nilai terima, terima-encoding, dan Host di file header HTTP.
getRermoteHost(): Dapatkan alamat IP pelanggan.
getServerName: Dapatkan nama server.
getServerPort: Dapatkan nomor port server.
getParameterNames(): Dapatkan nama semua parameter yang dikirimkan oleh klien.
2. Respon: Objek respons merespons permintaan klien secara dinamis dan mengirimkan data ke klien.
(1) Respons atribut contentType secara dinamis. Gunakan perintah halaman untuk menyetel atribut contentType halaman secara statis. Saat menyetel atribut ini secara dinamis, gunakan respon.setContextType("text/html;charset=utf-8");
(2) Pengalihan respons
respon.sendRedirect("index.jsp");
3. Sesi: objek sesi
(1) Apa yang dimaksud dengan objek Sesi?
Objek Sesi secara otomatis dibuat ketika halaman JSP pertama dimuat untuk menyelesaikan manajemen sesi.
Ini dimulai ketika klien membuka browser dan terhubung ke server, dan berakhir ketika klien menutup browser dan meninggalkan server. Ini disebut sesi.
(2) ID objek Sesi
Ketika pelanggan mengunjungi halaman JSP di server untuk pertama kalinya, mesin JSP menghasilkan objek Sesi dan memberikan nomor ID tipe String. Mesin JSP juga mengirimkan nomor ID ini ke klien dan menyimpannya dalam cookie dengan cara ini, objek Sesi, Tidak sampai klien menutup browser, objek Sesi klien diubah oleh server, dan korespondensi sesi dengan klien menghilang.
(3) Metode umum
public String getId(): Dapatkan nomor objek Sesi.
public void setAttribute(String str,Object obj): Tambahkan objek parameter ke objek Session.
public Object getAttribute(): Dapatkan atribut di objek Session berdasarkan nama atribut.
public boolean isNew(): Tentukan apakah itu pelanggan baru.
4. Aplikasi: objek aplikasi
(1) Apa yang dimaksud dengan objek Aplikasi?
Objek Aplikasi ini dihasilkan setelah server dimulai. Ketika pelanggan menelusuri berbagai halaman situs web yang dikunjungi, objek Aplikasinya sama, dan semua pelanggan berbagi objek Aplikasi bawaan ini.
(2) Metode umum
setAttribute(String key,Object obj): Tambahkan objek parameter ke objek Aplikasi.
getAttibute(String key): Dapatkan atribut di objek Aplikasi berdasarkan nama atribut
5. Keluar: objek keluaran
Objek keluar adalah aliran keluaran yang digunakan untuk mengeluarkan data ke klien.
out.print(): Menghasilkan berbagai jenis data.
out.newLine(): Menghasilkan karakter baris baru.
out.close(): Menutup aliran.
6. Config: Objek konfigurasi Umumnya, kami menggunakan objek Config untuk mendapatkan beberapa informasi konfigurasi inisialisasi. Metode yang umum digunakan adalah getInitParameter dan getInitParameterNames untuk mendapatkan parameter selama inisialisasi Servlet.
7.Halaman: objek halaman
Objek halaman mewakili objek kelas berjalan yang dihasilkan oleh file JSP dan tidak direkomendasikan untuk pembaca umum.
8.PageContext: objek konteks halaman
Kelas PageContext yang diperkenalkan oleh JSP memungkinkan Anda mengakses banyak properti halaman. Variabel pageContext menyimpan nilai objek PageContext yang terkait dengan halaman saat ini. Kelas PageContext memiliki metode seperti getRequest, getResponse, getOut, dan getSession.
9.Pengecualian: objek pengecualian
Objek pengecualian mewakili objek pengecualian yang dihasilkan saat file JSP sedang berjalan. Objek ini tidak dapat digunakan secara langsung di file JSP biasa, tetapi hanya dapat digunakan di
< %@page isErrorPage="true"%> digunakan dalam file JSP. Hal ini karena objek kesalahan yang dihasilkan saat file JSP sedang berjalan dibuang dan hanya dapat dicegat oleh JSP yang menggunakan tag < %@pageisErrorPage="true"% > untuk mencegat objek kesalahan. Metode yang paling umum digunakan adalah getMessage, digunakan untuk memperoleh informasi kesalahan.
4. Halaman login contoh: index.jsp
Kode HTML
<%@ halaman bahasa="java" pageEncoding="UTF-8" contentType="teks/html; charset=UTF-8" %>
<html>
<kepala>
<title>Login sistem</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
<gaya tipe="teks/css">
.btn {
font-family: "Tahoma", "宋体";
ukuran font: 9pt;
warna: #001E3C;
BORDER-BOTTOM: #6794BC 1 piksel padat;
BORDER-LEFT: #8BB8E0 1 piksel padat;
BORDER-KANAN: #6794BC 1 piksel padat;
BORDER-TOP: #8BB8E0 1 piksel padat;
gambar latar belakang: url(gambar/buttonbg.gif);
KURSOR: tangan;
gaya font: normal;
padding-kiri: 3px;
padding-kanan: 3px;
}
</gaya>
<skrip tipe="teks/javascript">
fungsi doLogin(){
var vform = dokumen.loginform;
if(!loginform.namapengguna.nilai){
alert("Silakan masukkan nama pengguna!")
kembali;
}
if(!loginform.password.value){
alert("Silakan masukkan kata sandi!")
kembali;
}
vform.kirim();
}
</skrip>
</kepala>
<tubuh topmargin="0" leftmargin="0" >
<form action="receive.jsp" name="longinForm" metode="post">
<lebar tabel="100%" tinggi="100%">
<tr>
<td align="center" valign="tengah">
<TABEL id="form1"
spasi sel = "0" cellpadding = "0" perbatasan = "0" style = "lebar: 500;">
<CAPTION style="tampilan: tidak ada">
</CAPTION>
<TR>
<TD>
<TABEL lebar = "100%" tinggi = "100%" spasi sel = "0"
cellpadding="0" border="0" style="tata letak tabel: diperbaiki">
<TR>
<TD valign="atas">
<FIELDSET id="form1_group0" style="lebar: 100%;">
<LEGEND>Login sistem</LEGEND>
<DIV>
<DIV style="lebar: 100%; tinggi: 100%">
<TABEL lebar="100%" spasi sel="0"
cellpadding="4" border="0" style="tata letak tabel: tetap;">
<KOLGROUP>
<COL lebar="100"></COL>
<COL lebar="50%"></COL>
<COL lebar="100"></COL>
<COL lebar="50%"></COL>
</KOLGROUP>
<TR>
<TD sejajar="kanan">
nama belakang
</TD>
<TD class="InnerTableContentCell">
<input type="text" nama="nama pengguna"
gaya="lebar: 100%;">
</TD>
<TD sejajar="kanan">
kata sandi
</TD>
<TD>
<input type=”kata sandi” nama=”kata sandi”
gaya = "lebar: 100%;" />
<input type="tersembunyi" nama="aksi2" nilai="0">
</TD>
</TR>
<TR>
<TD colSpan="4"
sejajarkan = "kanan">
<input type="button" name="login" value="Login" onclick="this.form.submit();" class="btn"/>
</TD>
</TR>
</TABEL>
</DIV>
</DIV>
</SETEL BIDANG>
</TD>
</TR>
</TABEL>
</TD>
</TR>
</TABEL>
</td>
</tr>
</tabel>
</bentuk>
</tubuh>
</html>
Terima halaman data: terima.jsp
Kode HTML
<%@ halaman bahasa="java" pageEncoding="UTF-8" contentType="teks/html; charset=UTF-8" info="tag tindakan"%>
<jsp:useBean id="userVo" class="exercise.vo.UserVo" scope="request">
<jsp:setProperty name="userVo" property="name" param="nama pengguna"/>
<jsp:setProperty name="userVo" property="kata sandi" param="kata sandi"/>
</jsp:useBean>
<html>
<kepala>
<meta http-equiv="Jenis Konten" content="text/html;charset=UTF-8" >
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
</kepala>
<tubuh>
Ini adalah halaman JSP saya
<hr>Gunakan <jsp:getProperty> untuk mendapatkan nilai yang dikirimkan dalam formulir<br>
nama:<jsp:getProperty property="name" name="userVo"/><br>
kata sandi:<jsp:getProperty property="password" name="userVo"/>
<br><br><jam>
<%
out.println("Dapatkan langsung dari objek vo:<br> nama:"+userVo.getName()+
"<br>kata sandi:"+userVo.getPassword()+"<br>");
String serviceName = request.getServerName();//objek permintaan di dalam 1.jsp
out.println("<br><hr>Nama Server: "+NamaLayanan);
out.println("<br>Jenis MIME: "+response.getContentType());//2.jsp objek respons internal
session.setAttribute("sessionName","objek sesi di dalam jsp");//3.jsp objek sesi internal
out.println("<br>objek sesi: "+session.getAttribute("sessionName"));//4.jsp objek internal out
pageContext.setAttribute("pageContext","Referensi lingkungan konteks");//objek pageContext di dalam 5.jsp
//6.aplikasi
//7.config contoh ServletConfig
//8. Contoh halaman java.lang.Object
//9.pengecualian harus menggunakan instance java.lang.Throwable pada halaman dengan isErrorPage=true di direktif halaman.
Info string = pageContext.getServletContext().getServerInfo();
out.println("Dapatkan atribut info pada perintah halaman: "+info);
%>
</tubuh>