Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    6.4. Le module simple-web

    Le module simple-webapp est le second sous-module référençant le projet simple-parent. Cette application web dépend du sous-module simple-weather car elle contient des servlets mettant en forme les résultats de la recherche sur Yahoo! Météo.

    Exemple 6.4. POM du module simple-webapp

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                          http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.sonatype.mavenbook.multi</groupId>
        <artifactId>simple-parent</artifactId>
        <version>1.0</version>
      </parent>
    
      <artifactId>simple-webapp</artifactId>
      <packaging>war</packaging>
      <name>simple-webapp Maven Webapp</name>
      <dependencies>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.4</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.sonatype.mavenbook.multi</groupId>
          <artifactId>simple-weather</artifactId>
          <version>1.0</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>simple-webapp</finalName>
        <plugins>
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </project>

    Ce module simple-webapp contient une servlet très simple qui se contente de récupérer un code postal à partir d'une requête HTTP, d'appeler la classe WeatherService que nous venons de voir précédemment dans l'Exemple 6.3, « La classe WeatherService » et d'écrire le résultat dans le Writer de la réponse.

    Exemple 6.5. Servlet WeatherServlet du projet simple-webapp

    package org.sonatype.mavenbook.web;
    
    import org.sonatype.mavenbook.weather.WeatherService;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class WeatherServlet extends HttpServlet {
        public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
            throws ServletException, IOException {
            String zip = request.getParameter("zip" );
            WeatherService weatherService = new WeatherService();
            PrintWriter out = response.getWriter();
            try {
                out.println( weatherService.retrieveForecast( zip ) );
            } catch( Exception e ) {
                out.println( "Error Retrieving Forecast: " + e.getMessage() );
            }
            out.flush();
            out.close();
        }
    }

    La WeatherServlet instancie la classe WeatherService définie dans le projet simple-weather. Le code postal fourni en paramètre de la requête est passé à la méthode retrieveForecast() et le résultat est écrit dans le Writer de la réponse.

    Enfin, pour que tout cela fonctionne, il faut déclarer la servlet dans le fichier web.xml du module simple-webapp. Ce fichier se trouve dans le répertoire src/main/webapp/WEB-INF. Les balises servlet et servlet-mapping du fichier web.xml associent l'URI /weather à la servlet WeatherServlet, comme le montre l'Exemple 6.6, « Fichier web.xml du module simple-webapp ».

    Exemple 6.6. Fichier web.xml du module simple-webapp

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
      <servlet>
        <servlet-name>simple</servlet-name>
        <servlet-class>org.sonatype.mavenbook.web.SimpleServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>weather</servlet-name>
        <servlet-class>org.sonatype.mavenbook.web.WeatherServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>simple</servlet-name>
        <url-pattern>/simple</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>weather</servlet-name>
        <url-pattern>/weather</url-pattern>
      </servlet-mapping>
    </web-app>