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


    5.5. Ajouter une simple servlet

    Une application web avec une seule page JSP et sans servlet configurée est très peu utile. Ajoutons une simple servlet à cette application et modifions les fichiers pom.xml et web.xml en conséquence. Pour commencer, nous allons devoir créer un nouveau package dans src/main/java nommé org.sonatype.mavenbook.web :

    $ mkdir -p src/main/java/org/sonatype/mavenbook/web
    $ cd src/main/java/org/sonatype/mavenbook/web

    Une fois que vous avez créé ce package, allez dans le répertoire src/main/java/org/sonatype/mavenbook/web et créez une classe SimpleServlet dans le fichier SimpleServlet.java, qui contient le code suivant :

    Exemple 5.6. Classe SimpleServlet

    package org.sonatype.mavenbook.web;
    
    import java.io.*;
    import javax.servlet.*;                                                         
    import javax.servlet.http.*;
    
    public class SimpleServlet extends HttpServlet {
        public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
            throws ServletException, IOException {
        
            PrintWriter out = response.getWriter();
            out.println( "SimpleServlet Executed" );
            out.flush();
            out.close();
        }
    }

    Notre classe SimpleServlet est très simple : une servlet qui écrit un message simple sur le Writer de la réponse. Pour ajouter cette servlet à votre application web et l'associer à l'URL d'une requête, ajoutez les balises servlet et servlet-mapping de l'Exemple 5.7, « Configurer la Servlet » dans le fichier web.xml de votre projet. Le fichier web.xml se trouve dans src/main/webapp/WEB-INF.

    Exemple 5.7. Configurer la Servlet

    <!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-mapping>
        <servlet-name>simple</servlet-name>
        <url-pattern>/simple</url-pattern>
      </servlet-mapping>
    </web-app>

    Tout est en place pour tester la servlet ; la classe est bien dans src/main/java et le fichier web.xml a été mis à jour. Avant que vous ne lanciez le plugin Jetty, compilez votre projet en exécutant mvn compile :

    ~/examples/ch-simple-web/simple-webapp $ mvn compile
    ...
    [INFO] [compiler:compile]
    [INFO] Compiling 1 source file to \
    ~/examples/ch-simple-web/simple-webapp/target/classes
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Compilation failure
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[4,0] \
      package javax.servlet does not exist
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[5,0] \
      package javax.servlet.http does not exist
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[7,35] \
      cannot find symbol
      symbol: class HttpServlet
      public class SimpleServlet extends HttpServlet {
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[8,22] \
      cannot find symbol
      symbol  : class HttpServletRequest
      location: class org.sonatype.mavenbook.web.SimpleServlet
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[9,22] \
      cannot find symbol
      symbol  : class HttpServletResponse
      location: class org.sonatype.mavenbook.web.SimpleServlet
    
    /src/main/java/org/sonatype/mavenbook/web/SimpleServlet.java:[10,15] \
      cannot find symbol
      symbol  : class ServletException
      location: class org.sonatype.mavenbook.web.SimpleServlet
    

    La compilation échoue car votre projet Maven n'a pas la dépendance vers l'API Servlet. Dans la section suivante, nous allons ajouter l'API Servlet au POM de notre projet.