back to top

Web – Web MVC Framework – Guida Java Spring

La parte di Spring che si occupa del layer di presentazione dei dati specifico per applicazioni Web è il Web MVC Framework. Come da filosofia di Spring anche per usare questo modulo non è necessario estendere o implementare nessuna interfaccia specifica del framework. Per implementare l'MVC, Spring usa tre elementi principali:

  • DispatcherServlet
  • Handlers
  • View Resolver

La DispatcherServlet è una servlet che si occupa di smistare tutte le richieste (POST,GET,PUT …) ai vari handlers, quindi funge fa Front Controller. La DispatcherServlet, essendo una servlet a tutti gli effetti, deve essere mappata nel web.xml:

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/example/*</url-pattern>
</servlet-mapping>

La servlet, essendo pienamente integrata con l'IoC container, dispone di un proprio WebApplicationContext che estende quello principale, aggiungendo tutti i beans dichiarati nel file WEB-INF/[servlet-name]-servlet.xml. In particolare tra questi beans ci saranno gli handlers delle richieste e i View Resolver. Gli handlers sono i beans che si occupano si servire realmente la richiesta, e non sono altro che POJO annotati con @Controller, quindi da ora li chiameremo controller:

@Controller
public class ExampleController {
  
  @RequestMapping(value = "/")
  public String welcome(Model model) {
    model.addAttribute(new Book());
    return "/book/createBook";
  }
}

e definiti nel file WEB-INF/dispatcher-servlet.xml:

<!-- CONFIGURAZIONE CON ANNOTATION -->
<mvc:annotation-driven />

<bean class="it.mrwebmaster.mvc.ExampleController" scope="session"/>

Attraverso questa configurazione di esempio viene detto a Spring che il mapping dei controllers avviene attraverso le annotation, quindi, quando viene fatta una richiesta del tipo http://…./example/ la DispatcherServlet reindirizza la chiamata al nostro controller di esempio, che effettua delle operazioni sul model (che verranno illustrate più avanti) e poi restituisce una stringa che rappresenta il view resolver. Nel nostro esempio il view resolver è un InternalResourceViewResolver che attraverso la stringa restituita dal controller reindirizza ad una jsp:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
</bean>

Nel nostro esempio la jsp è /WEB-INF/jsp/book/createBook.jsp

Spring MVC

Nei paragrafi successivi verranno analizzati i controller e i view resolver ma, oltre a questi, ci sono anche altri strumenti che sono lasciati al libero approfondimento per il lettore:

  • locale resolver – per l'interazionalazzazione della nostra applicazione.
  • theme resolver – per creare dei layout.
  • multipart file resolver – un resolver per permettere l'upload di file.
  • handler exception resolvers – resolvers che permettono una gestione avanzata delle eccezioni.
PubblicitÃ