Tutorial MVC Musim Semi

1. Ikhtisar

Ini adalah tutorial Spring MVC sederhana yang menunjukkan cara menyiapkan proyek Spring MVC, baik dengan konfigurasi berbasis Java maupun dengan konfigurasi XML.

Dependensi Maven untuk proyek Spring MVC dijelaskan secara rinci di artikel Dependensi MVC Spring.

2. Apakah Spring MVC?

Seperti namanya, ini adalah modul framework Spring yang menangani pola Model-View-Controller, atau MVC . Ini menggabungkan semua keunggulan pola MVC dengan kenyamanan Spring.

Spring mengimplementasikan MVC dengan pola pengontrol depan menggunakan DispatcherServlet -nya .

Singkatnya, DispatcherServlet bertindak sebagai pengontrol utama untuk mengarahkan permintaan ke tujuan yang dimaksudkan. Model tidak lain adalah data aplikasi kita, dan tampilan diwakili oleh salah satu dari berbagai mesin template. Kami akan melihat JSP dalam contoh kami sebentar lagi.

3. Spring MVC Menggunakan Konfigurasi Java

Untuk mengaktifkan dukungan Spring MVC melalui kelas konfigurasi Java, yang harus kita lakukan adalah menambahkan anotasi @EnableWebMvc :

@EnableWebMvc @Configuration public class WebConfig { /// ... }

Ini akan menyiapkan dukungan dasar yang kami perlukan untuk proyek MVC, seperti mendaftarkan pengontrol dan pemetaan, pengonversi jenis, dukungan validasi, pengonversi pesan, dan penanganan pengecualian.

Jika kita ingin menyesuaikan konfigurasi ini, kita perlu mengimplementasikan antarmuka WebMvcConfigurer :

@EnableWebMvc @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/view/"); bean.setSuffix(".jsp"); return bean; } }

Dalam contoh ini, kami telah mendaftarkan kacang ViewResolver yang akan mengembalikan tampilan .jsp dari direktori / WEB-INF / view .

Yang sangat penting di sini adalah kita dapat mendaftarkan pengontrol tampilan yang membuat pemetaan langsung antara URL dan nama tampilan menggunakan ViewControllerRegistry. Dengan cara ini, tidak diperlukan Pengontrol di antara keduanya.

Jika kita juga ingin mendefinisikan dan memindai kelas pengontrol, kita dapat menambahkan anotasi @ComponentScan dengan paket yang berisi pengontrol:

@EnableWebMvc @Configuration @ComponentScan(basePackages = { "com.baeldung.web.controller" }) public class WebConfig implements WebMvcConfigurer { // ... }

Untuk mem-bootstrap aplikasi yang memuat konfigurasi ini, kita juga membutuhkan kelas penginisialisasi:

public class MainWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(final ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.scan("com.baeldung"); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); appServlet.addMapping("/"); } }

Perhatikan bahwa untuk versi sebelum Spring 5, kita harus menggunakan kelas WebMvcConfigurerAdapter alih-alih antarmuka.

4. Spring MVC Menggunakan Konfigurasi XML

Sebagai alternatif untuk konfigurasi Java di atas, kita juga dapat menggunakan konfigurasi XML murni:

Jika kita ingin menggunakan konfigurasi XML murni, kita juga perlu menambahkan file web.xml ke bootstrap aplikasi. Untuk detail lebih lanjut tentang pendekatan ini, lihat artikel kami sebelumnya.

5. Pengontrol dan Tampilan

Mari kita lihat contoh pengontrol dasar:

@Controller public class SampleController { @GetMapping("/sample") public String showForm() { return "sample"; } }

Dan sumber daya jsp yang sesuai adalah file sample.jsp :

File tampilan berbasis JSP terletak di bawah folder / WEB-INF proyek, jadi mereka hanya dapat diakses oleh infrastruktur Spring dan bukan dengan akses URL langsung.

6. Spring MVC Dengan Boot

Spring Boot adalah tambahan untuk Spring Platform yang membuatnya sangat mudah untuk memulai dan membuat aplikasi kelas produksi yang berdiri sendiri. Boot tidak dimaksudkan untuk menggantikan Spring, tetapi untuk membuatnya bekerja lebih cepat dan mudah.

6.1. Pemula Boot Musim Semi

Framework baru ini menyediakan dependensi starter yang nyaman - yang merupakan deskriptor dependensi yang dapat menghadirkan semua teknologi yang diperlukan untuk fungsionalitas tertentu.

Keuntungannya adalah kita tidak perlu lagi menentukan versi untuk setiap dependensi, tetapi memungkinkan starter untuk mengelola dependensi untuk kita.

Cara tercepat untuk memulai adalah dengan menambahkan pom.xml spring-boot-starter-parent :

 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE 

Ini akan menangani manajemen ketergantungan.

6.2. Titik Masuk Spring Boot

Setiap aplikasi yang dibangun menggunakan Spring Boot hanya perlu mendefinisikan titik masuk utama. Ini biasanya merupakan kelas Java dengan metode utama , dianotasi dengan @SpringBootApplication :

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 

Anotasi ini menambahkan anotasi lain berikut ini:

  • @Configuration - yang menandai kelas sebagai sumber definisi kacang
  • @EnableAutoConfiguration - yang memberi tahu framework untuk menambahkan kacang berdasarkan dependensi pada classpath secara otomatis
  • @ComponentScan - yang memindai konfigurasi dan kacang lain dalam paket yang sama dengan kelas Aplikasi atau di bawahnya

Dengan Spring Boot, kita dapat mengatur frontend menggunakan Thymeleaf atau JSP tanpa menggunakan ViewResolver seperti yang didefinisikan di bagian 3. Dengan menambahkan ketergantungan spring-boot-starter-thymeleaf ke pom.xml, Thymeleaf diaktifkan, dan tidak ada konfigurasi tambahan yang diperlukan.

Kode sumber untuk aplikasi Boot, seperti biasa, tersedia di GitHub.

Terakhir, jika Anda ingin memulai dengan Spring Boot, lihat intro referensi kami di sini.

7. Kesimpulan

Dalam contoh ini kami mengonfigurasi proyek Spring MVC yang sederhana dan fungsional, menggunakan konfigurasi Java.

Implementasi tutorial Spring MVC sederhana ini dapat ditemukan di proyek GitHub.

Ketika proyek berjalan secara lokal, sample.jsp dapat diakses di // localhost: 8080 / spring-mvc-basics / sample.