Outils pour utilisateurs

Outils du site


helloworld:web:java:servlet

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld:web:java:servlet [2015/08/08 21:18] – Utilisation de BeanPersonne roothelloworld:web:java:servlet [2020/05/11 00:22] (Version actuelle) – Suppression de la taille par défaut pour les images root
Ligne 1: Ligne 1:
-Un ''servlet'' utilise du code ''Java'' dans lequel est mis du code ''HTML''.+Un ''servlet'' utilise du code ''Java'' dans lequel est mis du code ''HTML'' ou ''XML''. Toutes les données de la page étant générées par la ''servlet'', il est possible de générer du ''HTML 4.01'' ou du ''HTML 5'' sans aucune difficulté.
  
-<note>Tous les exemples ci-dessous utilisent le [[helloworld:design_pattern:bean:java|BeanPersonne]].</note>+<WRAP center round info 60%> 
 +Tous les exemples ci-dessous utilisent le [[helloworld:design_pattern:bean:java|BeanPersonne]]. 
 +</WRAP>
  
 =====Cycle de vie===== =====Cycle de vie=====
-{{:wiki:helloworld:web:java:servlet:cycle_de_vie_1.jpg?300|Cycle de vie 1}} {{:wiki:helloworld:web:java:servlet:cycle_de_vie_2.jpg?300|Cycle de vie 2}}+{{:helloworld:web:java:servlet:cycle_de_vie_1.jpg|Cycle de vie 1}} {{:helloworld:web:java:servlet:cycle_de_vie_2.jpg|Cycle de vie 2}}
  
