Spring MVC-zelfstudie

1. Overzicht

Dit is simpel Spring MVC-zelfstudie laten zien hoe u een Spring MVC-project opzet, zowel met een op Java gebaseerde configuratie als met XML-configuratie.

De Maven-afhankelijkheden voor een Spring MVC-project worden in detail beschreven in het artikel Spring MVC-afhankelijkheden.

2. Wat is Spring MVC?

Zoals de naam al doet vermoeden, het is een module van het Spring-framework die te maken heeft met het Model-View-Controller of MVC-patroon. Het combineert alle voordelen van het MVC-patroon met het gemak van Spring.

Spring implementeert MVC met het voorste controllerpatroon met behulp van zijn DispatcherServlet.

In een notendop, de DispatcherServlet fungeert als de belangrijkste verwerkingsverantwoordelijke om verzoeken naar hun beoogde bestemming te leiden. Het model is niets anders dan de gegevens van onze applicatie en de weergave wordt weergegeven door een van de verschillende sjabloonengines. We zullen straks naar JSP's in ons voorbeeld kijken.

3. Spring MVC met behulp van Java-configuratie

Om Spring MVC-ondersteuning via een Java-configuratieklasse in te schakelen, hoeven we alleen maar voeg de @EnableWebMvc annotatie:

@EnableWebMvc @Configuration openbare klasse Webconfiguratie {/// ...}

Hiermee wordt de basisondersteuning opgezet die we nodig hebben voor een MVC-project, zoals het registreren van controllers en toewijzingen, typeconverters, validatieondersteuning, berichtconverters en het afhandelen van uitzonderingen.

Als we deze configuratie willen aanpassen, moeten we het WebMvcConfigurer koppel:

@EnableWebMvc @Configuration openbare klasse Webconfiguratie implementeert WebMvcConfigurer {@Override openbare ongeldige addViewControllers (ViewControllerRegistry-register) {registry.addViewController ("/"). SetViewName ("index"); } @Bean openbare ViewResolver viewResolver () {InternalResourceViewResolver bean = nieuwe InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); terugkeer boon; }}

In dit voorbeeld hebben we een ViewResolver boon die zal terugkeren .jsp uitzicht vanaf de / WEB-INF / bekijk directory.

Heel belangrijk hier is dat we kunnen weergavecontrollers registreren die een directe koppeling maken tussen de URL en de weergavenaam de ... gebruiken ViewControllerRegistry. Op deze manier is er geen controller tussen de twee nodig.

Als we ook controllerklassen willen definiëren en scannen, kunnen we de @BuienRadarNL annotatie met het pakket dat de controllers bevat:

@EnableWebMvc @Configuration @ComponentScan (basePackages = {"com.baeldung.web.controller"}) openbare klasse Webconfiguratie implementeert WebMvcConfigurer {// ...}

Om een ​​applicatie die deze configuratie laadt op te starten, hebben we ook een initialisatieklasse nodig:

openbare klasse MainWebAppInitializer implementeert WebApplicationInitializer {@Override public void onStartup (laatste ServletContext sc) gooit ServletException {AnnotationConfigWebApplicationContext root = nieuwe AnnotationConfigWebApplicationContext (); root.scan ("com.baeldung"); sc.addListener (nieuwe ContextLoaderListener (root)); ServletRegistration.Dynamic appServlet = sc.addServlet ("mvc", nieuwe DispatcherServlet (nieuwe GenericWebApplicationContext ())); appServlet.setLoadOnStartup (1); appServlet.addMapping ("/"); }}

Merk op dat we voor versies eerder dan Spring 5 de WebMvcConfigurerAdapter class in plaats van de interface.

4. Spring MVC met behulp van XML-configuratie

Als alternatief voor de bovenstaande Java-configuratie kunnen we ook een puur XML-configuratie gebruiken:

Als we een puur XML-configuratie willen gebruiken, moeten we ook een web.xml bestand om de applicatie op te starten. Bekijk ons ​​vorige artikel voor meer informatie over deze aanpak.

5. Controller en weergaven

Laten we eens kijken naar een voorbeeld van een basiscontroller:

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

En de bijbehorende jsp-bron is de sample.jsp het dossier:

De op JSP gebaseerde weergavebestanden bevinden zich onder de /WEB-INF map van het project, dus ze zijn alleen toegankelijk voor de Spring-infrastructuur en niet via directe URL-toegang.

6. Veer MVC met laars

Spring Boot is een toevoeging aan Spring Platform die het heel gemakkelijk maakt om aan de slag te gaan en stand-alone applicaties van productiekwaliteit te creëren. Laars is niet bedoeld om Spring te vervangen, maar om er sneller en gemakkelijker mee te kunnen werken.

6.1. Spring Boot-starters

Het nieuwe raamwerk biedt handige starter-afhankelijkheden - dit zijn afhankelijkheidsdescriptoren die alle benodigde technologie voor een bepaalde functionaliteit kan inbrengen.

Deze hebben het voordeel dat we niet langer voor elke afhankelijkheid een versie hoeven op te geven, maar de starter in plaats daarvan de afhankelijkheden voor ons laten beheren.

De snelste manier om te beginnen is door de spring-boot-starter-parent toe te voegen pom.xml:

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

Dit zorgt voor afhankelijkheidsbeheer.

6.2. Spring Boot Entry Point

Elke applicatie gebouwd met Spring Boot hoeft alleen het belangrijkste toegangspunt te definiëren. Dit is meestal een Java-klasse met de extensie hoofd methode, geannoteerd met @SpringBootApplication:

@SpringBootApplication openbare klasse Toepassing {openbare statische leegte hoofd (String [] args) {SpringApplication.run (Application.class, args); }} 

Deze annotatie voegt de volgende andere annotaties toe:

  • @Configuratie - wat de klasse markeert als een bron van bean-definities
  • @EnableAutoConfiguration - wat het raamwerk vertelt om bonen automatisch toe te voegen op basis van de afhankelijkheden van het klassenpad
  • @BuienRadarNL - die zoekt naar andere configuraties en bonen in hetzelfde pakket als het Toepassing klasse of lager

Met Spring Boot kunnen we frontend opzetten met Thymeleaf of JSP's zonder ViewResolver te gebruiken zoals gedefinieerd in sectie 3. Door toe te voegen spring-boot-starter-thymeleaf afhankelijkheid van onze pom.xml, wordt Thymeleaf ingeschakeld en is er geen extra configuratie nodig.

De broncode voor de Boot-app is, zoals altijd, beschikbaar op GitHub.

Als je eindelijk aan de slag wilt met Spring Boot, bekijk dan hier onze referentie-intro.

7. Conclusie

In dit voorbeeld hebben we een eenvoudig en functioneel Spring MVC-project geconfigureerd met behulp van Java-configuratie.

De implementatie van deze eenvoudige Spring MVC-tutorial is te vinden in het GitHub-project.

Als het project lokaal wordt uitgevoerd, wordt het sample.jsp kan worden geraadpleegd op // localhost: 8080 / spring-mvc-basics / sample.


$config[zx-auto] not found$config[zx-overlay] not found