bin/startup.sh
ou (sous Windows) :
bin\startup
Éditer le fichier $TOMCAT_HOME/conf/tomcat-users.xml et ajouter les deux lignes suivantes avant la dernière balise fermante :
<role rolename="manager-gui" /> <user username="admin" password="admin" roles="manager-gui" />
pour définir un utilisateur admin/admin qui pourra gérer les applications Web
Arrêter Tomcat (en ligne de commande) :
bin/shutdown.sh
ou
bin\shutdown
Dans web/ ajouter le fichier index.html contenant
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebCRIM</title> </head> <body> <h1>Bienvenue !</h1> </body> </html>
Dans le dossier web/WEB-INF ajouter le fichier web.xml qui décrit votre application :
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>WebCRIM</display-name> <description>Ma première application Web en Java !</description> </web-app>
jar -cvf webcrim.war *
Dans le dossier $TOMCAT_HOME/conf/Catalina/localhost, créer un fichier webcrim.xml avec le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="[chemincompletdevotreprojet]/web" privileged="true" allowLinking="true" crossContext="true" reloadable="true" path="/webcrim"> </Context>
Attention sous Windows, on remplacera les contre-obliques par les obliques, ex :
docBase="C:/coursjava/20140402/webcrim/web"
plutôt que :
docBase="C:\coursjava\20140402\webcrim\web"
Pour permettre la compilation de la classe de servlet, ajouter le fichier $TOMCAT_HOME/lib/servlet-api.jar au build path du projet Eclipse.
Créer une classe fr.crim.a2013.web.Bonjour dans le dossier web/WEB-INF/src avec le contenu suivant :
package fr.crim.a2013.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Bonjour extends HttpServlet { /** Serial version uid. */ private static final long serialVersionUID = -3761256026297694930L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<!DOCTYPE html>"); writer.println("<html>"); writer.println("<head>"); writer.println("\t<meta charset=UTF-8>"); writer.println("\t<title>Bonjour à tous !</title>"); writer.println("</head>"); writer.println("<body>"); writer.println("<h1>Bonjour !</h1>"); writer.println("</body>"); writer.println("</html>"); } }
Compléter le fichier web/WEB-INF/web.xml :
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>CRIM - web</display-name> <description>Tests de servlets et JSP</description> <servlet> <servlet-name>Bonjour</servlet-name> <servlet-class>fr.crim.a2013.web.Bonjour</servlet-class> </servlet> <servlet-mapping> <servlet-name>Bonjour</servlet-name> <url-pattern>/bonjour</url-pattern> </servlet-mapping> </web-app>
Tester votre servlet à l'adresse http://localhost:8080/webcrim/bonjour
Si le titre affiché dans la fenêtre du navigateur comporte un problème d'accent,
dans votre servlet, changer la ligne :
response.setContentType("text/html");
en :
response.setContentType("text/html; charset=UTF-8");
pour forcer l'encodage de la réponse
Objectif : présenter une page avec un formulaire de saisie du prénom et à la
soumission du formulaire, saluer l'internaute par son prénom.
Pour cela, on va créer une nouvelle servlet fr.crim.a2013.web.BonjourPersonnalise avec le contenu suivant :
package fr.crim.a2013.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class BonjourPersonnalise extends HttpServlet { /** * Bonjour [prenom] */ private static final long serialVersionUID = 8262291579315542220L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // On récupère le prénom passé en paramètre URL String prenom = request.getParameter("prenom"); // Et on écrit le contenu de la page response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<!DOCTYPE html>"); writer.println("<html>"); writer.println("<head>"); writer.println("\t<meta charset=\"UTF-8\">"); writer.println("\t<title>Bonjour personnalisé</title>"); writer.println("</head>"); writer.println("<body>"); // Bonjour personnalisé if (prenom != null) { writer.println("<h1>Bonjour "+prenom+" !</h1>"); } // Le formulaire de saisie writer.println("<br/>Indiquez votre prénom et cliquez sur le bouton Saluer !"); writer.println("<form method=\"get\">"); writer.println("<label>Prénom :</label>"); writer.println("<input type=\"text\" name=\"prenom\" />"); writer.println("<input type=\"submit\" value=\"Saluer !\" />"); writer.println("</form>"); writer.println("</body>"); writer.println("</html>"); } }
Dans le projet Eclipse, on crée un nouveau fichier nommé bonjour_personnalise.jsp dans le dossier web avec le contenu suivant :
<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%> <% // Récupération du paramètre URL String prenom = request.getParameter("prenom"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Bonjour à vous</title> </head> <body> <% if (prenom != null) { %> <h1>Bonjour <%= prenom %> !</h1> <% } %> <br/>Indiquez votre prénom et cliquez sur le bouton Saluer ! <form method="get"> <label>Prénom :</label> <input type="text" name="prenom" /> <input type="submit" value="Saluer !" /> </form> </body> </html>
Une URL peut être associée à une JSP via une règle dans le fichier web/WEB-INF/web.xml :
<servlet> <servlet-name>BonjourEnJSP</servlet-name> <jsp-file>/bonjour_personnalise.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>BonjourEnJSP</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
Avec la configuration ci-dessus, notre JSP est aussi accessible à l'adresse http://localhost:8080/webcrim/hello
Le 3ème et dernier exercice noté dans le cadre du contrôle continu du
2nd semestre consistera en une transposition web de votre programme
"Concordancier des misérables".
Vous fournirez une application Web Java sous forme de fichier .war
autonome (contenant les sources Java) qui pourra être testé en le
déposant simplement dans le dossiers webapps d'un moteur de servlet type
Apache Tomcat.
Le fichier .war devra contenir toutes les bibliothèques nécessaires au fonctionnement de votre application (même le fichier jar de sqlite).
Il vous est demandé de transposer votre projet "Concordancier" dans l'état où vous l'avez rendu à F. Glorieux.
Pour faciliter le déploiement de vos rendus sur une même instance de
Tomcat (par exemple dev.fictif.org), il vous est demandé de respecter le nommage suivant pour vos
wars : concordancier-{prenom}{initialedunom}.war
Ex : concordancier-pierred.war et accès à l'adresse
http://localhost:8080/concordancier-pierred/
ou http://dev.fictif.org:8080/concordancier-pierred/
Note : la page d'accueil de votre webapp devra présenter le moteur de recherche ou un lien vers le moteur de recherche.
Le rendu est attendu pour le 25/04 à minuit
Pour obtenir un chemin sur le disque à partir d'un chemin relatif dans la webapp
String path = getServletConfig().getServletContext().getRealPath("index.html");
Anonymous