SpringMVC mendukung verifikasi data adalah standar JSR303, dan diverifikasi dengan mengetik @notnull, @max, dll. Pada properti bean. JSR303 menyediakan banyak antarmuka anotasi, dan SpringMVC menggunakan hibernate untuk verifikasi ini, jadi kita perlu menambahkan paket validator untuk hibernate:
Mengandalkan kutipan
kompilasi 'javax.validation: validasi-API: 2.0.0. final' compile 'org.hibernate: hibernate-validator: 6.0.0.final'
Kerangka kerja telah memberikan verifikasi sebagai berikut:
Periksa anotasi yang disediakan oleh JSR:
@Null elemen beranotasi harus nol
@Notnull elemen beranotasi tidak boleh nol, tidak bisa nol, bisa ""
@Asserttrue elemen beranotasi pasti benar
@Assertfalse elemen beranotasi harus salah
@Min (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus lebih besar dari atau sama dengan nilai minimum yang ditentukan.
@Max (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus kurang dari atau sama dengan nilai maksimum yang ditentukan.
@Decimalmin (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus lebih besar dari atau sama dengan nilai minimum yang ditentukan
@Decimalmax (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus kurang dari atau sama dengan nilai maksimum yang ditentukan
@Size (maks =, min =) Verifikasi apakah panjang objek (array, koleksi, peta, string) berada dalam kisaran yang diberikan
@Digits (integer, fraksi) Elemen beranotasi harus nomor dan nilainya harus dalam kisaran yang dapat diterima.
@Past elemen beranotasi haruslah tanggal masa lalu
@Future elemen beranotasi harus menjadi tanggal mendatang
@Pattern (regex =, flag =) Elemen beranotasi harus memenuhi ekspresi reguler yang ditentukan
Periksa anotasi yang disediakan oleh Hibernate Validator:
@Notblank (pesan =) hanya dapat digunakan pada string, bukan nol, dan setelah memanggil trim (), panjangnya harus lebih besar dari 0
@Email Elemen beranotasi harus berupa alamat email
@Length (min =, max =) Ukuran string yang dijelaskan harus berada dalam kisaran yang ditentukan.
@NotEempty string yang dikomentari harus tidak kosong, tidak bisa nol, "", bisa ""
@Range (min =, max =, pesan =) elemen beranotasi harus berada dalam kisaran yang sesuai
Contoh demonstrasi
Buat kelas entitas yang perlu diverifikasi:
Paket com.yiba.wifi.news.bean.model; impor org.hibernate.validator.constraints.length; import javax.validation.constraints.*; pengguna kelas publik {@notblank (pesan = "Nama pengguna tidak bisa nol, panjangnya harus lebih besar dari 0") nama string; // Nama pengguna @min (nilai = 1, pesan = "Usia minimum adalah 1 tahun") @max (nilai = 120, pesan = "Usia maksimum adalah 120") usia integer; // usia @email (pesan = "Kesalahan format email") @notblank (pesan = "Kesalahan format eMailbox") String Email; // Email @length (min = 6, maks = 12, pesan = "Panjang kata sandi harus antara 6 dan 12 digit") String pwd; // kata sandi // dapatkan, setel .........}Perhatikan bahwa ketika memverifikasi email, ketika email adalah "", atau nol, itu akan melewati verifikasi @email, jadi verifikasi email memerlukan @email dan @notblank untuk bekerja sama.
Desain Antarmuka Pengontrol, tambahkan kata kunci @validasi di mana parameter diterima
/ *** Antarmuka login* @return*/ @postmapping ("Login") Public String Login (@validated @RequestBody pengguna pengguna) {return "ok"; }Tes akses:
Saat mengakses data dalam format berikut
{"Name": "", "Age": 0, "Email": "", "pwd": ""}Tanggapannya adalah:
{"timestamp": 1524640724522, "status": 400, "error": "permintaan buruk", "pengecualian": "org.springframework.web.bind.methodargumentnotvalidexception", "kesalahan": [{"notblank. "Notblank.java.lang.string", "notblank"], "argumen": [{"kode": ["user.email", "email"], "argumen": null, "defaultmessage": "email", "email" "}}," DefaultMessage ":" email "," "," email "," "email", "", "" email "," "," "email", "", "" email ":" "", "" "," "" "", "" EMAIL "," "EMAIL", "" OPPERNEK "" "" "," EMAIL, "EMAIL", "EMAIL," "EMAIL", "EMAIL," "EMAIL," "EMAIL", "EMAIL," "EMAIL", "EMAIL," "EMAIL," "EMAIL", "" "Tolak Value": "", "BindingFailure": False, "Code": "notblank"}, {"kode": ["notblank.user.name", "notblank.name", "notblank.java.lang.string", "notblank"], "{" {"{" "," {"" "," {"", "" "", "{" {"" "," {"" "," {"" "," {"" "," {"" "," {"{" {"{" {"{" {"{" {"{" notblank "" null, "defaultMessage": "name", "code": "name"}], "defaultMessage": "nama pengguna tidak bisa nol, panjangnya harus lebih besar dari 0", "objectName": "user", "field": "name", "RejectedValue": "", "bindingfailure": "false," false, "false," false, "false," false, "FALSE," FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE ":" FALSE, " "Length.user.pwd", "length.pwd", "length.java.lang.string", "length"], "argumen": [{"kode": ["user.pwd", "pwd"], "argumen": null, "DefaultMessage": "pwd", "code": "PWWUMENT" PW, 12, "PWD," PWD "," PWD "," PWD ":" PWD ":" PWD ":" Jadilah antara 6 dan 12 bit "," ObjectName ":" pengguna "," bidang ":" pwd "," ditolak value ":" "," pengikatfailure ": false," kode ":" panjang "}, {" kode ": [" min.user. "user.age", "usia"], "argumen": null, "defaultmessage": "usia", "kode": "usia"}, 1], "DefaultMessage": "Usia minimum berusia 1 tahun", "ObjectName": "User", "Field": "Age", "RejectEdValue": "Binding": "Field": "Age", "RejectEdValue": "Binding": "Field": "Age", "REDERVALUE": "BINDING": "FIRE": "AGE", "REDERVALUE": "BINDING": "Binding": "Validasi Gagal untuk Object = 'User'. Hitung Kesalahan: 4", "Path": "/Yiba/SMS/Login"}Anda dapat melihat bahwa permintaan lokal telah gagal memeriksa 4 bidang. Jadi apakah ada cara bagi saya untuk mendapatkan informasi pengecualian? Jawabannya adalah ya, dan kita perlu memodifikasi antarmuka pengontrol.
/** * Antarmuka login * * @return */@postmapping ("login") Public String Login (@validated @RequestBody User pengguna, BINDINGRESULT BINDINGRESULT) {if (BINDINGRESULT.HASERRORS ()) {// Ada daftar yang gagal. untuk (Objecterror error: errorList) {System.out.println (error.getDefaultMessage ()); // output pesan kesalahan spesifik} return "Parameter Exception"; } return "ok"; }Permintaan lagi, format permintaan adalah sebagai berikut
{"Name": "", "Age": 0, "Email": "", "pwd": ""}Responsnya adalah sebagai berikut
Pengecualian parameter
Informasi yang dicetak pada konsol adalah sebagai berikut:
Nama pengguna tidak bisa nol, panjangnya harus lebih besar dari 0
Panjang kata sandi harus antara 6 dan 12 digit usia minimum adalah kesalahan format email berusia 1 tahun
Anda dapat melihat bahwa kami telah memperoleh informasi verifikasi secara normal.
Mari kita lakukan referensi akses yang benar:
Parameter permintaan adalah sebagai berikut:
{"name": "zhaoyanjun", "usia": 1, "email": "[email protected]", "pwd": "123456"}Responsnya adalah sebagai berikut:
OKE
Konsol tidak menghasilkan apa -apa.
Meringkaskan
Di atas adalah contoh demonstrasi fungsi verifikasi parameter permintaan pegas yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!