Programmation JEE/JSP
"Java Server Pages" ou JSP est une technologie basée sur Java permettant de créer des pages web dynamiques à l'aide du langage java en l'intégrant au contenu HTML de la page à l'aide de scriptlets. Le code source est ensuite pré-compilé en Java Applets, puis converti en fichier HTML par le serveur d'applications. Ainsi le code n'est pas diffusé et devient difficilement téléchargeable depuis un navigateur web à moins d'en avoir l'accès. De ce fait, les risques de piratage en sont réduits. On compare souvent cette technologie à PHP, mais son fonctionnement se rapproche bien plus d'ASP .NET car le code est compilé et non interprété.
Installation.
Windows et Ubuntu ne permettent pas de lire les fichiers .jsp par défaut. Il faut donc télécharger et installer un serveur d'application Java EE tel que :
et bien d'autres encore.
Pour Tomcat, une fois lancé (dans Windows : "démarrer, exécuter..., services.msc", ou bien en commande DOS : "net start "Tomcat7"") il suffit de placer les fichiers .jsp dans le répertoire adéquat pour qu'ils soient interprétés par le serveur (par défaut sur Windows 7 dans C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\examples\). L'URL pointant vers ce répertoire est http://localhost:8080/examples/.
Directives JSP.
@page.
Définit le code généré durant le traitement de la page JSP
<%@page contentType="text/html"
 pageEncoding="UTF-8"
 errorPage="erreur.jsp"
 import="java.util.*"
Attributs :
@include.
Permet d'inclure une autre ressource dans la page JSP
 <%@include file="./chunk.jsp" %>
@taglib.
Permet d'utiliser une bibliothèque de balises JSP en utilisant un espace de nom.
<%-- Défini l'espace de nom "fmt" pour utiliser une bibliothèque de balises --%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%-- Par la suite on utilise l'espace de nom fmt pour les balises de la bibliothèque --%>
<fmt:setBundle basename="informatique.ressources" />
<fmt:message key="service" />
Scriptlets.
Les scriptlets permettent l'injection de scripts interprétables dans une pile HTML.
Déclaration de variables ou de méthodes
 double tva=1.21;
 double calculTarif(double prix)
 return prix*tva;
%>
<% %>.
Insertion d'instructions de code
 double tva=1.21;
 out.println(Double.parseDouble(request.getParameter("prix"))*tva);
Évaluation d'expression, le résultat est retourné en out.println()
<%=new Date().toLocalString() %>
<%-- --%>.
Commentaires
<%-- Ceci est un commentaire --%>
Contrairement à un commentaire HTML standard entre codice_1 et codice_2, les commentaires JSP entre codice_3 et codice_4 ne sont pas écrits dans la page HTML générée.
Exemple.
<%-- index.jsp --%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"
 errorPage="erreur.jsp"
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Insert title here</title>
 </head>
 <body>
 String[] langages = {"Java", "CLisp", "Scheme", "OCaml"};
 <%
 // levée d'une ArrayIndexOutOfBoundsException
 for (int i=0; i < 4; i++) {
 out.println(langages[i]);
 %>
 </body>
</html>
Lorsqu'une erreur est levée par exemple en remplaçant le nombre d'itérations de 4 à 5, la directive page renvoie sur erreur.jsp
<%-- erreur.jsp --%>
<%@ page isErrorPage="true"%>
<html>
 <body>
 exception levée <b> <%= exception %> </b>
 <hr>
 <h3>trace de la pile</h3>
 <pre>
 java.io.PrintWriter pw = new java.io.PrintWriter(out);
 exception.printStackTrace(pw);
 </pre>
 </body>
</html>
Objets implicites.
Ensemble de variables prédéfinies pour accéder directement à certains objets
request.
permet d'avoir une référence à HttpServletRequest utilisé pour contacter la JSP
response.
permet d'avoir une référence à HttpServletResponse qui transfert le résultat du traitement de la JSP au client
pageContext.
permet d'avoir un accès à pageContext de la JSP.
session.
permet d'avoir une référence à HttpSession associé au client.
application.
référence ServletContext associé à l'application contenant la JSP.
out.
référence le flux de sortie de JspWriter permettant d'écrire dans la réponse HTTP.
config.
permet de référencer ServletConfig associé à la JSP.
exception.
est disponible seulement dans une page dédiée aux erreurs et permet de référencer Exception qui redirige sur cette page de gestion d'erreur.
Balises JSP.
jsp:useBean.
Crée une instance d'un objet javabean.
Attributs :
Exemple :
<jsp:useBean>
 id="leManager"
 type="pack.Personne"
 class="pack.Manager"
 scope="request"
</jsp:useBean>
jsp:getProperty.
Prend la valeur d'une propriété d'un javabean.
Attributs :
Exemple :
<jsp:getProperty name="leManager" property="nom" />
jsp:setProperty.
Assigne une valeur à la propriété d'un javabean.
Attributs :
Exemple :
<jsp:useBean id="manager" scope="session" class="pack.Manager" type="pack.Manager" />
<jsp:setProperty name="manager" property="heureConnexion" value="<%=new Date().toLocaleString()%>" />
jsp:include.
Inclut une ressource statique ou dynamique et possède la balise <jsp:param> permettant de transmettre des paramètres à la ressource par l'attribut name (nom du paramètre) et l'attribut "value" (valeur du paramètre).
Attributs :
Exemple :
<jsp:include page="/NbColis">
 <jsp:param name="code" value="<%=request.getParameter("codeClient") %>" />
</jsp:include>
jsp:forward.
Forward une requête client.
Exemple :
<jsp:forward page="/servlet/login"> 
 <jsp:param name="username" value="jsmith" /> 
</jsp:forward> 
jsp:plugin.
Gère l'insertion d'un applet dans une page JSP.
Attributs :
Exemple :
<jsp:plugin type=applet code="Molecule.class" codebase="/html"> 
 <jsp:params> 
 <jsp:param name="molecule" value="molecules/benzene.mol" /> 
 </jsp:params> 
 <jsp:fallback> 
 <p>Impossible de charger l'applet</p> 
 </jsp:fallback> 
</jsp:plugin>

Développer en Java/Construction de projets

Technologie/Matériaux/Désignation des polymères

Désignation par le monomère.
Les homopolymères sont constitués de motifs identiques, désignés ici par R, qui forment une chaîne linéaire (R-R-R-R-…) plus ou moins ramifiée ; exemple de ramification :
 R
 R-R-R…
Le motif R est dérivé d'une molécule appelée monomère, ou éventuellement de deux molécules s'associant (cas de la polycondensation). Un homopolymère est appelé « poly-"monomère" » ; par exemple, si le monomère est l'éthylène, le polymère est le polyéthylène :
Le motif peut être formé par réaction de plusieurs monomères ; la réaction de polymérisation est alors qualifiée de « polycondensation ».
Copolymères.
Les copolymères comportent plusieurs motifs. La structure peut être :

Programmation objet et géométrie/SmallTalk par l'exemple