Como fazer um LOGIN corretamente?

Pessoal, postei na semana passada um problema que eu estou tendo em fazer um LOGIN e manter a permanência da sessão desse login até que o usuário efetue o Logout. Pois bem, aqui esta descrito como eu fiz isso e ainda assim não está funcionando. Deem uma olhada:

     //Servlet que faz autenticação de usuario

      if(Autenticar(email,senha,con))  // usuario autenticado corretamente
      {
        sessao.setAttribute("autenticado","autenticado");

TODAS páginas .jsp recebem a sessão da seguinte forma:

  <jsp:useBean id="autenticado" scope="session" class="java.lang.String" />

<%
  if(!autenticado.equals("autenticado"))  // nao autenticado
  {
  .
  .
  .
  .
%>

Até aqui tudo perfeitamente, o problema é que quando eu acesso qualquer outra SERVLET da minha aplicação e está faz um dispatcher para minha página .jsp eu simplesmente “PERCO” a sessão e assim tenho que efetuar o LOGIN novamente.

Por favor pessoal, sei que não é complicado pois já fiz várias vezes em outras aplicações. O problema está quando eu acesso alguma servlet e ela não consegue manter a sessão. Pelo que eu sei todas páginas .jsp assim como minhas servlet compartilham a mesma sessão…ou não é bem assim ?

Obrigado !

Tome cuidado com a definição de sua “sessao”, você pode armazenar um objeto utilizando o método setAttribute da classe HttpSession, que no caso é um para cada usuário, e também você pode armazenar um objeto
utilizando o método setAttribute da classe HttpServletRequest, que no caso é global e é resetado entre requests.
Já que é para autenticação você deve utilizar o setAttribute da classe HttpSession (não esqueça de criar a sessão antes !), aqui vai um basicão :

Cria uma sessão e armazena um Objeto nela:

Cliente cli = new Cliente(1,"cli1");
HttpSession sessao = request.getSession(true);
sessao.setAttribute("cliente",cli);
//aqui você despacha para uma JSP

Não esqueça que a JSP que receber os dados dessa Servlet, deve ter a diretiva session=“true”, para manter a sessão na página, exemplo :

<%@ page contentType="text/html; charset=iso-8859-1" language="java" session="true" %>

O código do logout seria ± :

// Recupera a sessão na qual o usuário está trabalhando
HttpSession session = request.getSession();
// Invalida a sessão
session.invalidate();