Tavaszi MVC bemutató

1. Áttekintés

Ez egyszerű Tavaszi MVC bemutató bemutatja, hogyan állítson be egy Spring MVC projektet, mind Java-alapú, mind XML-konfigurációval.

A Spring MVC projekt Maven-függőségeit részletesen a Spring MVC-függőségek cikk írja le.

2. Mi a tavaszi MVC?

Ahogy a neve is sugallja, ez a Spring keret modulja, amely a Model-View-Controller vagy MVC mintával foglalkozik. Ötvözi az MVC minta minden előnyét a Spring kényelmével.

A rugó az MVC-t az elülső vezérlő mintázatával valósítja meg DispatcherServlet.

Dióhéjban a DispatcherServlet a vezérlőként működik, hogy a kéréseket a rendeltetési helyre irányítsa. A modell nem más, mint alkalmazásunk adatai, és a nézetet a különféle sablonmotorok bármelyike ​​képviseli. Egy idő múlva megnézzük a JSP-ket a példánkban.

3. Tavaszi MVC a Java konfiguráció használatával

A Spring MVC támogatás Java konfigurációs osztályon keresztüli engedélyezéséhez csak annyit kell tennünk Add hozzá a @EnableWebMvc annotáció:

@EnableWebMvc @Configuration nyilvános osztály WebConfig {/// ...}

Ez beállítja az MVC projekthez szükséges alapvető támogatást, például a vezérlők és leképezések, a típusátalakítók, az érvényesítési támogatás, az üzenetátalakítók és a kivételkezelés regisztrálását.

Ha testre akarjuk szabni ezt a konfigurációt, akkor végre kell hajtanunk a WebMvcConfigurer felület:

@EnableWebMvc @Configuration nyilvános osztály A WebConfig végrehajtja a WebMvcConfigurer {@Override public void addViewControllers (ViewControllerRegistry registry) {register.addViewController ("/"). SetViewName ("index"); } @Bean public ViewResolver viewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / nézet /"); bean.setSuffix (". jsp"); visszatérő bab; }}

Ebben a példában regisztráltuk a ViewResolver bab, ami visszatér .jsp nézetek a / WEB-INF / nézet Könyvtár.

Nagyon fontos itt az regisztrálhatunk olyan nézetvezérlőket, amelyek közvetlen leképezést hoznak létre az URL és a nézet neve között használni a ViewControllerRegistry. Így nincs szükség vezérlőre a kettő között.

Ha kontroller osztályokat is meg akarunk definiálni és beolvasni, hozzáadhatjuk a @ComponentScan kommentár a vezérlőket tartalmazó csomaggal:

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

Az ezt a konfigurációt betöltő alkalmazás indításához egy indító osztályra is szükségünk van:

public class MainWebAppInitializer implementálja a WebApplicationInitializer {@Orride public void onStartup (final ServletContext sc) dob ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.scan ("com.baeldung"); sc.addListener (új ContextLoaderListener (root)); ServletRegistration.Dynamic appServlet = sc.addServlet ("mvc", új DispatcherServlet (új GenericWebApplicationContext ())); appServlet.setLoadOnStartup (1); appServlet.addMapping ("/"); }}

Ne feledje, hogy az 5. tavasznál korábbi verziókhoz a WebMvcConfigurerAdapter osztály az interfész helyett.

4. Tavaszi MVC az XML konfiguráció használatával

A fenti Java konfiguráció helyett egy tisztán XML konfigurációt is használhatunk:

Ha pusztán XML konfigurációt akarunk használni, akkor hozzá kell adnunk a-t is web.xml fájl az alkalmazás indításához. További részletek erről a megközelítésről az előző cikkünkben találhatók.

5. Vezérlő és nézetek

Vessen egy pillantást egy alapvezérlőre:

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

És a megfelelő jsp erőforrás a minta.jsp fájl:

A JSP alapú nézetfájlok a / alatt találhatókWEB-INF a projekt mappája, így csak a tavaszi infrastruktúra számára érhetők el, és nem közvetlen URL-hozzáféréssel.

6. Tavaszi MVC csomagtartóval

A Spring Boot a Spring Platform kiegészítője, amely megkönnyíti az indítást és az önálló, gyártási szintű alkalmazások létrehozását. Csomagtartó nem a tavasz helyettesítésére szolgál, hanem arra, hogy gyorsabb és könnyebb legyen vele dolgozni.

6.1. Tavaszi csomagtartó indítók

Az új keretrendszer kényelmes kezdőfüggőségeket biztosít - amelyek függőségi leírók amely be tudja hozni az összes szükséges technológiát egy bizonyos funkcionalitáshoz.

Ezeknek az az előnye, hogy már nem kell meghatároznunk az egyes függőségek verzióját, ehelyett lehetővé kell tenni, hogy az indító kezelje a függőségeket helyettünk.

A kezdés leggyorsabb módja a spring-boot-starter-szülő hozzáadása pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.2.2.KÖZLEMÉNY 

Ez gondoskodni fog a függőségkezelésről.

6.2. Tavaszi csomagtartó belépési pont

Minden alkalmazás felhasználásával épült Tavaszi csizma pusztán meg kell határoznia a fő belépési pontot. Ez általában egy Java osztály a fő- módszerrel @SpringBootApplication:

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

Ez a feljegyzés a következő további feljegyzéseket egészíti ki:

  • @ Konfiguráció - amely a babdefiníciók forrásaként jelöli az osztályt
  • @EnableAutoConfiguration -, amely megadja a keretrendszernek, hogy a babot automatikusan hozzáadja az osztályút függőségei alapján
  • @ComponentScan - amely más konfigurációkat és babokat keres a csomaggal Alkalmazás osztály vagy annál alacsonyabb

A Spring Boot segítségével beállíthatjuk a frontendet a Thymeleaf vagy a JSP segítségével a 3. szakaszban meghatározott ViewResolver használata nélkül. tavaszi-bakancs-indító-timeleaf függ a pom.xml-től, a Thymeleaf engedélyezve van, és nincs szükség további konfigurálásra.

A Boot alkalmazás forráskódja, mint mindig, elérhető a GitHubon.

Végül, ha el akarja kezdeni a Spring Boot alkalmazást, nézze meg itt a referencia bevezetőt.

7. Következtetés

Ebben a példában egy egyszerű és funkcionális Spring MVC projektet állítottunk be a Java konfiguráció használatával.

Ennek az egyszerű tavaszi MVC oktatóanyagnak a megvalósítása megtalálható a GitHub projektben.

Amikor a projekt helyi szinten fut, a minta.jsp címen érhető el // localhost: 8080 / spring-mvc-basics / sample.