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
Ajout de 3 context-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