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