Rumah >Java >javaTutorial >Bagaimanakah `@RequestParam` dan `@PathVariable` Berbeza dalam Mengendalikan Watak Khas dalam Spring MVC?

Bagaimanakah `@RequestParam` dan `@PathVariable` Berbeza dalam Mengendalikan Watak Khas dalam Spring MVC?

DDD
DDDasal
2024-12-10 05:31:15582semak imbas

How Do `@RequestParam` and `@PathVariable` Differ in Handling Special Characters in Spring MVC?

Memahami Nuansa @RequestParam dan @PathVariable dalam Mengendalikan Watak Khas

@RequestParam dan @PathVariable ialah dua anotasi yang biasa digunakan dalam Spring Web MVC untuk mengendalikan parameter permintaan dan pembolehubah laluan URI, masing-masing. Walaupun mereka berkongsi persamaan dalam tujuan mereka, mereka mempamerkan gelagat yang berbeza apabila berurusan dengan watak istimewa.

Dalam @RequestParam, aksara khas seperti tanda tambah " " ditafsirkan sebagai ruang. Ini bermakna bahawa parameter permintaan dengan " " akan dianggap sebagai parameter tunggal dengan ruang dan bukannya literal " ". @RequestParam terutamanya bertujuan untuk mengekstrak parameter daripada rentetan pertanyaan.

Sebaliknya, @PathVariable mengendalikan aksara khas secara berbeza. Aksara " " ditafsirkan sebagai tanda tambah literal dalam pembolehubah laluan URI. Ini kerana @PathVariable direka bentuk untuk mengikat ruang letak daripada templat URI ke dalam parameter kaedah pengawal.

Contoh Penggunaan:

Pertimbangkan URI berikut:

http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013

Jika kami memetakan URI ini kepada kaedah pengawal menggunakan anotasi @RequestParam dan @PathVariable, kaedahnya akan kelihatan seperti:

@RequestMapping(value = "/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
    @PathVariable("userId") int user,
    @RequestParam(value = "date", required = false) Date dateOrNull) {
  ...
}

Dalam kes ini, @RequestParam("date") akan mengikat nilai "12-05-2013" sebagai objek Tarikh, menganggap aksara "-" sebagai sebahagian daripada rentetan tarikh. Sebaliknya, @PathVariable("userId") akan mengikat "1234" sebagai int, mengekalkan nilai berangka.

Adalah penting untuk ambil perhatian bahawa parameter pilihan kini disokong untuk kedua-dua @RequestParam dan @PathVariable. Walau bagaimanapun, adalah penting untuk mempertimbangkan potensi kesan pada hierarki laluan URL dan konflik pemetaan permintaan apabila menggunakan pembolehubah laluan pilihan.

Atas ialah kandungan terperinci Bagaimanakah `@RequestParam` dan `@PathVariable` Berbeza dalam Mengendalikan Watak Khas dalam Spring MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn