Voici les codes fournis pour les TP M4102
Les ressource ses trouvent sur https://www.zandolite.com/M4102/TP3/.
Le conseil de Didier.
Le script de lancement de l'application TJWS doit être exécuté depuis le répertoire 'bin' de l'installation.
Le paramètre '-p' de la ligne de commande permet de spécifier le port d'écoute du serveur. ex :
java -p 8080 ...
Pour permettre le déploiement automatique des archives 'WAR' éventuellement modifiées pendant l'exécution de TJWS, associer à la propriété tjws.wardeploy.dynamically une valeur exprimée en secondes définissant l’intervalle de temps entre deux vérifications. ex :
java -Dtjws.wardeploy.dynamically=5 ...
Pour bénéficier d'un 'context path' respectant le nom d'une archive 'WAR', associer à la propriété tjws.wardeploy.warname-as-context la valeur yes. Par défaut, le 'context path' d'une application est la valeur précisée par le paramètre 'display-name' contenu dans le fichier descripteur de déploiement (web.xml). ex :
java -Dtjws.wardeploy.warname-as-context=yes ...
Le Tiny Java Web Server tjws.zip
Le fichier jquery.js
Le fichier json
Lancement sous Windows quand Linux n'est pas disponible à l'IUT :
cd .. set JDK_HOME=C:\Program Files\Java\jdk1.8.0_101 set SERVLET_API=lib\servlet.jar java -cp "%SERVLET_API%;lib\war.jar;lib\webserver.jar;lib\jsp.jar;lib\jspengine.jar;%JDK_HOME%\lib\tools.jar" -Dtjws.webappdir=webapps -Dtjws.wardeploy.warname-as-context=yes Acme.Serve.Main -a aliases.properties -p 80 -l -c cgi-bin -j gnu.jspengine.JspServlet -gnu.jspengine.JspServlet.scratchdir <nowiki>deploydir</nowiki>/~~~/_jsp -gnu.jspengine.JspServlet.classloadername <nowiki>classloader</nowiki>
Exemple d'arborescence
. ├── appli.war ├── compilation.sh ├── index.html ├── makewar.sh ├── src │ └── com │ └── iut │ └── servlets │ └── Action.java └── WEB-INF ├── classes │ └── com │ └── iut │ └── servlets │ └── Action.class ├── lib └── web.xml
Exemple de fichier web.xml :
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="M4201C" version="2.5"> <display-name>M4102C</display-name> <description>Cours M4102C - François MERCIOL</description> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <servlet> <servlet-name>ServletAction</servlet-name> <servlet-class>com.iut.servlets.Action</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletAction</servlet-name> <url-pattern>/action</url-pattern> </servlet-mapping> <servlet> <servlet-name>Date</servlet-name> <servlet-class>HorlogeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Date</servlet-name> <url-pattern>/date</url-pattern> </servlet-mapping> </web-app>
Exemple de classe Java :
import java.io.*; import java.util.Date; import java.text.*; import javax.servlet.*; import javax.servlet.http.*; public class HorlogeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); PrintWriter pw; response.setContentType("text/html"); pw=response.getWriter(); pw.println("<h1>"+ dateFormat.format(new Date())+"<h2>"); } }
Commandes utiles :
javac -cp ../Tjws/lib/servlet.jar -d --racine-des-classes-- --les-sources-- jar cf --mon-war-- WEB-INF jar uf --mon-war-- index.html
Si Fédora ne fonctionne pas :
"C:\Program Files\Java\jdk1.8.0_101\bin\javac.exe" -cp ../Tjws/lib/servlet.jar -d --racine-des-classes-- --les-sources-- "C:\Program Files\Java\jdk1.8.0_101\bin\jar.exe" cf --mon-war-- WEB-INF "C:\Program Files\Java\jdk1.8.0_101\bin\jar.exe" uf --mon-war-- index.html
Vous pouvez télécharger la libraire Java pour utiliser JSON :
$.ajax({ url : 'http://localhost:8080/Demo/myServlet', dataType : 'json', type : 'GET', data : { name : 'John', location : 'Boston' }, success : function(data) { if (data.firstname=='Bill') console.log("C'est Bill !"); }, error : function() { console.log('Grave erreur !'); } }); console.log("Une petite trace ...");
import org.json.simple.JSONArray; import org.json.simple.JSONObject; JSONObject jsonObject; JSONArray jsonArray; jsonObject = new JSONObject (); jsonObject.put ("type", f.isDirectory () ? "d" : "f"); jsonObject.put ("name", f.getName ()); jsonArray.add (jsonObject); response.setContentType ("application/json"); pw = response.getWriter (); pw.print (jsonObject.toJSONString ()); pw.flush ();
$ javac -cp ../Tjws/lib/servlet.jar:WEB-INF/lib/json-simple-1.1.1.jar -d WEB-INF/classes/ src/RemoteDir.java
Vous pouvez télécharger la libraire JQuery :
Le seveur pour le DNS dynamique est ici :