Spring MVC Tutorial

1. Oversikt

Dette er enkelt Spring MVC tutorial viser hvordan du setter opp et Spring MVC-prosjekt, både med en Java-basert konfigurasjon så vel som med XML-konfigurasjon.

Maven-avhengighetene for et Spring MVC-prosjekt er beskrevet i detalj i våren MVC-avhengighetsartikkel.

2. Hva er Spring MVC?

Som navnet antyder, det er en modul av Spring-rammeverket som håndterer Model-View-Controller eller MVC-mønsteret. Den kombinerer alle fordelene ved MVC-mønsteret med vårens bekvemmelighet.

Fjær implementerer MVC med det fremre kontrollermønsteret ved hjelp av sitt DispatcherServlet.

I et nøtteskall, den DispatcherServlet fungerer som hovedkontrollør for å rute forespørsler til den tiltenkte destinasjonen. Modellen er ingenting annet enn dataene i applikasjonen vår, og visningen er representert av noen av de forskjellige malmotorene. Vi vil se på JSP i eksemplet vårt om en stund.

3. Spring MVC ved hjelp av Java-konfigurasjon

For å aktivere Spring MVC-støtte gjennom en Java-konfigurasjonsklasse, er alt vi trenger å gjøre Legg til @EnableWebMvc kommentar:

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

Dette vil sette opp den grunnleggende støtten vi trenger for et MVC-prosjekt, for eksempel registrering av kontrollere og kartlegginger, typekonvertere, valideringsstøtte, meldingsomformere og unntakshåndtering.

Hvis vi ønsker å tilpasse denne konfigurasjonen, må vi implementere WebMvcConfigurer grensesnitt:

@EnableWebMvc @ Configuration offentlig klasse WebConfig implementerer 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"); retur bønne; }}

I dette eksemplet har vi registrert en ViewResolver bønne som kommer tilbake .jsp utsikt fra / WEB-INF / visning katalog.

Veldig viktig her er det Vi kan registrere visningskontrollere som lager en direkte kartlegging mellom URL-en og visningsnavnet bruker ViewControllerRegistry. På denne måten er det ikke behov for noen kontroller mellom de to.

Hvis vi også vil definere og skanne kontrollerklasser, kan vi legge til @ComponentScan kommentar med pakken som inneholder kontrollerne:

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

For å starte en applikasjon som laster denne konfigurasjonen, trenger vi også 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", new DispatcherServlet (new GenericWebApplicationContext ())); appServlet.setLoadOnStartup (1); appServlet.addMapping ("/"); }}

Merk at for versjoner som er tidligere enn vår 5, må vi bruke WebMvcConfigurerAdapter klasse i stedet for grensesnittet.

4. Spring MVC ved hjelp av XML-konfigurasjon

Alternativt til Java-konfigurasjonen ovenfor, kan vi også bruke en ren XML-konfigurasjon:

Hvis vi vil bruke en ren XML-konfigurasjon, må vi også legge til en web.xml filen for å starte programmet. For mer detalj om denne tilnærmingen, sjekk ut vår forrige artikkel.

5. Kontroller og visninger

La oss se på et eksempel på en grunnleggende kontroller:

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

Og den tilsvarende jsp-ressursen er sample.jsp fil:

De JSP-baserte visningsfilene ligger under /WEB-INF mappen til prosjektet, slik at de bare er tilgjengelige for Spring-infrastrukturen og ikke med direkte URL-tilgang.

6. Vår-MVC med støvel

Spring Boot er et tillegg til Spring Platform som gjør det veldig enkelt å komme i gang og lage frittstående applikasjoner av produksjonsgrad. Støvel er ikke ment å erstatte våren, men å gjøre arbeidet med det raskere og enklere.

6.1. Spring Boot Starters

Det nye rammeverket gir praktisk startavhengighet - som er avhengighetsbeskrivere som kan bringe inn all nødvendig teknologi for en viss funksjonalitet.

Disse har fordelen at vi ikke lenger trenger å spesifisere en versjon for hver avhengighet, men i stedet lar starteren administrere avhengigheter for oss.

Den raskeste måten å komme i gang er ved å legge til vår-start-start-foreldre pom.xml:

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

Dette vil ivareta avhengighetsstyring.

6.2. Oppstartspunkt for vårstøvler

Hver applikasjon er bygget med Vårstøvel trenger bare å definere hovedinngangspunktet. Dette er vanligvis en Java-klasse med hoved- metode, kommentert med @SpringBootApplication:

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

Denne kommentaren legger til følgende andre kommentarer:

  • @Konfigurasjon - som markerer klassen som en kilde til bønnedefinisjoner
  • @EnableAutoConfiguration - som forteller rammeverket om å legge til bønner basert på avhengighetene på klassestien automatisk
  • @ComponentScan - som skanner etter andre konfigurasjoner og bønner i samme pakke som applikasjon klasse eller under

Med Spring Boot kan vi sette opp frontend ved hjelp av Thymeleaf eller JSP-er uten å bruke ViewResolver som definert i avsnitt 3. Ved å legge til spring-boot-starter-thymeleaf avhengighet av pom.xml, blir Thymeleaf aktivert, og ingen ekstra konfigurasjon er nødvendig.

Kildekoden for Boot-appen er som alltid tilgjengelig på GitHub.

Til slutt, hvis du ønsker å komme i gang med Spring Boot, ta en titt på referanseintro her.

7. Konklusjon

I dette eksemplet konfigurerte vi et enkelt og funksjonelt Spring MVC-prosjekt ved hjelp av Java-konfigurasjon.

Implementeringen av denne enkle Spring MVC-opplæringen finner du i GitHub-prosjektet.

Når prosjektet kjører lokalt, vil sample.jsp kan nås på // localhost: 8080 / spring-mvc-basics / sample.