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