@RequestParam, Anda harus melihatnya; @PathVariable, Anda pasti tahu itu; @QueryParam, kenapa kamu tidak mengetahuinya? Lai Dan dia akrab bagi Anda (@cookievalue)! Dia (@modelandview)! Itu (@modelattribute)! Itu benar, hanya anotasi ini, Spring MVC membuka dunia yang penuh warna untuk Anda. Ayo, jangan bersemangat (mi) dan (hu), duduk, mari kita mengobrol dengan baik tentang anotasi saudara -saudara ~~~ (tunggu, apakah kamu belum pernah mendengarnya? Oke, ayolah, kamu duduk di barisan depan, kamu akan ada di sana!)
1. Cara mencocokkan jalur permintaan di Spring MVC - "Jalur permintaan mana yang lebih baik, Requestmapping terkenal"
@RequestMapping digunakan untuk memetakan permintaan, seperti permintaan mendapatkan, permintaan posting, atau gaya istirahat dan gaya non-rest. Anotasi ini dapat digunakan pada kelas atau pada metode, jika digunakan pada kelas, mewakili jalur induk dari semua metode di kelas.
Misalnya (kelas tes yang digunakan di sini seperti springmvctest dan beberapa halaman telah diperkenalkan dalam artikel pertama "Learning SpringMVC - Mulai dari HelloWorld"):
Tambahkan metode pengujian ke springmvctest.java:
@RequestMapping ("/testRequestMapping") Public String testRequestMapping () {System.out.println ("TestRequestMapping"); mengembalikan kesuksesan;}Perhatikan bahwa anotasi @RequestMapping ("/testrequestmapping") ditambahkan ke tingkat metode, yang berarti bahwa metode ini dapat ditempatkan melalui jalur relatif "/testrequestmapping". Pada saat yang sama, kami juga menempatkan anotasi permintaan tingkat kelas pada kelas Springmvctest:
@RequestMapping ("/springmvc")@controllerpublic kelas springmvctest {Perhatikan bahwa ada juga anotasi @Controller. Anotasi ini bertanggung jawab untuk memproses permintaan yang didistribusikan oleh DispatcherServlet di SpringMVC. Ini merangkum data yang diminta oleh pengguna melalui lapisan pemrosesan layanan dan kemudian mengembalikan model ke tampilan yang sesuai untuk tampilan. Pada titik ini, kami memiliki jalur seperti "springmvc/testrequestmapping", dan kemudian kami dapat menemukan metode testrequestmapping dan kemudian menjalankan badan metode dalam metode ini.
Untuk menambahkan satu hal lagi, RequestMapping dapat menerapkan jalur pencocokan fuzzy, seperti:
? : Cocokkan karakter
*: Cocokkan karakter apa pun
**: Cocokkan jalur multi-lapisan
/springmvc/**/lasttest dapat mencocokkan jalur seperti/springmvc/firsttest/detik/lasttest
2. Cara mendapatkan parameter yang diminta dari Spring MVC - "Delapan Immortal melintasi laut, masing -masing menunjukkan kekuatan magis mereka"
1. @Pathvariable
Anotasi ini digunakan untuk memetakan placeholder yang terikat dalam URL permintaan. Melalui @PathVariable, Anda dapat mengikat parameter placeholder di URL ke parameter metode pemrosesan pengontrol. Apakah kamu tidak mengerti? Lihat contoh:
@RequestMapping ("/testPathVariable/{id}") Public String testPathVariable (@PathVariable (value = "id") Integer ID) {System.out.println ("TestPathVariable:" + ID); mengembalikan kesuksesan;}Di index.jsp kami menambahkan koneksi untuk memicu permintaan:
<a href = "springmvc/testpathvariable/1"> testpathvariable </a> <br/> <br/>
Kita dapat melihat bahwa ada hyperlink di sini. Setelah mengklik, kami akan memasukkan metode pemrosesan pengontrol yang sesuai dengan springmvc/testpathvariable/1. Kami sekarang ingin mendapatkan "1" dalam parameter permintaan ini, jadi tambahkan "/testpathvariable/id" ke metode testpathvariable, tentang id ", dan korespondensi spesifik {id}. Dalam parameter metode ini, @pathvariable (value =" id ") dinyatakan, dan mengikat dan menerimanya, @pathvariable.
2. @RequestParam
Anotasi ini juga digunakan untuk mendapatkan parameter permintaan. Jadi, bagaimana perbedaan anotasi ini dari @pathvariable? Mari kita lihat contohnya:
Menambahkan metode di springmvctest
@RequestMapping (value = "/testrequestparam") Public String testRequestParam (@RequestParam (value = "username") string nama pengguna, @RequestParam (value = "usia", wajib = false, defaultValue = "0") {System.out.println ("" "" "" ") {System.out.println (" "" "" "" "" "USENAME" + "USERNAME" + "USERNAME" + "USERNAME" + "USERNAME" + "USERNAME" + "USERNAME" + "USENOME (" USENOME " +" mengembalikan kesuksesan;}Tambahkan tag hyperlink di index.jsp
<a href = "springmvc/testrequestparam? nama pengguna = jackie & usia = 12"> testrequestparam </a> <br/> <br/>
Mengklik pada hyperlink pada halaman akan cocok dengan jalur permintaan permintaan pada metode testRequestParam di pengontrol. Perhatikan bahwa dalam metode ini, kami mendeklarasikan dua variabel melalui anotasi @RequestParam untuk mendapatkan nilai parameter yang dibawa oleh kueri dalam permintaan, satu adalah nilai setelah nama pengguna dan yang lainnya adalah nilai demi usia.
Setelah melihat ini, Anda mungkin memahami beberapa perbedaan antara @PathVariable dan @RequestParam. Untuk permintaan seperti "SpringMVC/TestPathVariable/1", kami menggunakan @PathVariable untuk mengikat parameter yang diminta; Sementara untuk parameter permintaan seperti "SpringMVC/TestRequestParam? Nama pengguna = Jackie & usia = 12" muncul sebagai pasangan nilai kunci. Kami menggunakan @RequestParam untuk mendapatkan nilai permintaan spesifik setelah nama pengguna atau usia.
QueryParam juga mirip dengan RequestParam, karena ini bukan anotasi dalam kerangka MVC Spring, sehingga tidak akan dijelaskan secara rinci di sini.
Untuk jenis permintaan yang berbeda dan metode permintaan, Spring MVC memiliki serangkaian solusi yang ditargetkan. Mari kita lihat seperti apa permintaan gaya istirahat populer sekarang - menggunakan gaya istirahat untuk mencapai penambahan, penghapusan, modifikasi, dan pencarian.
Implementasi bottom-up antarmuka untuk memeriksa (get), menambahkan (pos), menghapus (menghapus) dan memodifikasi (put) diimplementasikan di kelas springmvctest dari bawah ke atas
@RequestMapping (value = "/testrest/{id}", method = requestMethod.put) public string testRestPut (@PathVariable (value = "id") integer id) {System.out.println ("Test put:" + id); return Success;} @RequestMapping (value = "/testrest/{id}", Method = requestMethod.delete) Public String TestRestDelete (@PathVariable (value = "id") Integer ID) {System.out.println ("Test Delete:" + ID); Return Success;} @RequestMapping (value = "/testrest", Method = requestMethod.post) Public String TestRest () {System.out.println ("Test Post"); Return Success;} @RequestMapping (value = "/testrest/{id}", method = requestMethod.get) Public String TestRest (@PathVariable (value = "id") Integer ID) {System.out.println ("test get:" + id); mengembalikan kesuksesan;}Jadi bagaimana cara mengimplementasikan antarmuka meja depan? Urutan yang sesuai adalah
<Form Action = "SpringMvc/TestRest/1" Method = "Post"> <input type = "hidden" name = "_ Metode" value = "put"/> <input type = "kirim" value = "testrestput"/> <form> <br/> <bentuk action = "springmvc/testRest/1" Method = ""> <br/> <Form Action = "SpringMvc/TestRest/1" Method = "POST"> "> <br.put =" input = "input =" name = "name" _ "name ="> ">"> <bring "name =" @ "_" name "name =" name "name =" <input type = "kirim" value = "testrest delete"/> </form> <br> <br> <form action = "springmvc/testrest" method = "post"> <input type = "kirim" value = "TestRestPost"> </Form> <br/> <br/> <a href = "springmc/testr/ <brest/1"
Selain itu, kami juga perlu menambahkan pernyataan di file konfigurasi Web.xml yang mendukung Conversi Post untuk menghapus dan menempatkan permintaan.
<!-Mengkonfigurasi HiddenHttPMethodFilter: Anda dapat mengonversi permintaan posting ke Hapus atau Posting Permintaan-> <nilter> <nilter-name> HiddenHttpMethodFilter </filtfil-name> <filter-class> org.springframework. <filter-name> hiddenhttpmethodfilter </tiler-name> <ratl-pola>/*</url-pola> </filter-mapping>
Seperti yang Anda lihat, modifikasi dan penghapusan di sini dikirim melalui pos, karena put dan hapus tidak didukung di sini untuk secara langsung menerapkan penghapusan dan modifikasi. Sebaliknya, dengan menggunakan metode POST dan diam -diam membawa tag input tipe tersembunyi untuk memberi tahu latar belakang bahwa apa yang saya kirim di meja depan sebenarnya adalah permintaan untuk penghapusan dan modifikasi.
Jadi bagaimana proses ini diimplementasikan, mengapa menambahkan
<input type = "hidden" name = "_ Method" value = "delete"/>
Token ini akan dibeli oleh orang lain di latar belakang. Lalu mari kita lihat bagaimana kita membelinya nanti.
Dalam analisis akhir, ini disebabkan oleh penambahan kelas HiddenhttpMethodFilter di Web.xml. Ada metode dofilterinternal di kelas ini. Melalui debugging, kita dapat menemukan petunjuk, memulai tomcat (bukan tomcat8), klik tag input yang sesuai dari operasi hapus, dan masukkan antarmuka debugging. Kita bisa melihat:
Small Pit: Di sini, harap dicatat bahwa startup tidak dapat Tomcat8, tetapi hanya bisa menjadi versi yang lebih kecil dari 8, seperti 7 atau 6, dll. Gambar berikut menunjukkan pesan kesalahan menggunakan Tomcat dan respons yang berhasil menggunakan 7:
Untuk meringkas, cara mengirim permintaan untuk put dan menghapus:
1. Mengkonfigurasi HiddenHttpMethodFilter di Web.xml
2. Kirim permintaan pos
3. Ada domain tersembunyi dalam permintaan, nama adalah "_mothod", nilai diletakkan atau dihapus
Akhirnya, mari kita bicara tentang anotasi @cookievalue.
3. @Cookievalue
Anotasi ini juga merupakan rutinitas yang sama, dan juga merupakan pemetaan, yang memetakan nilai cookie.
Ketika kami mengirim permintaan, kami dapat melihat bahwa permintaan tersebut membawa beberapa nilai cookie.
Misalnya, JSessionID atau jalur di sini. Sekarang kita akan menulis metode untuk mendapatkan nilai cookie.
Tambahkan SpringMvctest
@RequestMapping (value = "/testCookievalue") Public String testCookievalue (@cookievalue ("jSessionId") string cookievalue) {System.out.println ("TestCookievalue:" + Cookievalue); mengembalikan kesuksesan;}Tambahkan tautan ke antarmuka index.jsp
<a href = "springmvc/testcookievalue"> testcookievalue </a> <br/> <br/>
Dengan cara ini, kita bisa mendapatkan hasil seperti "TestCookievalue: 1410F05C9ADD84E8659C2AC79E8CC666".
Sejauh ini, kami telah memperkenalkan
1. Penggunaan @Requestmapping
2. Dapatkan penggunaan @pathvariable dan @RequestParam dari parameter permintaan
3. Perkenalkan cara mengimplementasikan permintaan gaya istirahat, dan menganalisis bagaimana pos dikonversi menjadi delete dan memasukkan permintaan
4. Pengantar penggunaan @cookievalue
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.