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 :

probleme de servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut probleme de servlet
    Bonjour
    Je me suis recemment mis a la programmation java EE.
    Je suis un tutorial, et il faut que je crée une toute petite application web formulaire.
    Je ne poste pas les vues(page JSP) seulement mon 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
    87
    88
    89
    package istia.st.servlets.personne;
     
    import javax.servlet.http.HttpServlet;
    import java.util.*;
    import javax.servlet.*;
    import java.io.IOException;
    import javax.servlet.http.*;
     
    public class ServletPersonne extends HttpServlet {
     
    	ArrayList<String> erreur = new ArrayList<String>(); //initialisation des erreurs qui peuvent arriver
    	String URLerreur = null;
    	String[] parametre = {"URLformulaire", "URLreponse"}; //on initialise avec me nom du parametre pour pouvoir le recuperer
    	Map param = new HashMap<String, String>(); //initialisation d'un dictionnaire
     
    	public void init() throws ServletException{
    		ServletConfig config = getServletConfig();
    		String valeur; //on va stocker la valeur du parametre dedans
    		for(int i = 0 ; i < parametre.length ; i++) { //on va maintenant verifier si les parametres ont bien ete rempli
    			valeur = config.getInitParameter(parametre[i]);
    			if(valeur == null)
    				erreur.add("Erreur, le parametre" + parametre[i] + "n'a pas eté rempli"); //si le parametre n'a pas ete rempli, on rempli le gestionnaire d'erreur
    			param.put(parametre[i], valeur); //on le stocke dans le dicionnaire
    			URLerreur = config.getInitParameter("URLerreur");
    			if(URLerreur == null)
    				throw new ServletException("le parametre erreur n'a pas ete initialisé");
    		}
    	}
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		if(erreur.size() != 0) {
    			request.setAttribute("erreur", erreur);
    			getServletContext().getRequestDispatcher(URLerreur).forward(request, response); //on passe la main a la vue erreur
    			return;
    		}
    		String method = request.getMethod().toLowerCase(); //on recupere la methode get si c'est la premiere fois et post si c'est la seconde
    		String action = request.getParameter("action");
     
    		if(action == null)  //si le parametre action n'existe pas, c'est que la page n'a pas ete encore lancée, il faut donc la lancer
    			action = "init";
     
    		if(method.equals("get") && action.equals("init")) { //si la page n'a pas ete encore initialisé on appelle la methode d'initialisation
    			doInit(request, response);
    		return;
    		}
    		if(method.equals("post") && action.equals("ValidationFormulaire")) { //si la page a deja ete initialisée on appelle la methode du formulaire
    			doValidationFormulaire(request, response);
    			return; //les return servent a stopper la methode
    		}
    			doInit(request, response); //dans tous les autres cas
    	}
     
    	public void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setAttribute("nom", "");
    		request.setAttribute("age", "");
    		getServletContext().getRequestDispatcher((String)param.get("URLformulaire")).forward(request, response);
    		return;
    	}
     
    	public void doValidationFormulaire(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String nom = (String)request.getAttribute("txtNom");
    		String age = (String) request.getAttribute("txtAge");
    		ArrayList<String> erreurForm = new ArrayList<String>();
    		nom = nom.trim(); //on supprime les espaces qui peut y avoir
    		if(nom == null)
    			erreurForm.add("le champ [nom] n'a pas ete rempli");
    		if(!age.matches("^\\s*\\d+\\s*$")) 
    			erreurForm.add("le champ [age] n'a pas ete rempli ou est erroné");
     
    			if(erreurForm.size() != 0) {
    				request.setAttribute("erreur", erreurForm);
    				getServletContext().getRequestDispatcher(URLerreur).forward(request, response);
    				return;
    			}
    			request.setAttribute("nom", nom);
    			request.setAttribute("age", age);
    			getServletContext().getRequestDispatcher((String) param.get("URLreponse")).forward(request, response);
    			return;
    	}
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
     
    }
     
     
     
    Je lance sur mon navigateur localhost:8080/pe
    Je lance sur mon navigateur localhost:8080/personne01/main
    Jusque la tout va bien, quoi que a la place d'avoir des champs vide pour nom et age c'est marqué "type".
    Je rentre un nom et un age, et la, page d'erreur: etat-HTTP 500
    et message d'erreur:

    java.lang.NullPointerException
    istia.st.servlets.personne.ServletPersonne.doValidationFormulaire(ServletPersonne.java:64)
    istia.st.servlets.personne.ServletPersonne.doGet(ServletPersonne.java:47)
    istia.st.servlets.personne.ServletPersonne.doPost(ServletPersonne.java:82)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Quelqu'un sait il d'ou vient le probleme?

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Il faut remplacer tes getAttribute par des getParameter.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut
    ok merci beaucoup.
    Tout marche bien, sauf que quand je lance la page il y a toujours "type" dans les champs.
    Encore merci

    edit: le type m'enerve, j'ai refait l'application un peu modifié avec un lien en plus, et maintenant es que j'arrive sur ma page c'est marqué null dans les 2 champs.
    Personne n'a d'idees?

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Par défaut
    Bonjour,

    Tu as vérifié ta requête de base de données? C'est pas elle qui te rammène pas ce que tu veux? Si tu as des null, c'est que tes valeurs ne sont pas passées, donc cherches de ce côté là :p

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut
    Je n'utilise pas de base de donnes. Mais je vais chercher de ce coté la.
    Merci de ta reponse

  6. #6
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Je ne pense pas que le problème soit dans la servlet. Montre nous le code de ta JSP. Regarde que tu ne mettes rien en session qui aurait comme nom : "nom" ou "age".

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut
    voila formulaire.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
    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%
    String nom = (String)session.getAttribute("nom");
    String age = (String)session.getAttribute("age");
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>personne formulaire</title>
    <script type="javascript">
    function effacer() {
    with(document.frmPersonne) {
    txtAge.value="";
    txtNom.value="";
    }
    }
    function envoyer() {
    with(document.frmPersonne) {
    champs=/^\s*$/.exec(txtNom.value);
    if(champ!=null) {
    alert("vous devez indiquer un nom");
    txtNom.value="";
    txtNom.focus();
    return;
    }
    champs=/^\s*\d+\s*$/.exec(txtAge.value);
    if(champ!=null) {
    alert("age incorrect");
    txtAge.focus();
    return;
    }
    submit();
    }
    }
    </script>
    </script>
    </head>
    <body>
    <center>
    <h2>personne formulaire</h2>
    <hr>
    <form name = "frmPersonne" 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 = "6"></td>
    </tr>
    </table>
    <table>
    <tr>
    <td><input type = "submit" value = "submit"></td>
    <td><input type = "button" value = "[Envoyer]" onclick="envoyer()"></td>
    <td><input type = "reset" value = "retablir"></td>
    <td><input type = "button" value = "[Effacer]" onclick = "effacer()"></td>
    </tr>
    </table>
    <input type = "hidden" name = "action" value = "ValidationFormulaire">
    </form>
    </center>
    </body>
    </html>
    Depuis que j'ai mit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String nom = (String)session.getAttribute("nom");
    String age = (String)session.getAttribute("age");
    a la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String nom = (String)request.getAttribute("nom");
    String age = (String)request.getAttribute("age");
    Il ne me met plus des nuls dans les champs, mais des types

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut
    ok, c'est bon, les champs m'apparaissent maintenant vides(depuis que je n'utilise plus de java dans mes pages .jsp)
    Par contre il reste un probleme persistant, aucun des 2bouttons javascript ne marche, quand je clique dessus, il ne se passe rien.

    Merci pour vos reponses

Discussions similaires

  1. probleme avec servlet
    Par lmilhi dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 19/04/2007, 20h06
  2. probleme deploiment servlet
    Par isorn dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/03/2007, 09h47
  3. probleme de servlet
    Par samira84 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 02/02/2007, 02h34
  4. eclipse 3.1 apache 5.0.28 j2ee - Problème de servlet
    Par chernob dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 10/07/2006, 12h12
  5. Probleme SessionBean Servlet
    Par metalpetsFR dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/05/2006, 16h28

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