import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.net.*; public class MaServlet extends HttpServlet { /** * L'url courante */ String urlCourante = "http://www.cict.fr"; /** * Gestion des requêtes GET */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // la méthode doGet doit pouvoir renvoyer plusieurs pages : // - la page contenant la définition des cadres (frames) // - la page d'attente // - la page de l'applet // pour gérer cela nous allons utiliser un paramètre : "page" // tente de recuperer le parametre de nom "page" String pageParam = request.getParameter("page"); // permet de visualiser sur au niveau de la console Tomcat une information // ici le paramêtre de nom "page" System.out.println("Get page = "+pageParam); // on prépare la réponse response.setContentType("text/html"); PrintWriter out = new PrintWriter (response.getOutputStream()); // s'il n'y a pas de paramêtre : if (pageParam == null) { // on renvoie la page avec les frames out.println(""); out.println("Resultat de ma Servlet GET"); out.println(""+ // la première frame sera renvoyé par la servlet si on passe // en paramêtre le nom "main" ""+ // la seconde frame sera renvoyé par la servlet si on passe // en paramêtre le nom "applet" ""+ ""+ ""+ // petit message d'erreur si on n'a pas de frames "<H2>Frame Alert</H2><P>"+ "This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client."); out.println("</html>"); out.close(); } else if (pageParam.equalsIgnoreCase("main")) { // on renvoie la frame principale out.println("<html>"); out.println("<body>Veuillez patienter l'application est en cours d'initialisation"); out.println("</body>"); out.println("</html>"); out.close(); } else if (pageParam.equalsIgnoreCase("applet")) { // on renvoie la frame qui référence l'applet out.println("<html>"); out.println("<body><center>"); // l'applet se trouve dans le répertoire tomcat/webapps/examples/servlets out.println("<APPLET CODEBASE = \"..\""+ "CODE = \"MonApplet.class\""+ "NAME = \"MonApplet\" "+ "WIDTH = 400 HEIGHT = 15 HSPACE = 0 VSPACE = 0 ALIGN = middle>"); // on peut lui passer des paramêtres // ici une URL à afficher // l'URL peut être modifiée par un autre thread donc il faut // se protéger. synchronized(urlCourante) { out.println("<param name=url value=\""+urlCourante+"\">"); } out.println("Le navigateur n'est pas compatible Java"); out.println("</APPLET>"); out.println("</center></body>"); out.println("</html>"); out.close(); } } /** * Gestion des requêtes POST */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // tente de recuperer le parametre de nom url // l'URL peut être lue ou modifiée par un autre thread donc il faut // se protéger. synchronized(urlCourante) { urlCourante = request.getParameter("url"); } System.out.println("Post url = "+urlCourante); // on renvoie une page identique à celle qui nous a amené ici response.setContentType("text/html"); PrintWriter out = new PrintWriter (response.getOutputStream()); out.println("<html>"); out.println("<head><title>Resultat de ma Servlet POST</title></head>"); out.println("<body>"); out.println("<CENTER>"+ "<H1>Ma Servlet</H1>"+ "<H2>Interface de modification</H2>"+ "</CENTER>"); // le formulaire renverra les modifs à cette méthode out.println("<FORM action=../servlet/MaServlet method=POST>"); out.println("<BR><BR> Tapez l'URL de la nouvelle page et appuyez sur \"Envoyer\"."); out.println("<BR><BR><input type=text size=100 name=url value=\""+ // si l'URL courante est positionnée on la renvoie (urlCourante!=null?urlCourante:"")+"\">"); out.println("<BR><BR><input type=submit value=\"Envoyer\"><input type=reset value=\"Effacer\"></form>"); out.println("</body></html>"); out.close(); } /** * Renvoie des infos sur la servlet */ public String getServletInfo() { return "Servlet de test"; } }