Salam untuk semuanya.
Ini adalah artikel ke-5 dalam serangkaian artikel pelatihan dengan Sertifikasi Profesional Spring.
Biarkan saya mengingatkan Anda bahwa artikel ini adalah jawaban atas pertanyaan dari panduan resmi dari Pivotal dalam persiapan untuk sertifikasi.

MVC adalah singkatan dari pola khusus. Untuk apa pola ini dan untuk apa?MVC adalah template khusus. Ia membagi program menjadi 3 jenis komponen:
- Model - model ini bertanggung jawab untuk penyimpanan data.
- Lihat - bertanggung jawab untuk output data di frontend.
- Controller - bertanggung jawab untuk bertukar data dengan tampilan. Dia beroperasi dengan model.

Apa itu DispatcherServlet dan di mana itu digunakan?Ini adalah salah satu bagian utama MVC untuk pertukaran data. Ini adalah servlet utama yang mendistribusikan permintaan antara servlet biasa.
- Ia menerima permintaan dan mengirimkannya ke penangan terdaftar.
- Menangani tampilan dengan mencocokkan nama mereka dengan objek ViewResolver
- Menangani pengecualian yang dilemparkan

Apa siklus hidup permintaan?- Permintaan datang di DispatcherServlet
- DispatcherServlet mengirimkan permintaan ke salah satu pengontrol berdasarkan URL dari permintaan
- Kontroler memproses permintaan, mendelegasikan eksekusi logika bisnis ke lapisan bisnis (biasanya ini adalah kelas dengan penjelasan Layanan
@Service
), dan membuat model dengan data, yang dikirim kembali ke DispatcherServlet - DispatcherServlet mengirimkan model ke depan untuk tampilan, berdasarkan antarmuka ViewResolver (lebih lanjut tentang ini di bawah ini)
Bagaimana pembuatan DispatcherServlet dilakukan?DS dibuat sebelum membuat ApplicationContext.
Dimulai dengan Spring 3.2, implementasi antarmuka WebApplicationInitializer yang disebut AbstractAnnotationConfigDispatcherServletInitialize digunakan.
AbstractAnnotationConfigDispatcherServletInitializer membuat DispatcherServlet dan ContextLoaderListener.
Ada dua cara untuk mengkonfigurasi DS:
- Dengan mendefinisikan properti khusus di web.xml
- Mengganti AbstractAnnotationConfigDispatcherServletInitializer
Apa itu Konteks WebApplication? Apa cakupan tambahan yang dia bawa?Ini adalah konteks khusus untuk aplikasi web.
Ia memiliki semua fitur ApplicationConext biasa (karena mewarisi dari itu), tetapi juga memiliki metode untuk API Servlet standar.
Catatan: Lingkup adalah cakupannya.
Mengapa menggunakan lingkup sesi?Kacang scoped sesi adalah kacang yang ada saat sesi berlangsung. Ini dapat digunakan saat membuat keranjang di toko online, dll.
Apa ruang lingkup default di MVC?Sama seperti di Spring tanpa MVC - singleton.
Mengapa menggunakan anotasi @Controller?Anotasi Pengontrol digunakan untuk mendaftarkan penangan permintaan http. Ini adalah anotasi tingkat kelas yang berisi anotasi Komponen . Kelas controller terlihat seperti POJO biasa, dengan metode handler dan anotasi.
Bagaimana permintaan yang masuk memetakan metode handler?- DispatcherServlet menerima permintaan
- DS berisi daftar kelas yang mengimplementasikan antarmuka
HandlerMapping
- Pawang menemukan metode di sana dan mengirimkan permintaan ke kelas pengontrol
- Metode Handler mengeksekusi permintaan
Beritahu kami tentang anotasi @RequestMappingAnotasi ini terutama digunakan untuk menentukan URI untuk kelas kontroler. Sebelumnya, ini digunakan oleh metode kelas untuk menunjukkan URI, metode http, jenis data yang dikirim, dll. Di versi Spring yang lebih baru, itu diganti dengan anotasi @GetMapping, @PostMapping, dll. Sekarang hanya digunakan untuk menunjukkan URI ke kelas controller.
Apa itu anotasi @GetMapping, @PostMapping, @DeleteMapping, dan lainnya?Ini adalah penjelasan yang lebih sempit untuk memetakan metode http.
@GetMapping
- Menangani mendapat permintaan@PostMapping
- Menangani permintaan posting@DeleteMapping
- Menangani permintaan penghapusan@PutMapping
- Menangani permintaan@PatchMapping
- Menangani permintaan tambalan
Semua yang tertulis di bawah ini juga merupakan karakteristik dari anotasi lainnya.
Annotation @GetMapping hanyalah anotasi yang berisi @RequestMapping (metode = RequestMethod.GET) .
Ini juga memungkinkan Anda menyempurnakan metode penangan.
Parameternya (parameter tersebut dikonversi ke parameter @RequestMapping yang serupa):
path
- URIheaders
- headername
- nama penanganparams
- parameterproduces
- jenis data yang dikembalikan (JSON, XML, teks). Digunakan di RESTconsumes
- jenis data yang diterima. Digunakan di REST
Secara default, anotasi mengambil jalur ke metode.
@GetMapping("managers") = @GetMapping(path = "managers")
Mengapa menggunakan anotasi @RequestParam?Anotasi ini digunakan agar metode handler bisa mendapatkan parameter dari permintaan http.
Permintaan dengan parameter: http://localhost:8080/getByName/name=Ivan
.
Kode berikut akan meletakkan string Ivan
dalam name
variabel.
@GetMapping("getByName") public User getUserByName(@RequestParam("name") String name) {
Mengapa menggunakan anotasi @PathVariable?Anotasi ini mendapat bagian khusus dari URI.
URI: http://localhost:8080/getById/23
Kode berikut akan menempatkan 23
dalam variabel id
.
@GetMapping("getById/_{id}_") public User getUserById(@PathVariable("id") String id) {
Parameter apa yang dapat diterima metode handler?Metode di kelas pengontrol dapat menggunakan beberapa jenis objek sebagai argumen yang diterima. Kemudian Spring akan secara otomatis mengimplementasikannya. Misalnya, objek HttpSession yang diinginkan, Keamanan, dll.
@GetMapping public User getUserById(HttpSession session) {
Benda apa yang bisa digunakan (bahasa Inggris) Apa penjelasan lain yang ada untuk digunakan di sebelah parameter metode?@MatrixVariable
- Menunjukkan bahwa parameter harus dikaitkan dengan pasangan nama-nilai dari URI.@RequestHeader
- Menunjukkan bahwa parameter harus dikaitkan dengan header permintaan web.@CookieValue
- Menunjukkan bahwa parameter harus dikaitkan dengan cookie.
Parameter dapat dideklarasikan sebagai tipe cookie atau sebagai tipe nilai cookie (String, int, dll.).@ModelAttribute
- Menunjukkan bahwa parameter dikaitkan dengan atribut model bernama yang tersedia untuk dilihat.@SessionAtribute
- Menunjukkan bahwa parameter dikaitkan dengan atribut dari sesi.
Apa penjelasan @RequestBody?Ini digunakan untuk menunjukkan bahwa metode beroperasi bukan dengan model, tetapi dengan data. Yaitu, ia mengirimkan JSON, XML, teks, dll. Biasanya ini secara implisit digunakan dalam layanan REST.
Apa yang bisa dikembalikan oleh metode pengontrol?Jenis objek yang dikembalikan dan deskripsinya (Inggris) Apa itu Pandangan?Lihat digunakan untuk menampilkan data aplikasi ke pengguna.
Spring MVC mendukung beberapa penyedia Tampilan (mereka disebut mesin templat) - JSP, JSF, Thymeleaf, dll.
Tampilan antarmuka mengubah objek menjadi servlets biasa.
Bagaimana View dipilih dalam fase rendering? Bagaimana Lihat ditampilkan?DispatcherServlet berisi daftar "pemetaan" khusus untuk tampilan, yang, berdasarkan konfigurasi servlet, akan berisi nampan yang mengimplementasikan antarmuka ViewResolver .
Lihat proses tampilan:
- Pengontrol mengembalikan tampilan nama di DispactherServlet
- Beri nama peta ke nama di
ViewResolver
- Jika
ViewResolver
cocok ViewResolver
, ia mengembalikan View yang harus digunakan saat rendering. - DS melewati model dengan data di Lihat dan menampilkan output (halaman html)
Apa itu Model?Ini adalah objek kelas yang mengimplementasikan antarmuka Model dan mewakili koleksi pasangan nilai kunci.
Konten model digunakan untuk menampilkan data dalam Lihat.
Misalnya, jika Lihat menampilkan informasi tentang objek Customer
, maka itu dapat merujuk ke tombol model, misalnya customerName
, customerPhone
, dan mendapatkan nilai untuk kunci ini.
Nilai objek dari model juga bisa berisi logika bisnis.