Tutorial Spring MVC

1. Gambaran keseluruhan

Ini adalah tutorial Spring MVC sederhana yang menunjukkan cara menyiapkan projek Spring MVC, baik dengan konfigurasi berbasis Java dan juga dengan konfigurasi XML.

Ketergantungan Maven untuk projek Spring MVC dijelaskan secara terperinci dalam artikel dependensi Spring MVC.

2. Apakah Spring MVC?

Seperti namanya, ini adalah modul kerangka Spring yang berurusan dengan model-View-Controller, atau corak MVC . Ia menggabungkan semua kelebihan corak MVC dengan kemudahan Spring.

Spring menerapkan MVC dengan corak pengawal depan menggunakan DispatcherServletnya .

Ringkasnya, DispatcherServlet bertindak sebagai pengawal utama untuk mengarahkan permintaan ke destinasi yang diinginkan. Model tidak lain adalah data aplikasi kami, dan tampilan diwakili oleh salah satu daripada pelbagai mesin templat. Kita akan melihat JSP dalam contoh kita sebentar lagi.

3. Spring MVC Menggunakan Konfigurasi Java

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

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

Ini akan menetapkan sokongan asas yang kita perlukan untuk projek MVC, seperti pengontrol pendaftaran dan pemetaan, penukar jenis, sokongan pengesahan, penukar mesej dan pengendalian pengecualian.

Sekiranya kita ingin menyesuaikan konfigurasi ini, kita perlu menerapkan antara muka 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 pandangan .jsp dari direktori / WEB-INF / view .

Sangat penting di sini ialah kita dapat mendaftarkan pengawal pandangan yang membuat pemetaan langsung antara URL dan nama pandangan menggunakan ViewControllerRegistry. Dengan cara ini, tidak perlu ada Pengawal antara keduanya.

Sekiranya kita juga ingin menentukan dan mengimbas kelas pengawal, kita dapat menambahkan anotasi @ComponentScan dengan pakej yang mengandungi pengawal:

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

Untuk bootstrap aplikasi yang memuat konfigurasi ini, kami juga memerlukan kelas inisialisasi:

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 bahawa untuk versi yang lebih awal daripada Spring 5, kita harus menggunakan kelas WebMvcConfigurerAdapter dan bukannya antara muka.

4. Spring MVC Menggunakan Konfigurasi XML

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

Sekiranya kita ingin menggunakan konfigurasi XML semata-mata, kita juga perlu menambahkan fail web.xml untuk bootstrap aplikasi. Untuk lebih terperinci mengenai pendekatan ini, lihat artikel kami sebelumnya.

5. Pengawal dan Pandangan

Mari kita lihat contoh pengawal asas:

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

Dan sumber jsp yang sesuai adalah fail sample.jsp :

Fail pandangan berdasarkan JSP terletak di bawah folder / WEB-INF projek, jadi fail tersebut hanya dapat diakses ke infrastruktur Spring dan bukan dengan akses URL langsung.

6. Spring MVC Dengan Boot

Spring Boot adalah tambahan kepada Spring Platform yang menjadikannya sangat mudah untuk memulakan dan membuat aplikasi kelas produksi yang berdiri sendiri. Boot tidak bertujuan untuk menggantikan Spring, tetapi untuk menjadikannya lebih cepat dan mudah.

6.1. Pemula Boot Musim Semi

Kerangka baru menyediakan pergantungan pemula yang mudah - yang merupakan keterangan ketergantungan yang dapat membawa semua teknologi yang diperlukan untuk fungsi tertentu.

Ini mempunyai kelebihan bahawa kita tidak perlu lagi menentukan versi untuk setiap kebergantungan tetapi sebaliknya membenarkan pemula menguruskan pergantungan untuk kita.

Cara paling cepat untuk memulakannya adalah dengan menambahkan pom.xml spring-boot-starter-parent :

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

Ini akan menguruskan pengurusan kebergantungan.

6.2. Titik Masuk Spring Boot

Setiap aplikasi yang dibina menggunakan Spring Boot hanya perlu untuk menentukan titik masuk utama. Ini biasanya kelas Java dengan kaedah utama , dianotasi dengan @SpringBootApplication :

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

Anotasi ini menambahkan anotasi lain yang berikut:

  • @Configuration - yang menandakan kelas sebagai sumber definisi kacang
  • @EnableAutoConfiguration - yang memberitahu rangka kerja untuk menambah kacang berdasarkan pergantungan pada classpath secara automatik
  • @ComponentScan - yang mengimbas konfigurasi dan kacang lain dalam pakej yang sama dengan kelas Aplikasi atau di bawah

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

Kod sumber untuk aplikasi Boot tersedia seperti biasa di GitHub.

Akhirnya, jika anda ingin memulakan Spring Boot, lihat intro rujukan kami di sini.

7. Kesimpulannya

Dalam contoh ini, kami mengkonfigurasi projek Spring MVC sederhana dan berfungsi, menggunakan konfigurasi Java.

Pelaksanaan tutorial Spring MVC sederhana ini boleh didapati di projek GitHub.

Apabila projek dijalankan secara tempatan, sample.jsp dapat diakses di // localhost: 8080 / spring-mvc-basics / sample.