Utilizzare Spring nelle web application – parte 3

Logo_Spring_252x150
In questa puntata vedremo come aggiungere e configurare le librerie necessarie a Mercatino Spring. Prima di farlo, però, è necessario chiarire alcune questioni di natura pratica.

Gestione dei template

Per gestire i template dell’applicazione utilizzeremo Sitemesh, uno strumento che abbiamo già avuto modo di apprezzare con una piccola serie di articoli su questo blog.

Strati applicativi e gestione dello sviluppo

Come succede spesso nel mondo reale avremo poco tempo e risorse limitate, non potremo quindi realizzare da subito tutti i livelli della nostra applicazione. Per superare questo e altri problemi adotteremo quindi una strategia di sviluppo top-down: realizzeremo per prima cosa lo strato web limitandoci inizialmente a simulare l’interazione con il database, implementando in un secondo momento i servizi veri e propri; in questo modo potremo consegnare molto velocemente una prima versione dell’applicazione, da far provare agli utenti o al team di QA (Quality Assurance) per trovare eventuali problemi di usabilità, migliorare la grafica, ecc. Questo ci permetterà di implementare gli strati sottostanti in parallelo o addirittura affidandoli ad un altro team. Strategie di questo genere vengono spesso utilizzate nelle cosiddette metodologie Agili.

Aggiunta delle dipendenze

Inizialmente avremo bisogno di queste dipendenze:

  • javaee-api ver. 6, jstl ver 1.2 e junit 4.8, già configurate nella prima puntata;
  • i moduli spring-core e spring-webmvc di Spring framework, oltre alla libreria spring-test necessaria per l’integrazione con JUnit.

Per aggiungere queste dipendenze è sufficiente aggiungere queste righe nella sezione del file pom.xml:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>${spring.version}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${spring.version}</version>
</dependency>

e aggiungere una sezione :

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>3.0.5.RELEASE</spring.version>
  </properties>

Configurazione di Spring

Spring cerca automaticamente nel classpath un file nominato applicationContext.xml, questo file va creato nella cartella src/main/resources e per il momento conterrà solamente poche direttive:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

  <context:annotation-config/>

  <context:component-scan base-package="it.artera.springtut">

</beans>

Da notare:

  • le molte dichiarazioni di namespace che vediamo in testa al file in realtà al momento non sono utilizzate, verranno però utilizzate nei prossimi articoli quando finalmente implementeremo l’interazione “vera” con database e utilizzeremo transazioni;
  • il tag attiva la registrazione dei JavaBean tramite le annotazioni, una funzionalità molto comoda che sostituisce le lunghe configurazioni XML che si usavano in passato;
  • il tag attiva il riconoscimento automatico dei componenti dell’applicazione (come i controller web), sempre tramite annotazioni.

Configurazione di web.xml

Nel file src/main/webapp/WEB-INF/web.xml vanno copiate
queste configurazioni:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">

 <display-name>Spring 3 Tutorial</display-name>

  <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <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>*.html</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

Linkografia