Un servlet est un peu comme un applet par le fait qu'elle possède une méthode init() qui agit en tant que constructeur. Puisque l'environnement de servlet prend soin d'instantier la servlet, un constructeur explicite n'est pas nécessaire. N'importe quel code d'initialisation que vous devez utiliser devrait être placé dans la méthode init() puisque cette méthode est appelée lorsque le servlet est chargée par le conteneur de servlet.
doGet() est appelée à la suite d'une requête de type HTTP GET. Cela se passe généralement lorsqu'un utilisateur clique sur un lien ou lorsque celui-ci entre une URL dans la barre d'adresse du navigateur.
La méthode doPost() est appelée en réponse d'une requête HTTP POST.
Les 2 méthodes sont appelées à partir de l'implémentation par défaut de la méthode service() se trouvant dans la classe de base HttpServlet
Fondamentalement le navigateur demande toujours des pages par l'intermédiaire de GET et peut envoyer des données sous les 2 formes GET et POST. Les 2 seules différences résident dans le fait que :
GET est restreint au niveau de la taille des paramètres envoyés au serveur. Cela veut dire qu'il est, la plupart du temps, préférable d'envoyer des données avec la méthode POST.
En envoyant des données par l'intermédiaire de GET évoque également une question concernant la sécurité puisqu'elles sont ajoutées à la suite de l'URL.
Pour cette raison il est plus prudent d'utiliser la méthode POST pour envoyer des données au serveur.
L'interface ServletContext inclut les méthodes getMajorVersion() et getMinorVersion() pour vous indiquer quelle version de l'API Servlet est utilisée.
Un petit exemple :
//Si le moteur de servlet implémente la spec 2.4 de l'API servlet
//majorVersion est égal à 2int majorVersion = getServletContext().getMajorVersion();
//minorVersion est égal à 4int minorVersion = getServletContext().getMinorVersion();
Pour pouvoir partager des variables entre vos pages JSP et vos servlets, vous devez savoir comment créer et accéder à ces variables depuis vos servlets.
Les différents exemples qui vont suivre dépendent de la portée, ou si vous préferez, la durée de vie de vos objets.
L'objet ServletConfig est une interface. Cette interface contient les 4 méthodes suivantes
getInitParameter(java.lang.String name)
Cette méthode retourne un String contenant le paramètre d'initialisation de la servlet correspondant au paramètre name
getInitParameterNames()
Cette méthode retourne un objet Enumération contenant les paramètres d'initialisation de la servlet
getServletContext()
Cette méthode retourne une référence de l'interface ServletContext
C'est la méthode la plus valable car elle permet de partager l'information à travers l'application
getServletName()
Cette méthode retourne un String contenant le nom de l'instance de la servlet
Placer la définition <init-param> dans la description de votre servlet dans le fichier web.xml comme ceci
<servlet>
<servlet-name>maServlet</servlet-name>
<display-name>Ma Servlet</display-name>
<description>Ce que fait ma servlet</description>
<servlet-class>com.servlet.MaServlet</servlet-class>
<init-param>
<param-name>MON_PARAM</param-name>
<param-value>Bonjour</param-value>
</init-param>
</servlet>
Puis dans le code de votre servlet, utilisez ceci pour récupérer la valeur de MON_PARAM
getInitParameter("MON_PARAM");
Si vous désirez mettre plus de paramétres, il suffit d'ajouter des déclarations <init-param> comme ceci
URL urlservlet = new URL("http://localhost:8080/imed/ImageMapServlet");
HttpURLConnection connExtension = (HttpURLConnection)urlservlet.openConnection();
FileInputStream in = new FileInputStream(image);
in.read(tableauImage);
in.close();
HttpURLConnection connImage = (HttpURLConnection)urlservlet.openConnection();
connImage.setDoInput(true);
connImage.setDoOutput(true);
connImage.setUseCaches(false);
connImage.setRequestProperty("Content-Type","application/octet-stream");
DataOutputStream out = new DataOutputStream(connImage.getOutputStream());
out.write(tableauImage, 0, tableauImage.length);
out.flush();
out.close();
Coté servlet
// Récupération du flux entrant
java.io.DataInputStream dis = new java.io.DataInputStream(request.getInputStream());
dis.readFully(temp);
dis.close();
// Ecriture du fichier image sur le serveur
File cibleServeur = new File("/repertoire/nomfichier");
FileOutputStream fos = new FileOutputStream(cibleServeur);
fos.write(temp);
fos.close();
En implémentant l'interface HttpSessionListener comme ceci
package com.dvp.faq.j2ee;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
publicclass MyHttpSessionListener implements HttpSessionListener {
/**Cette méthode est appelée lors de la création de session*/publicvoid sessionCreated(HttpSessionEvent hse){
System.out.println("Une session vient d'être créée");
}
/**Cette méthode est appelée lors de la destruction de session*/publicvoid sessionDestroyed(HttpSessionEvent hse) {
System.out.println("Une session vient d'être détruite");
}
}
Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine)