Table des matières

Exercices

Voici les codes fournis pour les TP M4102

TP3

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.

  • Sur un système Unix, utiliser la commande ./tjws.sh
  • Sur un système DOS/Windows, utiliser la commande tjws.bat

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 ...

Servlet

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

TP4

Servlet & Json

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

TP5

Vous pouvez télécharger la libraire JQuery :

TP6 & TP7

Le seveur pour le DNS dynamique est ici :