Spring MVC Tutorial

1. Oversigt

Dette er simpelt Spring MVC tutorial viser, hvordan man opretter et Spring MVC-projekt, både med en Java-baseret konfiguration såvel som med XML-konfiguration.

Maven-afhængighederne for et Spring MVC-projekt er beskrevet detaljeret i artiklen om Spring MVC-afhængigheder.

2. Hvad er Spring MVC?

Som navnet antyder, det er et modul i Spring-rammen, der beskæftiger sig med Model-View-Controller eller MVC-mønster. Det kombinerer alle fordelene ved MVC-mønster med bekvemmeligheden ved foråret.

Fjeder implementerer MVC med det forreste controller mønster ved hjælp af dets DispatcherServlet.

I en nøddeskal er den DispatcherServlet fungerer som hovedcontroller til at dirigere anmodninger til deres tiltænkte destination. Modellen er intet andet end dataene i vores applikation, og visningen er repræsenteret af nogen af ​​de forskellige skabelonmotorer. Vi ser på JSP'er i vores eksempel om et stykke tid.

3. Spring MVC ved hjælp af Java-konfiguration

For at aktivere Spring MVC-support gennem en Java-konfigurationsklasse er alt, hvad vi skal gøre, tilføj @EnableWebMvc kommentar:

@EnableWebMvc @ Configuration offentlig klasse WebConfig {/// ...}

Dette opretter den basale support, vi har brug for til et MVC-projekt, såsom registrering af controllere og tilknytninger, typekonvertere, valideringsunderstøttelse, meddelelsesomformere og håndtering af undtagelser.

Hvis vi vil tilpasse denne konfiguration, skal vi implementere WebMvcConfigurer grænseflade:

@EnableWebMvc @ Configuration offentlig klasse WebConfig implementerer WebMvcConfigurer {@ Override public void addViewControllers (ViewControllerRegistry registry) {registry.addViewController ("/"). SetViewName ("index"); } @Bean offentlig ViewResolver viewResolver () {InternalResourceViewResolver bean = ny InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); retur bønne; }}

I dette eksempel har vi registreret en ViewResolver bønne, der vender tilbage .jsp udsigt fra / WEB-INF / visning vejviser.

Det er meget vigtigt her Vi kan registrere visningskontrollere, der opretter en direkte kortlægning mellem URL'en og visningsnavnet bruger ViewControllerRegistry. På denne måde er der ikke behov for nogen controller mellem de to.

Hvis vi også vil definere og scanne controller-klasser, kan vi tilføje @ComponentScan kommentar med pakken, der indeholder controllerne:

@EnableWebMvc @ Configuration @ ComponentScan (basePackages = {"com.baeldung.web.controller"}) offentlig klasse WebConfig implementerer WebMvcConfigurer {// ...}

For at starte en applikation, der indlæser denne konfiguration, har vi også brug for en initialiseringsklasse:

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

Bemærk, at vi for versioner tidligere end forår 5 skal bruge WebMvcConfigurerAdapter klasse i stedet for grænsefladen.

4. Spring MVC ved hjælp af XML-konfiguration

Alternativt til Java-konfigurationen ovenfor kan vi også bruge en rent XML-konfiguration:

Hvis vi vil bruge en rent XML-konfiguration, skal vi også tilføje en web.xml fil for at starte programmet. For mere detaljer om denne tilgang, se vores tidligere artikel.

5. Controller og visninger

Lad os se på et eksempel på en grundlæggende controller:

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

Og den tilsvarende jsp-ressource er prøve.jsp fil:

De JSP-baserede visningsfiler er placeret under /WEB-INF projektmappe, så de er kun tilgængelige for Spring-infrastrukturen og ikke med direkte URL-adgang.

6. Fjeder MVC med boot

Spring Boot er en tilføjelse til Spring Platform, som gør det meget nemt at komme i gang og oprette stand-alone, produktionsklasse applikationer. Støvle er ikke beregnet til at erstatte fjeder, men at gøre arbejdet med det hurtigere og lettere.

6.1. Spring Boot Startere

Den nye ramme giver bekvem startafhængighed - som er afhængighedsbeskrivere der kan bringe al den nødvendige teknologi til en bestemt funktionalitet.

Disse har den fordel, at vi ikke længere behøver at angive en version for hver afhængighed, men i stedet tillade starteren at administrere afhængigheder for os.

Den hurtigste måde at komme i gang er ved at tilføje spring-boot-starter-parent pom.xml:

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

Dette vil tage sig af afhængighedsstyring.

6.2. Spring Boot indgangssted

Hver applikation er bygget ved hjælp af Spring Boot behøver blot at definere hovedindgangspunktet. Dette er normalt en Java-klasse med vigtigste metode, kommenteret med @SpringBootApplication:

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

Denne kommentar tilføjer følgende andre kommentarer:

  • @Konfiguration - som markerer klassen som en kilde til bønnedefinitioner
  • @EnableAutoConfiguration - som fortæller rammen om automatisk at tilføje bønner baseret på afhængighederne på klassestien
  • @ComponentScan - som scanner efter andre konfigurationer og bønner i samme pakke som Ansøgning klasse eller derunder

Med Spring Boot kan vi konfigurere frontend ved hjælp af Thymeleaf eller JSP'er uden brug af ViewResolver som defineret i afsnit 3. Ved at tilføje spring-boot-starter-thymeleaf afhængighed af vores pom.xml, bliver Thymeleaf aktiveret, og ingen ekstra konfiguration er nødvendig.

Kildekoden til Boot-appen er som altid tilgængelig på GitHub.

Endelig, hvis du ønsker at komme i gang med Spring Boot, skal du kigge på vores referenceintroduktion her.

7. Konklusion

I dette eksempel konfigurerede vi et simpelt og funktionelt Spring MVC-projekt ved hjælp af Java-konfiguration.

Implementeringen af ​​denne enkle Spring MVC tutorial kan findes i GitHub-projektet.

Når projektet kører lokalt, prøve.jsp kan tilgås på // localhost: 8080 / spring-mvc-basics / sample.