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 :

[jsp/servlet]Pas de com entre jsp/servlet?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut [jsp/servlet]Pas de com entre jsp/servlet?
    Bonjour

    Je fais un petit essai de communication jsp/servlet (en me basant sur un toturial de Serge Tahé) et ma jsp n'a pas l'air de communiquer avec ma servlet... En effet, elle affiche désespérement la même chose, à savoir deux champs textes avec null dedans, champs qui reviennent si on modifie puis clique sur Envoyer. J'ai essayé de simplifier plein de choses, de faire des sorties consoles, mais rien ne m'a apporté de solution... J'commence grave à me faire des cheveux gris alors j'ai pensé à vous

    Je ne sais pas trop par où commencer pour vous donner des billes, je vais donc faire dans l'ordre suivant : config, web.xml, page jsp (formulaire2.jsp) puis servlet (ServletFormulaire2.java).

    Config :
    tomcat5.5.9/Eclipse avec plug in sysdeo sur Windows XP tests avec Firefox.

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    	<servlet>
    		<servlet-name>formulairepersonne2</servlet-name>
    		<servlet-class>MyP1.ServletFormulaire2</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>formulairepersonne2</servlet-name>
    		<url-pattern>/formulaire2</url-pattern>
    	</servlet-mapping>
    </web-app>
    Page jsp formulaire2.jsp :
    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
    <%
    String nom=(String)request.getAttribute("nom");
    String age=(String)request.getAttribute("age");
    %>
    <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="20"></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="Retablir"></td>
    				<td><input type="button" value="Effacer"></td>
    				</tr>
    				</table>
    			</form>
    		</center>
    	</body>
    </html>
    Ma servlet ServletFormulaire2.java :
    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
    /*
     * Created on 29 juin 2005
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package MyP1;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
     
    import java.io.IOException;
     
    public class ServletFormulaire2 extends HttpServlet {
    	// paramètres d'instance
    	private String defaultNom = null;
    	private String defaultAge = null;
    	//init
    	public void init() {
    		// on récupère les paramètres d'initialisation de la servlet
    		ServletConfig config = getServletConfig();
    		defaultNom = config.getInitParameter("defaultNom");
    		if(defaultNom==null) defaultNom="NNNNNNNNNNNNNNN";
    		defaultAge = config.getInitParameter("defaultAge");
    		if(defaultAge==null) defaultAge="AAA";
    		System.out.println("init");
    	}
    	//GET
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException 
    	{
    		// on récupère les paramètres du formulaire
    		String nom = request.getParameter("txtNom");
    		if (nom == null) {
    			nom = defaultNom;
    		}
    		String age = request.getParameter("txtAge");
    		if (age == null) {
    			age = defaultAge;
    		}
    		// on affiche le formulaire
    		request.setAttribute("nom",nom);
    		request.setAttribute("age",age);
    		getServletContext().getRequestDispatcher("/Formulaire.html").forward(request,response);
    	} //GET
    	//POST
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
    		ServletException {
    		// on passe la main au GET
    		doGet(request, response);
    	}
    }

  2. #2
    Membre chevronné Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    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
    <%
    String nom=(String)request.getAttribute("nom");
    String age=(String)request.getAttribute("age");
    %>
    <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="20"></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="Retablir"></td>
                <td><input type="button" value="Effacer"></td>
                </tr>
                </table>
             </form>
          </center>
       </body>
    </html>
    Y'a pas d'action à ton formulaire dans ta page...

  3. #3
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Merci de ta réponse. Après divers tests, j'ai constaté qu'en mettant : action="http://localhost:8080/test/formulaire2"
    cela marche, mais avec :
    action="/formulaire2"
    ou
    action="http://localhost:8080/test/formulaire2.jsp"
    ce n'est plus le cas. Tu peux un peu expliquer le pourquoi de la chose ? Quel est le lien "précis" avec le web.xml et le servlet mapping :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <servlet-name>formulairepersonne2</servlet-name>
    <url-pattern>/formulaire2</url-pattern>
    Merci d'avance !

  4. #4
    Membre chevronné Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Citation Envoyé par ZedroS
    Merci de ta réponse. Après divers tests, j'ai constaté qu'en mettant : action="http://localhost:8080/test/formulaire2"
    cela marche, mais avec :
    action="/formulaire2"
    ou
    action="http://localhost:8080/test/formulaire2.jsp"
    ce n'est plus le cas. Tu peux un peu expliquer le pourquoi de la chose ? Quel est le lien "précis" avec le web.xml et le servlet mapping :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <servlet-name>formulairepersonne2</servlet-name>
    <url-pattern>/formulaire2</url-pattern>
    Merci d'avance !
    L'url-pattern, c'est ce que tu vas appeler via ton navigateur : elle te renvoie à la servlet. servlet-name, c'est le nom de ta servlet que tu as défini dans ton web.xml (section <servlet>).

    Ici, quand tu appelles "formulaire2" dans ton navigateur, tu n'appelles pas une page JSP mais une servlet.

    En ce qui concerne le fait que action="/formulaire2" ne marche pas, c'est parce que tu ne peux pas accéder à la servlet en donnant une URL de chemin relatif, mais absolu (=> chemin de type http://...)

    Tu as compris?

  5. #5
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    J'ai compris je pense, encore merci. Une petite question tout de même : si j'avais je veux changer "de place" mon site et/ou mes pages jsp, je dois renommer mes actions pour le url-mapping ?

    Est ce pour éviter cela que des frameworks comme struts utilisent des actions qui sont de "vraies" actions, c'est à dire en un seul mot ?

    En tout cas grand merci !

  6. #6
    Membre chevronné Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Citation Envoyé par ZedroS
    J'ai compris je pense, encore merci. Une petite question tout de même : si j'avais je veux changer "de place" mon site et/ou mes pages jsp, je dois renommer mes actions pour le url-mapping ?

    Est ce pour éviter cela que des frameworks comme struts utilisent des actions qui sont de "vraies" actions, c'est à dire en un seul mot ?

    En tout cas grand merci !
    Je plussoies pour struts... et je pense qu'il faille effectivement modifier tous les noms de tes actions. A moins que tu fasses une variable qui soit collée dans chaque action et qui contienne le chemin absolu.

    tu auras quelque chose dans le style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<% mavariable %>/Formulaire2" method="post">
    Je suis certain qu'il y a une meilleure méthode que ça.

  7. #7
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Petite précision qui peut éventuellement aussi intéresser le ou les lecteurs :
    en mettant <form action="/test/formulaire2" method="post"> cela marche aussi. En fait il faut mettre tout le chemin en partant de la racine du serveur donc à priori. Du coup ça marche mieux pour la portabilité, enfin, tant qu'on renomme pas le contexte.

    Voili, c'est tout !

    Encore merci guignol.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. L'action du formulaire JSP ne trouve pas le chemin de la servlet
    Par freetala dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 09/05/2011, 13h59
  2. réponse et requetes entre JSP <-> Servlet
    Par clubist dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/03/2010, 16h40
  3. partager un objet entre une servlet et une jsp
    Par thierry_b dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/11/2009, 23h48
  4. [Servlet]Pas d'affich de ma servlet: enregistrement proposé
    Par Fredooweb dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/02/2005, 17h12
  5. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14

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