1. Pendahuluan
1.1. Apa itu verifikasi input? Mengapa Saya Perlu Masuk Verifikasi?
Dalam artikel sebelumnya, kami belajar tentang konversi tipe data. Kami menyebutkan dua metode pemrosesan data lapisan presentasi. Kami juga menyebutkan bahwa data input pengguna harus tipe konversi untuk mendapatkan data yang kami inginkan. Jadi, bagaimana kita menentukan bahwa data setelah konversi tipe adalah data yang kita inginkan? Ini sedikit melintasi di sini. Anda dapat memikirkannya seperti ini: Seorang pria dewasa berusia 18 tahun, dan Anda ingin mendapatkan data 18 sekarang, tetapi pengguna input 32 dan juga benar untuk mengonversinya melalui jenis, tetapi data tidak seperti yang Anda inginkan. Apa yang harus kita lakukan saat ini? Jadi verifikasi input berguna di sini.
Hubungan antara konversi tipe dan verifikasi input adalah: Konversi jenis adalah prasyarat untuk verifikasi input. Jika kedua konversi tipe salah, maka tidak perlu melakukan verifikasi input. Tetapi sering mengetik konversi dan verifikasi input dilakukan pada saat yang sama.
Ada dua jenis verifikasi input:
1. Verifikasi klien;
2. Verifikasi sisi server. Yang kami jelaskan di sini adalah verifikasi sisi server (penulisan ulang metode Validatexxx dan verifikasi file konfigurasi XML)
1.2. Proses Verifikasi Metode Validatexxx Writing
1. Konverter Jenis bertanggung jawab untuk konversi jenis parameter permintaan dari string dan mengatur nilai -nilai ini ke nilai properti dari tindakan.
2. Pengecualian dapat terjadi selama pelaksanaan konversi jenis. Jika pengecualian terjadi, informasi pengecualian akan secara otomatis disimpan ke ActionContext. Interceptor ConversionError bertanggung jawab untuk merangkumnya menjadi fielderror.
3. Call Validatexxx () Metode melalui refleksi, di mana xxx adalah nama metode yang sesuai dengan logika pemrosesan yang akan memproses permintaan pengguna.
4. Hubungi Metode Validasi Kelas Tindakan
5. Jika langkah -langkah di atas tidak menunjukkan fielderror, metode pemrosesan untuk memproses permintaan pengguna dalam tindakan akan dipanggil. Jika fielderror muncul, sistem akan ditransfer ke tampilan yang ditentukan dalam tampilan logis input.
2. Verifikasi input
2.1. Ada dua cara untuk masuk verifikasi di sini:
1.
2. Buat XML baru untuk verifikasi
2.2. Tulis ulang metode validasi
Dalam kerangka kerja MVC, bagian verifikasi data standar disediakan. Struts2 menyediakan metode validasi di sini. Kami dapat menulis ulang metode validasi untuk melakukan verifikasi input. Namun, ada dua poin yang perlu diketahui tentang menulis ulang metode validasi: 1. Metode validasi akan dieksekusi sebelum metode eksekusi; 2. Metode validasi akan menjalankan aturan verifikasi untuk semua tindakan. Untuk membedakan tindakan tertentu, kita dapat menggunakan metode Validatexxx.
Catatan: Contoh -contoh berikut adalah contoh konversi jenis lokal dan validasi input.
Contoh Verifikasi Pendaftaran Sederhana:
Buat pengguna kelas entitas baru:
Pengguna
Buat tampilan baru: register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Registered user</title></head><body> <h2>Verify using validateXXX() method</h2> <form action="register_test"> User: <input type="text" name="user"><br/> Password: <input type="password" name="user"><br/> Password: <input type="password" name="user"><br/> <input type="submit" value="submit"> </form> </body></html>
Buat kelas registeraction baru untuk mewarisi dukungan tindakan
Paket com.validatexxx; impor com.opensymphony.xwork2.actionsupport; // penulisan ulang validasi () dan validatexxx metode yang ditentukan untuk verifikasi/ * di struts.xml, metode validateTest () metode yang akan dipanggil pertama, dan kemudian metode pengujian dipanggil setelah panggilan metode validasi * */Register Kelas Publik Perluasan Tindakan Public Class Extends First, dan kemudian Metode Pengujian Dipanggil Setelah Memanggil Metode Validasi * */Register Kelas Publik Perluasan Tindakan Public Class. pengguna publik getUser () {return user; } public void setUser (pengguna pengguna) {this.user = user; } // 2 @Override public void validate () {System.out.println ("Metode validasi ulang ulang"); if (null == user.getPassword () || "" .Equals (user.getPassword ()) || null == user.getRepassword () || ". kembali; } if (! User.getPassword (). Equals (user.getRepassword ())) {// Ketika data ada di fielderror, server akan secara otomatis melompat ke tampilan logis dari input ini. }} // 1 public void validAteTest () {System.out.println ("Metode Verifikasi Kustom: ValidAteTest"); } // 3 public string test () {System.out.println ("test: method"); Sukses kembali; }}Catatan: Properti di sini adalah pengguna, jadi nama parameter halaman JSP Anda harus ditulis sebagai nama pengguna instan, dan kemudian Anda juga perlu membuat konverter tipe untuk mengembalikan kelas yang diisi dengan data
Buat struts.xml baru dan simpan di web-inf/class/struts.xml
Catatan: Metode di sini harus ditentukan oleh Anda setelah metode Valudatexxx () Anda. Ini tesnya. Jika Anda menggunakan *, structs2 juga harus mengkonfigurasi ketat-metode-invokasi = "false". Dikatakan bahwa karena versinya terlalu tinggi, keamanannya telah meningkat, dan semua harus ditambahkan untuk digunakan *
Buat kelas UserTyPeconverter baru untuk mewarisi StrutstypeConverter (Buat Konverter Jenis)
Paket com.validatexxx; import java.util.map; impor org.apache.struts2.util.strutstypeConverter; // kelas tipe konversi kelas publik UserTypeconverter memperluas strutstypeConverter {@override objek publik ConvertFromString (peta arg0, strutsTypeConverter {@Override Objek publik ConvertFrom (MAPR0, STRING [] ARGR1) System.out.println ("UsertypeConverter: Ketik konversi!"); Pengguna pengguna = pengguna baru (); user.setusername (arg1 [0]); user.setPassword (arg1 [1]); user.setrepassword (arg1 [2]); Pengguna Kembali; } @Override Public String ConvertToString (peta arg0, objek arg1) {user u = (user) arg1; kembalikan u.getusername ()+"!"; }}CATATAN: Setelah konverter jenis ini dibuat, Anda perlu membuat registeraction-conversion.properties baru dan menempatkannya di direktori yang sama.
Isi file ini adalah:
Yang pertama adalah nama properti yang Anda risteraction, diikuti oleh jalur spesifik ke konverter Type.
Buat Tampilan Sukses Baru: Success.jsp
Success.jsp
Buat Tampilan Kesalahan Baru: Input.jsp
input.jsp
Efek dari eksekusi kode yang berhasil adalah sebagai berikut:
Register.jsp halaman
Halaman yang berhasil melompat adalah: Success.jsp
Hasil tes konsol adalah:
Data melompat ke UsertypeConverter untuk konversi tipe, kemudian melompat untuk mendaftar, menjalankan metode validatetest (), memvalidasi, dan kemudian mengembalikan keberhasilan, dan kemudian menjalankan tampilan hasil.
Mari kita lihat urutan di mana kode gagal:
Register.jsp halaman
halaman input.jsp
Efek uji konsol:
Dalam metode validasi, kode penulis adalah: this.addfielderror (). Seperti yang disebutkan sebelumnya, jika kesalahan ditambahkan, server akan secara otomatis membantu kami melompat ke antarmuka yang salah. Ini akan mengembalikan input, dan input dikonfigurasi di struts.xml dan akan kembali ke antarmuka input.jsp.
2.3. Buat XML baru untuk verifikasi input
Buat antarmuka tampilan baru: test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Use XML verification</title></head><body> <s:form action="empinfo" method="post"> <S: TextField name = "name" label = "name" size = "20" /> <s: namefield nama = "usia" label = "usia" size = "20" /> <s: kirim nama = "kirim" label = "kirim" align = "center" /> < /s: form> < /body> < /html>
Buat kelas karyawan baru untuk mewarisi dukungan tindakan
Kelas ini menggunakan metode validasi override dan konfigurasi XML, kami dapat memilih salah satunya untuk verifikasi
Paket com.validatexxx; import com.opensymphony.xwork2.actionsupport; // Gunakan metode validate () untuk memverifikasi, ini adalah verifikasi sisi server! Karyawan kelas publik memperluas ActionSupport {private string name; usia int pribadi; public string getName () {return name; } public void setName (name string) {this.name = name; } public int getage () {usia kembali; } public void setage (int usia) {this.age = usia; } // Langkah kedua menjalankan metode ini string public string execute () {System.out.println ("Execute:"+this.age); Sukses kembali; }/* Verifikasi menggunakan sisi server: Tulis ulang metode validasi (); // Langkah pertama adalah menjalankan metode // menulis ulang metode validasi memiliki cacat: setiap kali Anda menggunakan metode validasi untuk memverifikasi, menyebabkan pemborosan sumber daya yang besar. public void validate () {System.out.println ("Validate"); if (name == null || name.trim (). Equals ("")) {// Saat menambahkan data ke metode ini, server akan mengembalikan input dan kemudian melompat ke halaman input.jsp. addFielderRor ("name", "nama itu diperlukan"); } if (usia <28 || usia> 65) {addFielderRor ("usia", "usia harus di antara 28 dan 65"); }}*/}Konfigurasikan di struts.xml:
Success.jsp dan input.jsp di sini masih menggunakan hal di atas.
Setelah itu, kita perlu membuat karyawan-validasi.xml baru dan menempatkan jalan di direktori yang sama dengan karyawan. Catatan: -Validation.xml diperbaiki dan tidak berubah.
Isi adalah:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Validator Doctype Publik "-// Apache Struts // Xwork Validator 1.0.3 // en" "http://struts.apache.org/dtds/xwork-validator-name-validator-validator -.3 <pesage> Namanya diperlukan. </pesage> </field-validator> </field> <field name = "use"> <field-validator type = "int"> <param name = "min"> 29 </param> <param name = "max"> 64 </param> <pesage> Usia harus di antara 28 dan 65 </pesan> </field-validator> </padang
Poin Kunci: Batas DTD dari file ini harus, jika tidak, kesalahan pengembalian:
ERROR DefaultDispatchererrorHandler terjadi terjadi selama permintaan pemrosesan: [Koneksi Timeed Out: Connect - [Lokasi Tidak Diketahui], NULL]
Selanjutnya kami menggunakan http: // localhost: 8080/learstruts2/validatejsp/test.jsp untuk akses.
Diuji dengan sukses:
Antarmuka test.jsp:
Success.jsp
Contoh Kegagalan Tes:
Input.jsp Interface:
Contoh ilustrasinya benar.
Bahkan, ada beberapa validator bawaan di Struts2: validator yang diperlukan, validator string yang diperlukan, validator integer, validator tanggal, validator ekspresi, validator panjang karakter, validator ekspresi reguler, dll. Jika perlu, penulis akan menjelaskan yang satu ini.
Di atas adalah penjelasan terperinci dari tutorial verifikasi input data Struts2 yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!