Kontrol peralihan JSP aktual JBuilder2005 (3)
Penulis:Eve Cole
Waktu Pembaruan:2009-07-02 17:10:13
Karena switch.jsp ditentukan sebagai file JSP respons melalui atribut tindakan dalam formulir login.jsp, ketika pengguna memilih pengguna login di login.jsp dan memasukkan kata sandi untuk mengirimkan formulir, klien akan mengirimkan permintaan HTTP ke server, dan server Artinya, panggil switch.jsp untuk menanggapi permintaan ini.
Data komponen nama pengguna dan kata sandi dalam formulir akan diteruskan ke switch.jsp server melalui permintaan HTTP. Server akan merangkum informasi ini dalam objek permintaan dan meneruskannya ke switch.jsp, sehingga switch.jsp dapat diambil. melalui request.getParameter(String paraName) Dapatkan dua nilai ini.
String userId = permintaan.getParameter("userId"); String kata sandi = request.getParameter("kata sandi"); |
Bayangkan jika form login.jsp memiliki lebih dari 10 komponen data, nilainya harus diperoleh melalui sejumlah metode request.getParameter() yang sesuai di switch.jsp. Selain itu, jika datanya bukan tipe string bidang, tetapi bilangan bulat atau angka floating point, karena nilai yang dikembalikan oleh metode request.getParameter() semuanya adalah String, konversi tipe harus dilakukan membosankan, tetapi juga rawan kesalahan.
JSP memungkinkan Anda menerima data formulir web melalui Bean dengan cara pemetaan. Bean memetakan data formulir sesuai dengan aturan ini: Nama atribut Bean = nama komponen data formulir, yaitu, semua bidang data formulir dengan nama atribut Bean yang sama secara otomatis terisi di dalam Bean. , dan selesaikan konversi tipe data. Misalnya, ada dua komponen data dalam formulir login.jsp, yang satu bernama userId dan yang lainnya adalah kata sandi. Tentukan User.java Bean dengan nama atribut userId dan password yang sama dalam bentuk. Nilai komponen data.
Tulis Pengguna.java
Pertama mari kita tulis User.java Bean dan buat User.java di proyek. Kodenya adalah sebagai berikut:
Daftar Kode 7 Pengguna.java
1. toko buku paket; 2. 3. Pengguna kelas publik 4.{ 5. String pribadi userId;//userId 6. kata sandi String pribadi;//kata sandi 7. Nama pengguna String pribadi;//nama pengguna 8. String publik getPassword() { 9. mengembalikan kata sandi; 10. } 11. String publik getUserId() { 12. kembalikan ID pengguna; 13. } 14. String publik getUserName() { 15. mengembalikan nama pengguna; 16. } 17. public void setPassword(String kata sandi) { 18. ini.kata sandi = kata sandi; 19. } 20. public void setUserId(String userId) { 21. ini.userId = userId; dua puluh dua. } 23. public void setUserName(String nama pengguna) { 24. this.userName = nama pengguna; 25. } 26. } |
Selain dua nama atribut userId dan password, ada juga atribut username userName. Nilai atribut ini tidak diterima dari form login.jsp. Jika nama pengguna dan kata sandi diverifikasi dengan benar, nama pengguna diperoleh dari data tabel T_USER tabel dan disimpan dalam Properti ini sehingga dapat direferensikan di tempat lain, simpan dan kompilasi kelas ini.
petunjuk:
Anda dapat dengan cepat membuat kode User.java melalui alat Bean Express JBuilder. Dalam keadaan normal, Anda harus membuat properti Bean melalui Bean Express. Ini tidak hanya secara otomatis menghasilkan metode akses properti get/set, tetapi juga memastikan konvensi penamaan Bean. |
Tulis program halaman
Setelah membuat Bean dari User.java, kami melanjutkan untuk membuat switch.jsp dan mereferensikan Bean ini di switch.jsp.
Mulai wizard Buat JSP melalui File->Baru..->Web->klik dua kali ikon JSP.
1. Tentukan nama switch.jsp
Gambar 10 Tentukan nama switch.jsp |
Terus tekan Berikutnya untuk melanjutkan ke langkah 3 wizard.
2. Referensi Pengguna.java Bean
Gambar 11 Tentukan Bean yang direferensikan di JSP |
Klik tombol Add Bean... untuk memunculkan kotak dialog Select a Class. Pilih kelas toko buku.User di kotak dialog, seperti yang ditunjukkan pada gambar berikut:
Gambar 12 Pilih kelas sebagai Bean |
Setelah menekan OK, kembali ke kotak dialog di langkah 3 wizard. Saat ini, ada baris catatan tambahan di daftar Bean di kotak dialog. Anda dapat menentukan nama untuk Bean di kolom ID dan menentukan ruang lingkup Bean dalam Ruang Lingkup, seperti yang ditunjukkan pada gambar di bawah ini.
Gambar 13 Referensi ke Bean |
Kami menamai User's Bean userBean dan menetapkan cakupannya ke domain halaman. Domain halaman adalah cakupan halaman dan tersedia dalam cakupan halaman saat ini. Ketika JSP mengembalikan respons atau permintaan ditransfer ke halaman JSP lain, tiga cakupan lainnya dijelaskan sebagai berikut:
·Cakupan permintaan: Saat permintaan dibuat, permintaan tersebut valid dalam cakupan hingga respons dikembalikan. Misalnya, Bean dinyatakan sebagai cakupan permintaan di a.jsp, saat a.jsp mentransfer permintaan ke halaman b.jsp melalui Masih tersedia di pertengahan tahun.
·Ruang lingkup sesi: Tersedia dalam siklus sesi pengguna. Siklus sesi adalah dari saat pengguna masuk ke sistem hingga dia keluar dari sistem.
·Cakupan aplikasi: Cakupan ini adalah yang terpanjang, menunjukkan bahwa penampung web valid hingga dimulai hingga ditutup.
Tekan Berikutnya untuk melanjutkan ke langkah berikutnya.
3. Atur item konfigurasi yang sedang berjalan
Pada langkah terakhir wizard, Anda dapat membuat item konfigurasi runtime untuk JSP yang dibuat. Meskipun set wizard membuat item konfigurasi runtime sebagai opsi default, menurut saya ini bukan nilai default yang masuk akal buat pengaturan konfigurasi runtime, jangan buat item konfigurasi jalankan JSP, seperti yang ditunjukkan pada gambar berikut:
Tekan tombol Finish untuk membuat file switch.jsp dengan kode berikut:
Daftar Kode 8 switch.jsp dibuat oleh wizard
1. <%@ halaman contentType="text/html; charset=GBK" %> 2. <html> 3. <kepala> 4. <judul> 5.beralih 6. </judul> 7. </kepala> 8. <jsp:useBean id="userBean" scope="page" class="toko buku.User" /> 9. <jsp:setProperty name="userBean" property="*" /> 10. <tubuh bgcolor="#ffffff"> 11. <h1> 12. JSP yang dihasilkan JBuilder 13. </jam1> 14. </badan> 15.</html> |
Baris 8 adalah tag JSP yang mereferensikan Bean. Baris 9 mengisi nilai atribut Bean dengan data formulir, yaitu mengisi parameter permintaan ke dalam atribut Bean dengan pencocokan nama, dan menyelesaikan konversi tipe pada saat yang sama (hanya). tipe data dasar atau Konversi hanya dapat diselesaikan jika konstruktor mendukungnya). Setelah mengeksekusi baris 9, atribut userId dan password di userBean akan diatur ke nilai username dan password yang dikirim di halaman login.jsp.
Karena switch.jsp hanya digunakan untuk kontrol dan tidak perlu menampilkan konten ke klien, kami menghapus kode HTML di switch.jsp dan menyesuaikan switch.jsp menjadi:
Daftar Kode 9 switch.jsp setelah menghapus kode HTML statis
1. <%@ halaman contentType="text/html; charset=GBK" %> 2. <jsp:useBean id="userBean" scope="page" class="toko buku.User" /> 3. <jsp:setProperty name="userBean" property="*" /> |
Berikan Scriptlet di switch.jsp untuk mengirimkan userId dan kata sandi ke database dan membandingkannya dengan pengguna di tabel T_USER untuk melihat apakah mereka adalah pengguna yang sah, dan mengarahkan ke halaman berbeda berdasarkan hasil verifikasi. Kode akhir switch.jsp terlihat seperti ini:
Daftar Kode 10 Switch.jsp terakhir
1. <%@page contentType="text/html; charset=GBK"%> 2. <%@page import="toko buku.*"%> 3. <%@halaman import="java.sql.*"%> 4. <jsp:useBean id="userBean" scope="session" class="toko buku.User"/> 5. <jsp:setProperty name="userBean" property="*"/> 6.<% 7. Sambungan koneksi = null; 8. coba { 9. samb = DBConnection.getConnection(); 10. PreparedStatement pStat = samb.prepareStatement( 11. "pilih USER_NAME dari T_USER di mana USER_ID=? dan kata sandi = ?"); 12. pStat.setString(1, userBean.getUserId()); 13. pStat.setString(2, penggunaBean.getPassword()); 14. ResultSet rs = pStat.executeQuery(); 15. if (rs.next()) {//Kata sandi benar 16. userBean.setUserName(rs.getString(1));//Tetapkan nama pengguna 17. session.setAttribute("ses_userBean", userBean);//Masukkan userBean ke objek Session 18. %><jsp:forward page=" selamat datang.jsp "></jsp:forward> 19. <%} else {//Sandi salah%> 20. <jsp:forward page="fail.jsp"></jsp:forward> 21.<% 22. }} akhirnya { 23. if(sambungan != null) sambungan.close(); dua puluh empat. } 25.%> |
·Memperkenalkan kelas-kelas yang diperlukan dalam kode Scriptlet pada baris 2 hingga 3.
·Baris 7 sampai 14 kode mengirimkan pernyataan SQL query ke database dan mengembalikan hasilnya.
·Baris 15 secara tidak langsung menentukan apakah kata sandi pengguna benar dengan memeriksa jumlah catatan dalam kumpulan hasil.
· Baris 16 hingga 18 adalah kode respons untuk kata sandi pengguna yang benar. Pertama, isi nilai atribut userName userBean dengan atribut USER_NAME dari kumpulan hasil, lalu masukkan objek userBean ke dalam Sesi, dan terakhir buka halaman selamat datang.jsp.
·Ketika pengguna memasukkan kata sandi yang salah, tidak akan ada catatan dalam kumpulan hasil. Saat ini, rs.next() mengembalikan false, dan program berpindah ke baris 20. Kode pada baris 20 mengalihkan halaman ke halaman yang salah. halaman pemrosesan input kata sandi fail.jsp.
·Kode pada baris 22 sampai 24 digunakan untuk menutup koneksi database.
Mungkin Anda telah menemukan bahwa meskipun baris 9~21 akan menampilkan SQLException, kami tidak memiliki blok penangkap pengecualian yang sesuai. Dalam program Java standar, ini akan menyebabkan kesalahan waktu kompilasi, tetapi di JSP, ini dapat dikompilasi secara berurutan karena halaman JSP itu sendiri menangkap semua pengecualian yang diberikan pada halaman tersebut.
Asumsikan ada kesalahan dalam pernyataan kueri SQL pada baris 11, seperti nama tabel pengguna salah ditulis sebagai Pengguna (benar T_USER). Ketika switch.jsp dipanggil, SQLException akan dilemparkan pada baris 14, dan beralih. jsp akan menampilkan halaman informasi pelacakan jejak tumpukan pengecualian seperti yang ditunjukkan di bawah ini:
Gambar 14 Halaman penanganan error yang parah |
Halaman penanganan kesalahan yang ditunjukkan pada gambar di atas dapat digambarkan berwajah hijau, ganas, dan sangat tidak ramah. Halaman pelaporan kesalahan semacam ini mungkin cocok untuk pengembang karena menyediakan banyak informasi pelacakan kesalahan, tetapi tidak mungkin berakhir pengguna untuk menerima halaman kesalahan semacam ini. JSP memungkinkan Anda menentukan halaman JSP khusus untuk menangani kesalahan melalui <%@ halaman errorPage%>, sehingga kesalahan dapat ditampilkan dalam bentuk yang ramah dan intuitif. Di bagian selanjutnya, kita akan membuat halaman JSP untuk penanganan kesalahan. Setelah pembuatan, kita akan menentukan halaman JSP penanganan kesalahan untuk switch.jsp.