Tutorial MVC de primăvară

1. Prezentare generală

Acesta este un tutorial simplu Spring MVC care arată cum să configurați un proiect Spring MVC, atât cu o configurație bazată pe Java, cât și cu configurație XML.

Dependențele Maven pentru un proiect Spring MVC sunt descrise în detaliu în articolul Spring MVC dependencies.

2. Ce este Spring MVC?

După cum sugerează și numele, este un modul al cadrului Spring care se ocupă de modelul-View-Controller sau modelul MVC . Acesta combină toate avantajele modelului MVC cu confortul Spring.

Spring implementează MVC cu modelul controlerului frontal folosind DispatcherServlet .

Pe scurt, DispatcherServlet acționează ca controler principal pentru a direcționa solicitările către destinația lor intenționată. Modelul nu este altceva decât datele aplicației noastre, iar vizualizarea este reprezentată de oricare dintre diferitele motoare șablon. Ne vom uita la JSP-uri în exemplul nostru peste ceva timp.

3. Spring MVC folosind configurația Java

Pentru a activa suportul Spring MVC printr-o clasă de configurare Java, tot ce trebuie să facem este să adăugăm adnotarea @EnableWebMvc :

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

Aceasta va configura suportul de bază de care avem nevoie pentru un proiect MVC, cum ar fi înregistrarea de controlere și mapări, convertoare de tip, suport pentru validare, convertoare de mesaje și gestionarea excepțiilor.

Dacă dorim să personalizăm această configurație, trebuie să implementăm interfața 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; } }

În acest exemplu, am înregistrat un bean ViewResolver care va returna vizualizările .jsp din directorul / WEB-INF / view .

Foarte important aici este că putem înregistra controlere de vizualizare care creează o mapare directă între adresa URL și numele vizualizării folosind ViewControllerRegistry. În acest fel, nu este nevoie de niciun controler între cele două.

Dacă dorim să definim și să scanăm și clase de controlere, putem adăuga adnotarea @ComponentScan cu pachetul care conține controlerele:

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

Pentru a porni o aplicație care încarcă această configurație, avem nevoie și de o clasă de inițializator:

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("/"); } }

Rețineți că pentru versiunile anterioare primăverii 5, trebuie să folosim clasa WebMvcConfigurerAdapter în locul interfeței.

4. Spring MVC folosind configurația XML

Alternativ la configurația Java de mai sus, putem folosi și o configurație pur XML:

Dacă dorim să folosim o configurație pur XML, va trebui să adăugăm și un fișier web.xml pentru a porni aplicația. Pentru mai multe detalii despre această abordare, consultați articolul nostru anterior.

5. Controler și vizualizări

Să aruncăm o privire la un exemplu de controler de bază:

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

Și resursa jsp corespunzătoare este fișierul sample.jsp :

Fișierele de vizualizare bazate pe JSP sunt situate sub folderul / WEB-INF al proiectului, deci sunt accesibile doar pentru infrastructura Spring și nu prin acces URL direct.

6. MVC de primăvară cu boot

Spring Boot este o completare a Platformei Spring, ceea ce face foarte ușor să începeți și să creați aplicații de sine stătătoare, de producție. Boot-ul nu este destinat să înlocuiască Spring, ci să facă lucrurile mai rapide și mai ușoare.

6.1. Starters Spring Boot

Noul cadru oferă dependențe de pornire convenabile - care sunt descriptori de dependență care pot aduce toată tehnologia necesară pentru o anumită funcționalitate.

Acestea au avantajul că nu mai trebuie să specificăm o versiune pentru fiecare dependență, ci permit în schimb starterului să gestioneze dependențe pentru noi.

Cel mai rapid mod de a începe este adăugând spring-boot-starter-parent pom.xml:

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

Acest lucru se va ocupa de gestionarea dependenței.

6.2. Punct de intrare a cizmei de primăvară

Fiecare aplicație construită folosind Spring Boot trebuie doar să definească punctul principal de intrare. Aceasta este de obicei o clasă Java cu metoda principală , adnotată cu @SpringBootApplication :

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

Această adnotare adaugă următoarele alte adnotări:

  • @Configuration - care marchează clasa ca sursă de definiții de fasole
  • @EnableAutoConfiguration - care spune cadrului să adauge automat fasole pe baza dependențelor de pe clasa de drum
  • @ComponentScan - care scanează alte configurații și fasole în același pachet ca clasa de aplicații sau mai jos

Cu Spring Boot, putem configura frontend folosind Thymeleaf sau JSP fără a utiliza ViewResolver așa cum este definit în secțiunea 3. Prin adăugarea dependenței spring-boot-starter-thymeleaf la pom.xml, Thymeleaf este activat și nu este necesară nicio configurație suplimentară.

Codul sursă pentru aplicația Boot este, ca întotdeauna, disponibil pe GitHub.

În cele din urmă, dacă doriți să începeți cu Spring Boot, aruncați o privire la prezentarea noastră de referință aici.

7. Concluzie

În acest exemplu, am configurat un proiect Spring MVC simplu și funcțional, utilizând configurația Java.

Implementarea acestui tutorial simplu Spring MVC poate fi găsită în proiectul GitHub.

Când proiectul rulează local, sample.jsp poate fi accesat la // localhost: 8080 / spring-mvc-basics / sample.