Outils pour utilisateurs

Outils du site


helloworld:web:java:servlet

Ceci est une ancienne révision du document !


Un servlet utilise du code Java dans lequel est mis du code HTML.

<note>Tous les exemples ci-dessous utilisent le BeanPersonne.</note>

Cycle de vie

Création du projet

Nécessite un projet de type Dynamic Web Project. Une fois le projet généré, il faut créer la servlet. Pour cela : File|New|Servlet et choisissez comme Superclass javax.servlet.http.HttpServlet. Si la super classe n'est pas disponible, c'est que le Dynamic Web Project n'a pas été correctement créé. Ensuite cliquez sur Next|Next et demandez à implémenter les méthodes doGet et doPost en fonction des besoins.

Étape 1Étape 2Étape 3Étape 4

La création d'une servlet crée automatiquement un fichier web.xml.

Si un message de type IWAE0035I No servlets exist to add apparait sous Gentoo, il faut suivre les instructions de Gentoo Archive, à savoir :

cd /usr/share/tomcat-8/lib
ln -s /usr/share/eclipse-ecj-4.4/lib/ecj.jar 
ln -s /usr/share/tomcat-servlet-api-3.1/lib/el-api.jar 
ln -s /usr/share/tomcat-servlet-api-3.1/lib/jsp-api.jar 
ln -s /usr/share/tomcat-servlet-api-3.1/
ln -s /usr/share/tomcat-servlet-api-3.1/lib/servlet-api.jar 

Exemple 1 - La base

Servlet.java
package com.llgc;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class Servlet
 */
@WebServlet ("/Servlet")
public class Servlet extends HttpServlet
{
  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true);
 
    response.setContentType ("text/html");
 
    out.println ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
    out.println ("<html>");
    out.println ("<head>");
    out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
    out.println ("<title>Insert title here</title>");
    out.println ("</head>");
    out.println ("<body>");
    out.println ("  <p>");
    if (15 % 2 == 0)
    {
      out.print ("15 est un nombre pair.");
    }
    else
    {
      out.print ("15 est un nombre impair.");
    }
    out.println ("    <br />");
    switch (16 % 2)
    {
      case 0:
        out.print ("16 est un nombre pair.");
        break;
      default:
        out.print ("16 est un nombre impair.");
        break;
    }
    out.println ("  </p>");
    out.println ("</body>");
    out.println ("</html>");
  }
 
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    doGet (request, response);
  }
}

Rendu :

15 est un nombre impair. 
16 est un nombre pair.

Exemple 2 - Utilisation d'un Bean

Le Bean utilisé est celui d'une personne.

Servlet2.java
package com.llgc;
 
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class Servlet2
 */
@WebServlet ("/Servlet2")
public class Servlet2 extends HttpServlet
{
  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true);
 
    response.setContentType ("text/html");
 
    out.println ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
    out.println ("<html>");
    out.println ("<head>");
    out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
    out.println ("<title>Insert title here</title>");
    out.println ("</head>");
    out.println ("<body>");
    BeanPersonne perso1 = new BeanPersonne ();
    perso1.setTaille (170);
    perso1.setYeuxBleus (true);
    BeanPersonne perso2 = new BeanPersonne ();
    perso2.setTaille (160);
    perso2.setYeuxBleus (false);
    out.println ("  <p>");
    out.println ("    La personne 1 possède une taille de " + perso1.getTaille () + " cm et");
    if (!perso1.isYeuxBleus ())
    {
      out.print ("n'a pas");
    }
    else
    {
      out.print ("a");
    }
    out.println ("    les yeux bleus.<br />");
    out.println ("    La personne 2 possède une taille de " + perso2.getTaille () + " cm et");
    if (!perso2.isYeuxBleus ())
    {
      out.print ("n'a pas");
    }
    else
    {
      out.print ("a");
    }
    out.println ("    les yeux bleus.");
    out.println ("  </p>");
    out.println ("</body>");
    out.println ("</html>");
  }
 
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    doGet (request, response);
  }
 
}

Rendu :

La personne 1 possède une taille de 170 cm et a les yeux bleus.
La personne 2 possède une taille de 160 cm et n'a pas les yeux bleus.

Exemple 3 - Formulaire avec Bean global et session

Servlet3.java
package com.llgc;
 
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class Servlet3
 */
@WebServlet ("/Servlet3")
public class Servlet3 extends HttpServlet
{
  @Override
  public void init (ServletConfig config) throws ServletException
  {
    BeanPersonne pers = new BeanPersonne ();
 
    pers.setTaille (123);
    config.getServletContext ().setAttribute ("beanApp", pers);
 
    super.init (config);
  }
 
  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    try (PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true))
    {
      BeanPersonne pers = new BeanPersonne ();
 
      request.getSession (true).setAttribute ("beanSession", pers);
 
      response.setContentType ("text/html");
 
      out.println ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
      out.println ("<html>");
      out.println ("<head>");
      out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
      out.println ("<title>Insert title here</title>");
      out.println ("</head>");
      out.println ("<body>");
      out.println ("  <br />");
      out.println ("  <form method=\"post\" action=\"Servlet3\">");
      out.println ("    Taille : <input name=\"taille\" type=\"text\" /> <input type=\"submit\"");
      out.println ("      value=\"Submit\" />");
      out.println ("  </form>");
      out.println ("</body>");
      out.println ("</html>");
    }
  }
 
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    try ( PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true))
    {
      BeanPersonne persApp = (BeanPersonne)getServletContext().getAttribute ("beanApp");
      BeanPersonne persLoc = (BeanPersonne)request.getSession (true).getAttribute ("beanSession");
      persLoc.setTaille (Integer.parseInt (request.getParameter ("taille")));
 
      response.setContentType ("text/html");
 
      out.println ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
      out.println ("<html>");
      out.println ("<head>");
      out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
      out.println ("<title>Insert title here</title>");
      out.println ("</head>");
      out.println ("<body>");
      out.println ("  Valeur par défaut du bean application : " + persApp.getTaille () + ".<br />");
      out.println ("  Valeur saisie du bean local : " + persLoc.getTaille ());
      out.println ("  <br />");
      out.println ("</body>");
      out.println ("</html>");
    }
  }
 
}

Rendu du formulaire : Rendu exemple 3 Rendu de la réponse :

Valeur par défaut du bean application : 123.
Valeur saisie du bean local : 153
helloworld/web/java/servlet.1439061491.txt.gz · Dernière modification : 2015/08/08 21:18 de root