Ceci est une ancienne révision du document !
Table des matières
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.
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 de la réponse :
Valeur par défaut du bean application : 123. Valeur saisie du bean local : 153
Exemple 4 - context-param et init-param
- 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>
- 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 { try (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>"); 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); } }
Rendu :
nom : utilisateur pass : mot de passe driver : com.mysql.jdbc.Driver nom2 : utilisateurServlet
