IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Servlets > Généralités
        Pourquoi n'y a-t-il pas de constructeur dans une servlet?
        Quelle est la différence entre les méthodes doGet() et doPost()?
        Comment connaitre la version de l'API servlet utilisée par un moteur de servlet?
        Comment accéder à un JavaBean depuis une servlet?
        Quel est l'objet ServletConfig et quelle est son utilité
        Comment modifier le Time Out par défaut de session?
        Comment modifier le Time Out par de session par programmation?
        Comment charger des servlets de l'application au démarrage de Tomcat?
        Comment lire un message d'erreur de Tomcat ?
        Comment placer et récupérer un paramétre d'initialisation d'une servlet?
        Comment uploader un fichier depuis une applet vers une servlet?
        Comment télécharger un fichier depuis une servlet?
        Comment faire pour gérer des actions à effectuer lors de la création ou suppression de session ?
        Comment faire pour gérer des actions à effectuer lors du démarrage ou de l'arrêt de l'application ?
        Comment récupérer le nom associé au contexte d'une application Web?

rechercher
precedent    sommaire    suivant    telecharger


Pourquoi n'y a-t-il pas de constructeur dans une servlet?
auteur : Stessy
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.


Quelle est la différence entre les méthodes doGet() et doPost()?
auteur : Stessy
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.


Comment connaitre la version de l'API servlet utilisée par un moteur de servlet?
auteur : Stessy
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 à 2
int majorVersion = getServletContext().getMajorVersion();
//minorVersion est égal à 4
int minorVersion = getServletContext().getMinorVersion();

Comment accéder à un JavaBean depuis une servlet?
auteur : Stessy
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.

Pour en savoir plus sur les différentes portées existantes, reportez vous à la section suivante : fr Quelles sont les différentes portées existantes?

  • page :

Dans cet exemple, le Bean est instancié comme une variable locale est n'est donc pas partageable entre différentes servlets.
com.developpez.beans.MyBean myBean = new com.developpez.beans.MyBean();
  • request :

Dans cet exemple, le Bean instancié sera accessible pendant toute la durée de la requête
com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) request.getAttribute("myBean");
if (myBean == null) 
{
 myBean = new com.developpez.beans.MyBean();
request.setAttribute("myBean", myBean); 
}
  • session :

Dans cet exemple, lorsque le Bean est instancié il est placé dans la session actuelle.
HttpSession session = request.getSession(true);
com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) session.getAttribute("myBean");
if (myBean == null) 
{
 myBean = new com.developpez.beans.MyBean();
session.setAttribute("myBean", myBean); 
}
  • application :

Dans ce dernier exemple, lorsque le Bean est instancié il est placé dans le contexte de la servlet.
com.developpez.beans.MyBean myBean = (com.developpez.beans.MyBean) getServletContext().getAttribute("myBean");
if (myBean == null) 
{
 myBean = new com.developpez.beans.MyBean();
getServletContext().setAttribute("counter", counter); 
}

Quel est l'objet ServletConfig et quelle est son utilité
auteur : Stessy
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


Comment modifier le Time Out par défaut de session?
auteur : bahamouth
Dans le fichier web.xml situé dans le répertoire WEB-INF de l'application, il suffit d'ajouter les lignes suivantes:
<session-config> 
   <session-timeout>60</session-timeout> 
</session-config>

Comment modifier le Time Out par de session par programmation?
auteur : Jaxofun
Comme ceci
request.getSession().setMaxInactiveInterval(int);

Comment charger des servlets de l'application au démarrage de Tomcat?
auteur : bahamouth
Dans le fichier web.xml du répertoire WEB-INF lors de la déclaration du servlet, rajouter la ligne:
<load-on-startup>1</load-on-startup>
Exemple:
<servlet> 
   <servlet-name>Controller</servlet-name> 
   <display-name>Controller</display-name> 
   <servlet-class>com.company.Controller</servlet-class> 
      <init-param> 
         <param-name>index</param-name> 
         <param-value>/index.jsp</param-value> 
      </init-param> 
   <load-on-startup>1</load-on-startup> 
</servlet>

