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.