-[[http://javawebaction.blogspot.fr/2011/07/what-is-java-servlet-life-cycle-and-how.html|Source]] {{:helloworld:web:java:servlet:java_web_development.html.maff|Archive}}+[[http://javawebaction.blogspot.com/2011/07/what-is-java-servlet-life-cycle-and-how.html|What is Java Servlet Life Cycle and how to explain it]] {{ :helloworld:web:java:servlet:java_web_development_what_is_java_servlet_life_cycle_and_how_to_explain_it_2020-04-26_12_14_05_am_.html |Archive du 09/07/2011 le 27/04/2020}}
  
  
 =====Création du projet===== =====Création du projet=====
-Nécessite un projet de type [[eclipse:howto:dwp|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.+Nécessite un projet de type [[ide:eclipse:projet|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.
  
-{{:wiki:helloworld:web:java:servlet:1.png|Étape 1}}{{:wiki:helloworld:web:java:servlet:2.png|Étape 2}}{{:wiki:helloworld:web:java:servlet:3.png|Étape 3}}{{:wiki:helloworld:web:java:servlet:4.png|Étape 4}}+{{:helloworld:web:java:servlet:1.png|Étape 1}}{{:helloworld:web:java:servlet:2.png|Étape 2}}{{:helloworld:web:java:servlet:3.png|Étape 3}}{{:helloworld:web:java:servlet:4.png|Étape 4}}
  
 La création d'une servlet crée automatiquement un fichier ''web.xml''. 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 [[https://forums.gentoo.org/viewtopic-t-934004.html|Gentoo]] {{:helloworld:web:java:servlet:gentoo-934004.maff|Archive}}, à savoir :+Si un message de type ''IWAE0035I No servlets exist to add'' apparait sous Gentoo, il faut suivre les instructions de [[https://forums.gentoo.org/viewtopic-t-934004.html|www-servers/tomcat-7.0.29-r1 with Eclipse WST]] {{ :helloworld:web:java:servlet:gentoo_forums_view_topic_-_solved_www-servers_tomcat-7.0.29-r1_with_eclipse_wst_2020-04-26_12_11_16_am_.html |Archive du 20/08/2012 le 27/04/2020}}, à savoir :
 <code bash> <code bash>
 cd /usr/share/tomcat-8/lib cd /usr/share/tomcat-8/lib
Ligne 22: Ligne 24:
 ln -s /usr/share/tomcat-servlet-api-3.1/lib/el-api.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/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  ln -s /usr/share/tomcat-servlet-api-3.1/lib/servlet-api.jar 
 </code> </code>
Ligne 31: Ligne 32:
  
 import java.io.IOException; import java.io.IOException;
 +import java.io.OutputStreamWriter;
 import java.io.PrintWriter; import java.io.PrintWriter;
 +import java.nio.charset.StandardCharsets;
  
 import javax.servlet.ServletException; import javax.servlet.ServletException;
Ligne 51: Ligne 54:
   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {   {
-    PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true); +    response.setCharacterEncoding ("UTF-8"); 
-    +    PrintWriter out = response.getWriter ();
     response.setContentType ("text/html");     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 ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
     out.println ("<html>");     out.println ("<html>");
Ligne 132: Ligne 135:
   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {   {
-    PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true); +    response.setCharacterEncoding ("UTF-8"); 
-    +    PrintWriter out = response.getWriter ();
     response.setContentType ("text/html");     response.setContentType ("text/html");
  
Ligne 183: Ligne 186:
     doGet (request, response);     doGet (request, response);
   }   }
- 
 } }
 </file> </file>
Ligne 219: Ligne 221:
   {   {
     BeanPersonne pers = new BeanPersonne ();     BeanPersonne pers = new BeanPersonne ();
-    +
     pers.setTaille (123);     pers.setTaille (123);
     config.getServletContext ().setAttribute ("beanApp", pers);     config.getServletContext ().setAttribute ("beanApp", pers);
-    +
     super.init (config);     super.init (config);
   }   }
Ligne 232: Ligne 234:
   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {   {
-    try (PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true)) +    response.setCharacterEncoding ("UTF-8"); 
-    +    PrintWriter out = response.getWriter (); 
-      BeanPersonne pers = new BeanPersonne (); +    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\">"); +    request.getSession (true).setAttribute ("beanSession", pers); 
-      out.println ("<html>"); + 
-      out.println ("<head>"); +    response.setContentType ("text/html"); 
-      out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); + 
-      out.println ("<title>Insert title here</title>"); +    out.println ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"); 
-      out.println ("</head>"); +    out.println ("<html>"); 
-      out.println ("<body>"); +    out.println ("<head>"); 
-      out.println ("  <br />"); +    out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); 
-      out.println ("  <form method=\"post\" action=\"Servlet3\">"); +    out.println ("<title>Insert title here</title>"); 
-      out.println ("    Taille : <input name=\"taille\" type=\"text\" /> <input type=\"submit\""); +    out.println ("</head>"); 
-      out.println ("      value=\"Submit\" />"); +    out.println ("<body>"); 
-      out.println ("  </form>"); +    out.println ("  <br />"); 
-      out.println ("</body>"); +    out.println ("  <form method=\"post\" action=\"Servlet3\">"); 
-      out.println ("</html>"); +    out.println ("    Taille : <input name=\"taille\" type=\"text\" /> <input type=\"submit\""); 
-    }+    out.println ("      value=\"Submit\" />"); 
 +    out.println ("  </form>"); 
 +    out.println ("</body>"); 
 +    out.println ("</html>");
   }   }
  
Ligne 263: Ligne 264:
   protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {   {
-    try ( PrintWriter out = new PrintWriter (new OutputStreamWriter (response.getOutputStream (), StandardCharsets.UTF_8), true)) +    response.setCharacterEncoding ("UTF-8"); 
-    +    PrintWriter out = response.getWriter (); 
-      BeanPersonne persApp = (BeanPersonne)getServletContext().getAttribute ("beanApp"); +    BeanPersonne persApp = (BeanPersonne) getServletContext ().getAttribute ("beanApp"); 
-      BeanPersonne persLoc = (BeanPersonne)request.getSession (true).getAttribute ("beanSession"); +    BeanPersonne persLoc = (BeanPersonne) request.getSession (true).getAttribute ("beanSession"); 
-      persLoc.setTaille (Integer.parseInt (request.getParameter ("taille")));+    persLoc.setTaille (Integer.parseInt (request.getParameter ("taille")));
  
-      response.setContentType ("text/html");+    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 ("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"); 
-      out.println ("<html>"); +    out.println ("<html>"); 
-      out.println ("<head>"); +    out.println ("<head>"); 
-      out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); +    out.println ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); 
-      out.println ("<title>Insert title here</title>"); +    out.println ("<title>Insert title here</title>"); 
-      out.println ("</head>"); +    out.println ("</head>"); 
-      out.println ("<body>"); +    out.println ("<body>"); 
-      out.println ("  Valeur par défaut du bean application : " + persApp.getTaille () + ".<br />"); +    out.println ("  Valeur par défaut du bean application : " + persApp.getTaille () + ".<br />"); 
-      out.println ("  Valeur saisie du bean local : " + persLoc.getTaille ()); +    out.println ("  Valeur saisie du bean local : " + persLoc.getTaille ()); 
-      out.println ("  <br />"); +    out.println ("  <br />"); 
-      out.println ("</body>"); +    out.println ("</body>"); 
-      out.println ("</html>"); +    out.println ("</html>");
-    }+
   }   }
