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 :

Redirection d'une servlet vers une page jsp avec update de session


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Points : 33
    Points
    33
    Par défaut Redirection d'une servlet vers une page jsp avec update de session
    J'ai une page, index.jsp, qui redirige vers une servlet, URLReader, lorsque le client n'a pas de session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <c:if test="${sessionScope == null}">
            <jsp:forward page="/DiveSchoolManagement/URLReader"/>
        </c:if>
    J'ai donc, dans mon fichier web.xml, les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <servlet-name>URLReader</servlet-name>
            <servlet-class>src.URLReader</servlet-class>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <servlet-name>URLReader</servlet-name>
            <url-pattern>URLReader</url-pattern>
    Edit : maintenant, ça fonctionne (dans le sens, "ça compile")... J'avais quelques erreurs de syntaxe dans mon fichier web.xml.
    Problème suivant : la redirection.
    J'ai donc un utilisateur sans session qui arrive sur la page d'index, celle-ci détecte (voir ci-dessus) le fait qu'il n'y a pas de session et renvoie vers la servlet "URLReader".
    URLReader crée alors une session en y ajoutant une variable "isLogged" dont la valeur est false, ainsi qu'un menu (variable "userMenu"), sous forme de tableau de Strings.
    URLReader effectue ensuite un forward sur la page d'index.

    Dans la page d'index, j'ai le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                        <c:forEach var="menuItem" items="${sessionScope.userMenu}" >
                            ${menuItem}
                        </c:forEach>
    sensé m'afficher mon menu, et là ça cale... Ca n'affiche rien du tout.
    En fait, j'ai l'impression qu'il n'y a tout simplement pas de session créée...
    Voici ma classe URLReader :
    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
    public class URLReader extends HttpServlet {
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            String ref = request.getParameter("ref");
            HttpSession session = request.getSession(true);
            if(session.getAttribute("isLogged").equals(null)) {
                boolean isLogged = false;
                session.setAttribute("isLogged", isLogged);
            }
            //Génération du menu suivant la variable de session isLogged
            if(session.getAttribute("isLogged").equals(false)) {
                String[] menu = {"Accueil", "A propos", "Club"};
                session.setAttribute("userMenu",menu);
            }
            else {
                String[] menu = {"Mon Menu", "Accueil", "A propos", "Club"};
                session.setAttribute("userMenu",menu);
    	}
            RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
            dispatcher.forward(request, response);
        }
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut ouverture de session
    Bonjour,

    A l'ouverture de la session on peut mettre du code, c'est généralement là que l'on va demander une authentification. Evidemment il faut alors faire la différence entre des pages sans session et d'autre avec, ce qui peut compliquer. Généralement des pages statiques font l'affaire pour l'approche StateLess.

    Maintenant par rapport au code je trouve étrange de tester une variable qui pourrait être booléenne par un null, mais je n'arrive pas trouver le JavaDoc de sessionScope.isLogged.

    Salutations

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Points : 33
    Points
    33
    Par défaut
    J'ai trouvé les solutions à mon premier problème (vraiment débile, et inintéressant de poster la solution : grosse erreur dans le fichier web.xml)... j'ai édité le post pour les problèmes qui suivent...
    Sinon, sessionScope.isLogged est sensé faire référence à la variable "isLogged" stockée dans ma session.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Ok une prochaine fois peut être j'aurais une bonne idée

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Points : 33
    Points
    33
    Par défaut
    Premiers éléments de solution :
    Initialement, je faisais un test sur une variable contenue dans la session, alors que la session pouvait ne pas exister -> nullpointerexception...
    Solution : faire le test sur la session évidemment.
    Ensuite, implémenter la méthode doGet et non pas une méthode "processRequest", si je veux traiter les données envoyées en 'GET' (encore un peu de mal avec les notions de base... mais ça va mieux )...

    Edit : maintenant ça fait bien le test sur la session lors de la première connexion à 'index.jsp',puis ça m'envoie sur une erreur 'HTTP Status 500' avec un "java.lang.NullPointerException"...

    Résolu en changeant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(session.getAttribute("isLogged").equals(null))
    par :

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

Discussions similaires

  1. Envoyer des données d'une servlet vers une jsp
    Par MG-openssl dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/04/2011, 10h09
  2. Réponses: 2
    Dernier message: 21/04/2009, 12h26
  3. Passage de paramètre en POST d'une Servlet vers une JSP
    Par guigui5931 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/05/2008, 14h02
  4. renvoyer un objet cree dans une servlet vers une page jsp
    Par kore62 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/08/2007, 21h54
  5. Redirection d'un site vers une adresse dans UNE NEW FENETRE
    Par Mout85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/06/2005, 09h40

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