Proljetni Vodič za MVC

1. Pregled

Ovo je jednostavno Proljetni MVC tutorial pokazuje kako postaviti Spring MVC projekt, kako s Java konfiguracijom tako i s XML konfiguracijom.

Mavenove ovisnosti za proljetni MVC projekt detaljno su opisane u članku o proljetnim MVC ovisnostima.

2. Što je proljetni MVC?

Kao što i samo ime govori, to je modul Spring okvira koji se bavi Model-View-Controller ili MVC uzorkom. Kombinira sve prednosti MVC uzorka s pogodnošću Proljeća.

Opruga implementira MVC s uzorkom prednjeg regulatora koristeći svoj DispatcherServlet.

Ukratko, DispatcherServlet djeluje kao glavni kontrolor za usmjeravanje zahtjeva prema željenom odredištu. Model nije ništa drugo nego podaci naše aplikacije, a pogled predstavlja bilo koji od različitih mehanizama predložaka. Uskoro ćemo pogledati JSP-ove u našem primjeru.

3. Proljetni MVC pomoću Java konfiguracije

Da bismo omogućili podršku za Spring MVC putem klase Java konfiguracije, sve što moramo učiniti je dodaj @EnableWebMvc bilješka:

@EnableWebMvc @Configuration javna klasa WebConfig {/// ...}

Ovo će postaviti osnovnu podršku koja nam je potrebna za MVC projekt, poput registracije kontrolera i preslikavanja, pretvarača tipova, podrške za provjeru valjanosti, pretvarača poruka i rukovanja iznimkama.

Ako želimo prilagoditi ovu konfiguraciju, moramo implementirati WebMvcConfigurer sučelje:

@EnableWebMvc @Configuration javna klasa WebConfig implementira WebMvcConfigurer {@Override public void addViewControllers (Registar ViewControllerRegistry) {registry.addViewController ("/"). SetViewName ("index"); } @Bean public ViewResolver viewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); grah za povratak; }}

U ovom smo primjeru registrirali ViewResolver grah koji će se vratiti .jsp pogledi s / WEB-INF / prikaz imenik.

Ovdje je vrlo važno možemo registrirati kontrolere pogleda koji stvaraju izravno mapiranje između URL-a i imena pogleda koristiti ViewControllerRegistry. Na taj način između njih nema potrebe za bilo kojim kontrolorom.

Ako želimo također definirati i skenirati klase kontrolora, možemo dodati @ComponentScan napomena uz paket koji sadrži kontrolere:

@EnableWebMvc @Configuration @ComponentScan (basePackages = {"com.baeldung.web.controller"}) javna klasa WebConfig implementira WebMvcConfigurer {// ...}

Da bismo pokrenuli aplikaciju koja učitava ovu konfiguraciju, trebamo i klasu inicijalizatora:

javna klasa MainWebAppInitializer implementira WebApplicationInitializer {@Override public void onStartup (final ServletContext sc) baca ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.scan ("com.baeldung"); sc.addListener (novi ContextLoaderListener (korijen)); ServletRegistration.Dynamic appServlet = sc.addServlet ("mvc", novi DispatcherServlet (novi GenericWebApplicationContext ())); appServlet.setLoadOnStartup (1); appServlet.addMapping ("/"); }}

Imajte na umu da za verzije ranije od Spring 5 moramo koristiti WebMvcConfigurerAdapter klasa umjesto sučelja.

4. Spring MVC pomoću XML konfiguracije

Alternativno gornjoj Java konfiguraciji, možemo koristiti i čisto XML konfiguraciju:

Ako želimo koristiti čisto XML konfiguraciju, trebat ćemo dodati i web.xml datoteku za pokretanje aplikacije. Za više detalja o ovom pristupu pogledajte naš prethodni članak.

5. Kontroler i pogledi

Pogledajmo primjer osnovnog kontrolera:

@Controller javna klasa SampleController {@GetMapping ("/ sample") javni String showForm () {return "sample"; }}

A odgovarajući jsp resurs je sample.jsp datoteka:

Datoteke prikaza zasnovane na JSP-u nalaze se ispod /WEB-INF mapu projekta, tako da su dostupni samo infrastrukturi Spring, a ne izravnim pristupom URL-u.

6. Proljetni MVC s čizmom

Spring Boot je dodatak Spring Platformi koji olakšava početak rada i stvaranje samostalnih aplikacija proizvodnog razreda. Čizma nije namijenjen zamjeni opruge, već bržem i lakšem radu s njom.

6.1. Proljetni pokretači čizama

Novi okvir pruža praktične početne ovisnosti - koji su deskriptori ovisnosti koji mogu unijeti svu potrebnu tehnologiju za određenu funkcionalnost.

Oni imaju tu prednost što više ne trebamo navesti verziju za svaku ovisnost, već umjesto toga dopuštamo pokretaču da upravlja ovisnostima umjesto nas.

Najbrži način za početak je dodavanje roditelja spring-boot-starter-parent pom.xml:

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

Ovo će se pobrinuti za upravljanje ovisnošću.

6.2. Prolazna ulazna točka

Svaka aplikacija izrađena pomoću Proljetni čizme treba samo definirati glavnu ulaznu točku. Ovo je obično Java klasa s glavni metoda, označena sa @SpringBootApplication:

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

Ova napomena dodaje sljedeće ostale napomene:

  • @Konfiguracija - što označava klasu kao izvor definicija graha
  • @EnableAutoConfiguration - koji govori okviru da automatski doda grah na temelju ovisnosti o putu predavanja
  • @ComponentScan - koji pretražuje ostale konfiguracije i grah u istom pakiranju kao i Primjena razred ili niže

S Spring Boot-om možemo postaviti frontend koristeći Thymeleaf ili JSP-ove bez korištenja ViewResolver-a kako je definirano u odjeljku 3. Dodavanjem opruga-čizma-starter-majčina dušica Ovisno o našem pom.xml, Thymeleaf se omogućuje i nije potrebna dodatna konfiguracija.

Izvorni kod za aplikaciju Boot dostupan je, kao i uvijek, na GitHub-u.

Konačno, ako želite započeti s Spring Bootom, pogledajte naš referentni uvod ovdje.

7. Zaključak

U ovom smo primjeru konfigurirali jednostavan i funkcionalan Spring MVC projekt, koristeći Java konfiguraciju.

Provedbu ovog jednostavnog MVC vodiča za proljeće možete pronaći u projektu GitHub.

Kada se projekt izvodi lokalno, sample.jsp može se pristupiti na // localhost: 8080 / spring-mvc-basics / sample.