- 
 } }
 </file> </file>
 Rendu du formulaire : Rendu du formulaire :
-{{:wiki:helloworld:web:java:servlet:rendu_ex3.png?312|Rendu exemple 3}}+{{:helloworld:web:java:servlet:rendu_ex3.png|Rendu exemple 3}}
 Rendu de la réponse : Rendu de la réponse :
 <code> <code>
Ligne 295: Ligne 294:
 Valeur saisie du bean local : 153 Valeur saisie du bean local : 153
 </code> </code>
 +
 +=====Exemple 3b - avec validation des données=====
 +Dans le cas d'une ''servlet'', la vérification des données se fait dans la méthode ''doPost''. Le ''Javascript'' peut être utilisé en pré-traitement.
 +
 +=====Exemple 4 - context-param et init-param=====
 +Ajout de 3 ''context-param''.
 +<file xml web.xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 +  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 +  version="3.1">
 +  <display-name>EL</display-name>
 +  <servlet>
 +    <servlet-name>Faces Servlet</servlet-name>
 +    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 +  </servlet>
 +  <context-param>
 +    <param-name>user</param-name>
 +    <param-value>utilisateur</param-value>
 +  </context-param>
 +  <context-param>
 +    <param-name>password</param-name>
 +    <param-value>mot de passe</param-value>
 +  </context-param>
 +  <context-param>
 +    <param-name>driver</param-name>
 +    <param-value>com.mysql.jdbc.Driver</param-value>
 +  </context-param>
 +  …
 +</web-app>
 +</file>
 +
 +<file java Servlet4.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.WebInitParam;
 +import javax.servlet.annotation.WebServlet;
 +import javax.servlet.http.HttpServlet;
 +import javax.servlet.http.HttpServletRequest;
 +import javax.servlet.http.HttpServletResponse;
 +
 +/**
 + * Servlet implementation class Servlet4
 + */
 +@WebServlet (urlPatterns = "/Servlet4", initParams = { @WebInitParam (name = "user2", value = "utilisateurServlet") })
 +public class Servlet4 extends HttpServlet
 +{
 +
 +  /**
 +   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 +        response)
 +   */
 +  protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 +  {
 +    response.setCharacterEncoding ("UTF-8");
 +    PrintWriter out = response.getWriter ();
 +    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>");
 +    out.println ("nom : " + getServletContext ().getInitParameter ("user") + "<br />");
 +    out.println ("pass : " + getServletContext ().getInitParameter ("password") + "<br />");
 +    out.println ("driver : " + getServletContext ().getInitParameter ("driver") + "<br />");
 +    out.println ("nom2 : " + getInitParameter ("user2"));
 +    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);
 +  }
 +}
 +</file>
 +Rendu :
 +<code>
 +nom : utilisateur
 +pass : mot de passe
 +driver : com.mysql.jdbc.Driver
 +nom2 : utilisateurServlet
 +</code>
 +
 +=====Exemple 5 - Cookies=====
 +<file java Servlet5.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.Cookie;
 +import javax.servlet.http.HttpServlet;
 +import javax.servlet.http.HttpServletRequest;
 +import javax.servlet.http.HttpServletResponse;
 +
 +/**
 + * Servlet implementation class Servlet5
 + */
 +@WebServlet ("/Servlet5")
 +public class Servlet5 extends HttpServlet
 +{
 +  /**
 +   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 +        response)
 +   */
 +  protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 +  {
 +    response.setCharacterEncoding ("UTF-8");
 +    PrintWriter out = response.getWriter ();
 +    String value = getCookie (request.getCookies (), "compteur");
 +    response.setContentType ("text/html");
 +    int compteur = 0;
 +    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 (value == null)
 +    {
 +      out.println ("Pas de cookie, allez cuisiner !!!");
 +    }
 +    else
 +    {
 +      compteur = Integer.parseInt (value);
 +      out.println ("compteur : " + compteur);
 +    }
 +    out.println ("  </p>");
 +    out.println ("</body>");
 +    out.println ("</html>");
 +    compteur++;
 +    Cookie c = new Cookie ("compteur", "" + compteur);
 +    c.setMaxAge (3600);
 +    response.addCookie (c);
 +  }
 +
 +  /**
 +   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 +        response)
 +   */
 +  protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 +  {
 +    doGet (request, response);
 +  }
 +
 +  // Renvoie la valeur d'un cookie.
 +  protected static String getCookie (Cookie[] cookies, String cookieName)
 +  {
 +    if (cookies == null)
 +    {
 +      return null;
 +    }
 +    for (int i = 0; i < cookies.length; i++)
 +    {
 +      if (cookieName.equalsIgnoreCase (cookies[i].getName ()))
 +      {
 +        return cookies[i].getValue ();
 +      }
 +    }
 +    return null;
 +  }
 +}
 +</file>
 +
 +Rendu 1 :
 +<code>
 +Pas de cookie, allez cuisiner !!!
 +</code>
 +
 +Rendu 2 :
 +<code>
 +compteur : 1
 +</code>
 +
 +=====Exemple 6 - Affichage d'une liste dans un tableau=====
 +La liste est générée par une classe Java et affiche un type [[helloworld:design_pattern:bean:java#cas_general|BeanPersonne]].
 +
 +<file java Liste6.java>
 +package com.llgc;
 +
 +import java.util.LinkedList;
 +import java.util.List;
 +
 +@ManagedBean
 +public class Liste6
 +{
 +  public static List <BeanPersonne> getListePersonne ()
 +  {
 +    LinkedList <BeanPersonne> liste = new LinkedList <> ();
 +    
 +    BeanPersonne personne = new BeanPersonne ();
 +    personne.setTaille (160);
 +    personne.setYeuxBleus (true);
 +    liste.add (personne);
 +    
 +    personne = new BeanPersonne ();
 +    personne.setTaille (170);
 +    personne.setYeuxBleus (true);
 +    liste.add (personne);
 +    
 +    personne = new BeanPersonne ();
 +    personne.setTaille (180);
 +    personne.setYeuxBleus (false);
 +    liste.add (personne);
 +    
 +    return liste;
 +  }
 +}
 +</file>
 +
 +<file java Servlet6.java>
 +package com.llgc;
 +
 +import java.io.IOException;
 +import java.io.PrintWriter;
 +import java.util.List;
 +
 +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 Servlet6
 + */
 +@WebServlet("/Servlet6")
 +public class Servlet6 extends HttpServlet {
 +  /**
 +   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 +   */
 +  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 +    response.setCharacterEncoding ("UTF-8");
 +    PrintWriter out = response.getWriter ();
 +    response.setContentType ("text/html");
 +    
 +    List <BeanPersonne> liste = Liste6.getListePersonne ();
 +
 +    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>");
 +    out.println ("    <table border=\"1\">");
 +    out.println ("      <tr>");
 +    out.println ("        <td>Taille</td>");
 +    out.println ("        <td>Yeux bleus</td>");
 +    out.println ("      </tr>");
 +    
 +    for (BeanPersonne beanPersonne : liste)
 +    {
 +      out.println ("      <tr>");
 +      out.println ("        <td>" + beanPersonne.getTaille () + "</td>");
 +      out.println ("        <td>" + beanPersonne.isYeuxBleus () + "</td>");
 +      out.println ("      </tr>");
 +    }
 +    out.println ("    </table>");
 +    
 +    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);
 + }
 +
 +}
 +</file>
 +
 +Rendu :
 +{{:helloworld:web:java:servlet:rendu_ex6.png|Rendu exemple6}}
helloworld/web/java/servlet.1439061491.txt.gz · Dernière modification : 2015/08/08 21:18 de root