IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Première Servlet (Débutant)


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut Première Servlet (Débutant)
    Je suis en traint de faire mes premiers pas dans la technologie J2EE. Je travail en suivant un Tutorial intitulé LES BASES DU DEVELOPPEMENT WEB MVC EN JAVA.
    Lorsque je crée ma Servlet (ServletFormulaire) et que je l'exécute, elle marche bien quand je l'exécute, mais je me rend compte qu'elle ne communique pas avec le fichier web.xml où je définis les paramètres initiaux. Je ne sais pas si le problème est dû au fait que je suis scrupuleusement un Totorial de 2006 et que les choses ont peut-être évoluées.

    Dans ma Servlet apparaît l'annotation @WebServlet("/ServletFormulaire") Lorsque je commente cette ligne, la Servlet ne s'affiche plus lorsque je l'exécute, elleme renvoit un message d'erreur de Tomcat. Je veux en fait qu'elle prenne en compte le paramètre <url-pattern>/ServletFormulaire</url-pattern> défini dans mon fichier web.xml et non l'annotation.

    Et dans ma méthode init(), je récupère mes valeurs par défaut dans le fichier web.xml où je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void init(ServletConfig config) throws ServletException {
         // on récupère les paramètres d'initialisation de la servlet
        	 ServletConfig config = getServletConfig();
        	 defaultNom = config.getInitParameter("defaultNom");
        	 System.out.println(defaultNom);
        	 if (defaultNom == null)
        		 defaultNom = "NNNNNNNNNNNNNNN";
        	 defaultAge = config.getInitParameter("defaultAge");
        	 if (defaultAge == null)
        		 defaultAge = "AAA";
         }
    Mais ces valeurs me renvoient null, puisque dans mes deux zones de texte HTML correspondantes, j'ai NNNNNNNNNNNNNNN et "AAA" qui s'affichent et non les valeurs par défaut définit dans web.xml dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?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_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>Personne</display-name>
     
      <servlet>
     <servlet-name>formulairepersonne</servlet-name>
     <servlet-class>packagePersonne.ServletFormulaire</servlet-class>
     <init-param>
     <param-name>defaultNom</param-name>
     <param-value>Inconnu</param-value>
     </init-param>
     <init-param>
     <param-name>defaultAge</param-name>
     <param-value>XXX</param-value>
     </init-param>
     </servlet>
     <servlet-mapping>
     <servlet-name>formulairepersonne</servlet-name>
     <url-pattern>/ServletFormulaire</url-pattern>
     </servlet-mapping>
     
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
     
    </web-app>
    Et lorsque je modifie une valeur dans mon web.xml et je redémarre Tomcat, rien ne change dans l'affichage de la Servlet, me prouvanr que celle-ci ne communique pas avec ce fichier.

    Y-a-t-il une configuration spéciale à faire pour que les Servlets communiquent avec le fichier web.xml ?

    J'utilise Java 6 avec Eclipse Helios combiné à Tomcat 7.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    la url pattern devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <url-pattern>/ServletFormulaire/*</url-pattern>

  3. #3
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Merci tchize_ ça marche, mais seulement lorsque je modifie une valeur dans mon fichier web.xml, elle n'apparait pas à l'exécution.
    Je redémarre Tomcat sans changement, je clique même sur le bouton Recharger du projet au niveau de l'espace Manager App de Tomcat, sans changement.
    C'est lorsque j'arrête parfois tout, je ferme même Eclipse et je relance, je redémarre Tomcat que ça donne le bon résultat, parfois même ça ne donne toujours pas.

    Une idée SVP ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par mesken Voir le message
    Merci tchize_ ça marche, mais seulement lorsque je modifie une valeur dans mon fichier web.xml, elle n'apparait pas à l'exécution.
    Quelle valeur, vous entendez quoi par "n'apparait pas à l'exécution"?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par mesken Voir le message
    Merci tchize_ ça marche, mais seulement lorsque je modifie une valeur dans mon fichier web.xml, elle n'apparait pas à l'exécution.
    Je redémarre Tomcat sans changement, je clique même sur le bouton Recharger du projet au niveau de l'espace Manager App de Tomcat, sans changement.
    C'est lorsque j'arrête parfois tout, je ferme même Eclipse et je relance, je redémarre Tomcat que ça donne le bon résultat, parfois même ça ne donne toujours pas.

    Une idée SVP ?
    Ce ne serait pas un problème de re-déploiement par hasard ?

  6. #6
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    OK, voici en fait le TP simple. C'est juste un TP de formation
    1) J'ai une Servlet simple qui contient aussi un petit code HTML qu'elle doit générer avec deux valeurs (Nom et Age).
    2) J'ai mon fichier web.xml où je définis ces valeurs par défaut qui devront s'afficher au chargement de la Servlet.
    3) Dans ma Servlet, j'ai donc la fonction init() qui récupère ces paramètres par défaut et les alloue à la Servlet afin de les passer aux variables HTML

    VOICI LE FICHIER WEB.XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?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_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>Personne</display-name>
      <servlet>
        <servlet-name>formulairepersonne</servlet-name>
        <servlet-class>packagePersonne.MyFirstServlet</servlet-class>
        <init-param>
          <param-name>defaultNom</param-name>
          <param-value>Jean Claude Le Bourgeois</param-value>
        </init-param>
        <init-param>
          <param-name>defaultAge</param-name>
          <param-value>35 ans</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>formulairepersonne</servlet-name>
        <url-pattern>/MyFirstServlet/*</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    </web-app>
    VOICI LE CODE DE LA SERVLET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    package packagePersonne;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    public class MyFirstServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        public MyFirstServlet() {
            super();
        }
        private String defaultNom = null;
        private String defaultAge = null;
     
    	public void init(ServletConfig config) throws ServletException {
     
       	 	defaultNom = config.getInitParameter("defaultNom");
       	 	System.out.println(defaultNom);
       	 	if (defaultNom == null)
       		 defaultNom = "PAS DE NOM PAR DEFAUT";
       	 	defaultAge = config.getInitParameter("defaultAge");
       	 	if (defaultAge == null)
       		 defaultAge = "PAS D'AGE PAR DEFAUT";
    	}
     
    	public ServletConfig getServletConfig() {
    		return null;
    	}
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String nom = request.getParameter("txtNom");
    		if (nom == null) {
    			nom = defaultNom;
    			nom= defaultNom;
    		 }
    		String age = request.getParameter("txtAge");
    		if (age == null) {
    			age = defaultAge;
    		}
     
    		response.setContentType("text/html");
    		 PrintWriter out = response.getWriter();
    		 out.println(
    		 "<html>"+
    		 "<head>"+
    		 "<title>Personne - formulaire</title>"+
    		 "</head>"+
    		 "<body>"+
    		 "<center>"+
    		 "<h2>Personne - formulaire</h2>"+
    		 "<hr>"+
    		 "<form action='' method='post'>"+
    		 "<table>"+
    		 "<tr>"+
    		 "<td>Nom</td>"+
    		 "<td><input name='txtNom' value='"+nom+"' type='text' size='30'></td>"+
    		 "</tr>"+
    		 "<tr>"+
    		 "<td>Age</td>"+
    		 "<td><input name='txtAge' value='"+ age +"' type='text' size='3'></td>"+
    		 "</tr>"+
    		 "</table>"+
    		 "<table>"+
    		 "<tr>"+
    		 "<td><input type='submit' value='Envoyer'></td>"+
    		 "<td><input type='reset' value='Rétablir'></td>"+
    		 "<td><input type='button' value='Effacer'></td>"+
    		 "</tr>"+
    		 "</table>"+
    		 "</form>"+
    		 "</center>"+
    		 "</body>"+
    		 "</html>" );
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
     
    }
    Lorsque je change donc les valeurs par défaut dans mon fichier web.xml par exeemple je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    defaultNom à Jean marie et defaultAge à 50
    , je rentre dans Eclipse, j'exécute la Servlet, j'ai toujours Jean Claude Le Bourgeois et 35 ans qui s'affichent

Discussions similaires

  1. [Servlet-Débutant] Question de ressources
    Par Wonesek dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 16/02/2007, 14h45
  2. Réponses: 3
    Dernier message: 05/05/2006, 18h36
  3. [ débutant ][ J2EE ] ma première servlet
    Par remyli dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 19/03/2006, 15h48
  4. [TomCat][Servlet] débutant
    Par altropus dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 06/10/2004, 19h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo