Tutorial Spring MVC

1. Panoramica

Questo è un semplice tutorial di Spring MVC che mostra come impostare un progetto Spring MVC, sia con una configurazione basata su Java che con una configurazione XML.

Le dipendenze Maven per un progetto Spring MVC sono descritte in dettaglio nell'articolo sulle dipendenze di Spring MVC.

2. Cos'è Spring MVC?

Come suggerisce il nome, è un modulo del framework Spring che si occupa del Model-View-Controller, o pattern MVC . Combina tutti i vantaggi del modello MVC con la comodità della primavera.

Spring implementa MVC con il pattern del front controller utilizzando DispatcherServlet .

In poche parole, DispatcherServlet funge da controller principale per instradare le richieste alla destinazione prevista. Il modello non è altro che i dati della nostra applicazione e la vista è rappresentata da uno qualsiasi dei vari motori di modelli. Tra poco esamineremo i JSP nel nostro esempio.

3. Spring MVC utilizzando la configurazione Java

Per abilitare il supporto Spring MVC tramite una classe di configurazione Java, tutto ciò che dobbiamo fare è aggiungere l' annotazione @EnableWebMvc :

@EnableWebMvc @Configuration public class WebConfig { /// ... }

Questo imposterà il supporto di base di cui abbiamo bisogno per un progetto MVC, come la registrazione di controller e mappature, convertitori di tipi, supporto di convalida, convertitori di messaggi e gestione delle eccezioni.

Se vogliamo personalizzare questa configurazione, dobbiamo implementare l' interfaccia WebMvcConfigurer :

@EnableWebMvc @Configuration public class WebConfig implements 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"); return bean; } }

In questo esempio, abbiamo registrato un bean ViewResolver che restituirà le viste .jsp dalla directory / WEB-INF / view .

Molto importante qui è che possiamo registrare i controller di visualizzazione che creano una mappatura diretta tra l'URL e il nome della visualizzazione utilizzando ViewControllerRegistry. In questo modo, non è necessario alcun controller tra i due.

Se vogliamo anche definire e scansionare le classi dei controller, possiamo aggiungere l' annotazione @ComponentScan con il pacchetto che contiene i controller:

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

Per avviare un'applicazione che carica questa configurazione, abbiamo anche bisogno di una classe di inizializzazione:

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

Si noti che per le versioni precedenti alla Spring 5, dobbiamo utilizzare la classe WebMvcConfigurerAdapter invece dell'interfaccia.

4. Spring MVC utilizzando la configurazione XML

In alternativa alla configurazione Java sopra, possiamo anche utilizzare una configurazione puramente XML:

Se vogliamo utilizzare una configurazione puramente XML, dovremo anche aggiungere un file web.xml per avviare l'applicazione. Per maggiori dettagli su questo approccio, consulta il nostro articolo precedente.

5. Controller e visualizzazioni

Diamo un'occhiata a un esempio di controller di base:

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

E la risorsa jsp corrispondente è il file sample.jsp :

I file di visualizzazione basati su JSP si trovano nella cartella / WEB-INF del progetto, quindi sono accessibili solo all'infrastruttura Spring e non tramite accesso URL diretto.

6. Spring MVC con avvio

Spring Boot è un'aggiunta a Spring Platform che semplifica l'avvio e la creazione di applicazioni autonome di livello di produzione. Boot non ha lo scopo di sostituire la primavera, ma di rendere il lavoro più veloce e semplice.

6.1. Avviamento primaverile

Il nuovo framework fornisce comode dipendenze iniziali, che sono descrittori di dipendenze che possono portare tutta la tecnologia necessaria per una certa funzionalità.

Questi hanno il vantaggio che non abbiamo più bisogno di specificare una versione per ogni dipendenza ma invece consentono allo starter di gestire le dipendenze per noi.

Il modo più rapido per iniziare è aggiungere il file spring-boot-starter-parent pom.xml:

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

Questo si occuperà della gestione delle dipendenze.

6.2. Punto di ingresso di Spring Boot

Ogni applicazione creata utilizzando Spring Boot deve semplicemente definire il punto di ingresso principale. Di solito è una classe Java con il metodo principale , annotato con @SpringBootApplication :

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

Questa annotazione aggiunge le seguenti altre annotazioni:

  • @Configuration - che contrassegna la classe come origine delle definizioni dei bean
  • @EnableAutoConfiguration - che dice al framework di aggiungere automaticamente i bean in base alle dipendenze sul classpath
  • @ComponentScan – which scans for other configurations and beans in the same package as the Application class or below

With Spring Boot, we can set up frontend using Thymeleaf or JSP's without using ViewResolver as defined in section 3. By adding spring-boot-starter-thymeleaf dependency to our pom.xml, Thymeleaf gets enabled, and no extra configuration is necessary.

The source code for the Boot app is, as always, available over on GitHub.

Finally, if you're looking to get started with Spring Boot, have a look at our reference intro here.

7. Conclusion

In this example we configured a simple and functional Spring MVC project, using Java configuration.

The implementation of this simple Spring MVC tutorial can be found in the GitHub project.

Quando il progetto viene eseguito in locale, è possibile accedere a sample.jsp in // localhost: 8080 / spring-mvc-basics / sample.