Comment lire un message d'erreur de Tomcat ?
auteur : christopheJ
Ces messages sont composés de deux parties. Pour débugger il faut regarder la deuxieme partie qui commence après:
root cause
Ou enore le message
cause mere
L'erreur est alors indiquée sous la forme d'une exception.


Comment placer et récupérer un paramétre d'initialisation d'une servlet?
auteur : Righetto Dominique
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
<servlet> 
      <servlet-name>maServlet</servlet-name> 
      <display-name>Ma Servlet</display-name> 
      <description>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> 
      <init-param> 
         <param-name>MON_PARAM_2</param-name> 
         <param-value>Bonjour</param-value> 
      </init-param> 
</servlet>

Comment uploader un fichier depuis une applet vers une servlet?
auteur : SnorkyBZH
Coté applet :
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();

Comment télécharger un fichier depuis une servlet?
auteur : Stessy
Voici un exemple de code permettant de télécharger un fichier depuis le serveur vers le poste client
        response.setContentType("application/download"); 
        response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 


        ServletOutputStream out = response.getOutputStream(); 
        File file = null; 
        BufferedInputStream from = null; 
        try 
        { 
          //dans mon cas le filepath et le path complet après création d'un temp file 
          file = new File(filepath); 
          response.setContentLength((int) file.length()); 
          int bufferSize = 64 * 1024; 
          long time = System.currentTimeMillis(); 
          
          try { 
            from = new BufferedInputStream(new FileInputStream(file), bufferSize * 2); 
            byte[] bufferFile = new byte[bufferSize]; 
            for (int i = 0; ; i++) 
            { 
              int len = from.read(bufferFile); 
              if (len < 0) 
                break; 
              out.write(bufferFile, 0, len); 
            } 
            out.flush(); 
          } finally { 
            try { from.close(); } catch (Exception e) { } 
            try { out.close(); } catch (Exception e)  {} 
          } 
          time = (System.currentTimeMillis() - time) / 1000; // seconds download 
          double kb = (file.length() * 1.0 / 1024); 
          
          if (file != null) 
            file.delete(); 
        }   catch (Exception e)   { 
          
          return; 
        } finally { 
          try {   file.delete();}   catch (Exception ex) {} 
        }

Comment faire pour gérer des actions à effectuer lors de la création ou suppression de session ?
auteur : SEMPERE Benjamin
En implémentant l'interface HttpSessionListener comme ceci
package com.dvp.faq.j2ee; 

import javax.servlet.http.HttpSessionListener; 
import javax.servlet.http.HttpSessionEvent; 

public class MyHttpSessionListener implements HttpSessionListener { 

/**Cette méthode est appelée lors de la création de session*/ 
public void 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*/ 
public void 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)
<web-app>
   <listener>
      <listener-class>
              com.dvp.faq.j2ee.MyHttpSessionListener
      </listener-class>
   </listener>
</web-app>

Comment faire pour gérer des actions à effectuer lors du démarrage ou de l'arrêt de l'application ?
auteur : SEMPERE Benjamin
En implémentant l'interface ServletContextListener comme ceci
package com.dvp.faq.j2ee; 

import javax.servlet.ServletContextListener; 
import javax.servlet.ServletContextEvent; 

public class MyHttpServletContextListener implements ServletContextListener{ 

/**Cette méthode appelée lors du démarrage de l'application*/ 
public void contextInitialized(ServletContextEvent sce){ 
	System.out.println("L'application vient de démarrer");
} 

/**Cette méthode appelée lors de l'arret de l'application*/ 
public void contextDestroyed(ServletContextEvent sce){ 
	System.out.println("L'application vient de s'arreter");
} 
}
Ensuite, il suffit de référencer le listener dans le fichier web.xml (sous la balise racine)
<web-app>
   <listener>
      <listener-class>
              com.dvp.faq.j2ee.MyHttpServletContextListener
      </listener-class>
   </listener>
</web-app>

Comment récupérer le nom associé au contexte d'une application Web?
auteur : SEMPERE Benjamin
A l'aide de l'interface HttpServletRequest
String contextPath = request.getContextPath();

rechercher
precedent    sommaire    suivant    telecharger

Consultez les autres F.A.Q's

Valid XHTML 1.1!Valid CSS!


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.