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.

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.1439060955.txt.gz · Dernière modification : 2015/08/08 21:09 de root