Tenho uma página de login e a seguinte classe:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Sessao
{
private HttpServletRequest request;
private HttpServletResponse response;
private HttpSession sessao;
/* -1: Impossivel criar sessao (objetos request e/ou response nulos)
* 0: Sessao criada com sucesso!
* 1: Sessao já criada anteriormente
*/
public int criaSessao(){
if(this.request == null || this.response == null){
System.out.printf("Impossivel criar sessao.\n");
System.out.printf("Objetos request e/ou response nulos na classe Sessao!\n\n");
return -1;//Impossivel criar sessao
}
if( (this.sessao = this.request.getSession(false)) != null){
System.out.printf("Sessao já criada anteriormente!\n");
return 1;//Sessao já criada anteriormente
}
this.sessao = this.request.getSession();
System.out.printf("Nova sessao criada com sucesso!\n");
return 0; //Sessao criada com sucesso!
}
//Sets and Getters ...
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public HttpSession getSessao() {
return sessao;
}
public void setSessao(HttpSession sessao) {
this.sessao = sessao;
}
}
Assim que o usuário faz o login, eu faço:
Sessao s = new Sessao();
s.setRequest(request);
s.setResponse(response);
int inteiro = s.criaSessao();
System.out.printf("s: %d\n", inteiro);
Minha pergunta é: na primeira vez que executo essas instruções, o último System.out.printf não deveria imprimir “s: 0” ??? E, a partir da segunda, não deveria imprimir “s: 1” ??? Porém, aqui ele imprimi “s: 1” desde a primeira requisição, como se o usuário já tivesse pego uma sessão anteriormente!
O que estou errando?
Obrigado.