Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    21

    gestione sessione con jsp e servlet

    buongiorno avrei un problema con la creazione della sessione per far loggare un cliente al sito.
    In pratica il cliente inserisc i dati nella pagina di loggin e tramite una servlet catturo i dati inseriti e controllo nel database se tali dati corrispondono a questo punto dovrei creare la sessione ma quando la creo mi risulta sempre null e non riesco a capire il perche

    login page

    codice HTML:
    <%@ page contentType="text/html; charset=UTF-8" import="java.util.*,oggetti.Cliente"%>    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1"><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script><title>LOGIN SU AMERICAN !</title> <style type ="text/css">        @import url("css/registrazione.css");</style>                   <script src="script/val.js" type="text/javascript"></script>  <script type="text/javascript">   $(document).ready(function() {     $("li.login").css({"background-color":"rgba(    160,82,45, 0.6)"});      }); </script> 
    
    </head><body><%if(cliente==null) {%><%@ include file="menu.html" %>  <%} %>
    <%if(cliente!=null) {%><%@ include file="menuLogged.html" %>  <%} %>
       <!-- manca la verifica del menu da inviare e la segnalazione di user o pass sbagliati -->   <div class="body">
    <br>
    
    
    <br><p class="erroreemail">   EMAIL GIA ESISTENTE </p><p class="erroreusername">   USERNAME GIA ESISTENTE </p>
    <br>
    <div class="form">
    <div class="log"><p class="nolog">Effettua Il Login !</p><br><form name="reg"   id="login" method="post" onsubmit="return validazione2()" action ="ClienteLogin"> <p id="mu"> </p>Username: <input type = "text" name = "username" onblur="valUsername()">* <br><br><p id="mp"> </p>Password: <input type = "password" name = "password" onblur="valPassword()">* <br><br>
    <input class="invia" type="submit" value="invia" ></form>
    
    </div><div class="reg"> <p class="nolog">Non Sei Ancora Registrato? <br> Cosa Aspetti Registrati</p><br><br> <a class="reglink" href="Registrazione.jsp">REGISTRATI</a> </div></div>
    
    </div><%@ include file="footer.html" %></body></html>

    servlet :
    codice:
    package serverlet;
    
    
    
    
    import java.io.IOException;
    import java.sql.SQLException;
    
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    
    import modelDM.ClienteModelDM;
    import oggetti.Cliente;
    import oggetti.FileGestione;
    
    
        @WebServlet("/ClienteLogin")
        
        public class ClienteLogin extends HttpServlet {
            private static final long serialVersionUID = 1L;
    
    
                static ClienteModelDM model = new ClienteModelDM();
    
    
            public ClienteLogin() {
                super();
            }
    
    
            protected void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
                int flag = -1;
                int error=0; 
    //error =sara uguale a 1 se l username è inesistente o a 2 se la password non coincide
                Cliente cl=null;
            
                
                String u = request.getParameter("username");
                String p = request.getParameter("password");
                 try {
                cl=    model.doRetrieveByKey(u);
                System.out.println("prima degli if "+ cl.toString());
                if(cl==null){
                    error=1;
                    flag=0;
                    }
                
                else if(!(cl.getPassword().equals(p))){
                    error=2;
                    flag=0;
                }
                
                else{flag=1;  System.out.println("flag =1 "+cl.getUsername());}
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            
                System.out.println(" flag = "+flag +" seconda volta  = "+ cl.getUsername());
            //FIN QUI VA TUTTO BENE......    
        if(flag ==1){
            System.out.println("prima degli if "+ cl.toString());
            HttpSession session=request.getSession();
            Cliente cli = (Cliente)request.getSession().getAttribute("cliente");
            if(cli == null) {
                cli = new Cliente();
                cli=cl;
                request.getSession().setAttribute("cliente", cli);
                System.out.println("nell if    "+request.getAttribute("cliente"));
                              //qui stampa null
            }
                
                
                System.out.println("session "+session.toString());
                session.setAttribute("cliente",cli);
                session.setAttribute("errore", error);
                
                System.out.println(" "+request.getAttribute("cliente"));
                         //qui stampa null
                System.out.println(" "+request.getAttribute("errore"));
                        //qui stampa null
                
                
                
                    System.out.println("dovrei aver creto la sessione ");
                RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/AreaRiservata.jsp");
                    dispatcher.forward(request, response);
                
                
                
            
                
        }
        
        
    
    
            protected void doPost(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
                doGet(request, response);
            }
    
    
        }

    quesrto è il risultato delle varie system out :

    prima degli if Cliente [nome=antonio, cognome=corsuto, username=ciao, password=ciao, email=ciao@cors.it, sesso=M, cellulare=3457896542, dataNascita=1995-1-14]
    flag =1 ciao
    flag = 1 seconda volta = ciao
    prima degli if Cliente [nome=antonio, cognome=corsuto, username=ciao, password=ciao, email=ciao@cors.it, sesso=M, cellulare=3457896542, dataNascita=1995-1-14]
    nell if null
    session org.apache.catalina.session.StandardSessionFacade@ 965e548
    null
    null
    dovrei aver creto la sessione

  2. #2
    Ciao,
    detto che ci sarebbero molte cose da rivedere, il problema che tu segnali è dovuto al fatto che setti degli attributi in sessione e tenti di recuperarli dalla request:

    codice:
    session.setAttribute("cliente",cli);
    session.setAttribute("errore", error);
                
    System.out.println(" "+request.getAttribute("cliente"));
    //qui stampa null
    System.out.println(" "+request.getAttribute("errore"));
    


    dovrebbe essere:

    codice:
    session.setAttribute("cliente",cli);
    session.setAttribute("errore", error);
                
    System.out.println(" "+request.getSession().getAttribute("cliente"));
    //qui stampa null
    System.out.println(" "+request.getSession().getAttribute("errore"));
    


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    21
    Si grazie ho capito l errore
    vorrei chiederti una cosa come posso richiamare una servlet cliccando su un link.....in pratica ho ne nav un immagine (che rappresenta il logout)che quando viene cliccata dovrebbe far partire una servlet che elimina l attributo cliente dalla sessione ma non riesco a creare questo collegamento

    codice HTML:
    <!DOCTYPE html><html><head>  <style type ="text/css">    @import url("css/menu.css");        </style>
    </head>
    <body>
    <header> 
    <ul class="topnav">  
     <li class ="home"><a href="home.jsp"><img src ="css/img/mf/home.ico" alt="HOME" height ="45"  width="45"></a></li> 
     <li  class ="film"><a href="Films.jsp">FILM</a></li> 
     <li   class ="csoon"><a href="Cooming.jsp">COOMING SOON</a></li> 
     <li  class ="contatti"><a href="Contatti.jsp">ABOUT</a></li>  
    <li   class ="lprezzi"><a href="Listino.jsp">LISTINO PREZZI</a></li> 
     <li  class ="foods"><a href="Food.jsp">FOODS</a></li>     
    <li  class ="areaR"><a href="AreaRiservata.jsp"><img class ="img" src ="css/img/mf/ar.png"          alt="AreaRiservata" height ="45"  width="45"></a></li>     
    <li  class ="login"><a ><img class ="img" src ="css/img/mf/logout1.png" alt="l" height ="45"           width="45" >  LOGOUT</a></li>      
    <li class="icon">    <a href="javascript:void(0);" style="font-size:15px;"          onclick="responsiveMenu()"><img src ="css/img/mf/menu.ico" height ="45"   alt="m"></a>  </li>
    </ul>
    
    <script>function responsiveMenu() {    document.getElementsByClassName("topnav")[0].classList.toggle("responsive");}</script></header>
    
    </body></html>

  4. #4
    Quote Originariamente inviata da toniCors Visualizza il messaggio
    Si grazie ho capito l errore
    vorrei chiederti una cosa come posso richiamare una servlet cliccando su un link.....in pratica ho ne nav un immagine (che rappresenta il logout)che quando viene cliccata dovrebbe far partire una servlet che elimina l attributo cliente dalla sessione ma non riesco a creare questo collegamento
    devi puntare all'url che hai dichiarato nel servlet-mapping all'interno del file web.xml

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.