Gerenciando sessões com HttpSessionListener?

3 respostas
G

Dae galera!! blz?
to ralando aqui pra fazer com que após o login do usuário, a sessao eh criada, e enquanto o cara navega pra lah e pra ca no meu site e na net, eu consiga verificar se ele já naum está mais no site, fechou o browser ou ateh msm desligou o pc.
Depois que eu verifico q o timeout esgotou, chamo Pagina.jsp, passando uma variavel como parametro.

To usando somente JSP, com a excessão dessa classe HttpSessionListener!

ai vai o q implementei... a classe HttpSessionListener:
//VERIFICA AS SESSÕES INATIVAS E CHAMA 'Pagina.jsp'

import java.io.*; 
import javax.servlet.http.HttpSessionListener; 
import javax.servlet.http.HttpSessionEvent; 

public class Sessoes implements HttpSessionListener { 

//Evento de invalidação de sessão
  public void sessionDestroyed (HttpSessionEvent se) { 
    HttpSession s = getSession(); 
    String variavel = (String) s.getAttribute("variavel"); 
%>
    <html>
      <jsp:forward page=\"Pagina.jsp\">
        <jsp:param name=\"variavel\" value='<%=variavel%>' />
      </jsp:forward>
    </html>
<%
  }

  public HttpSession getSession() { 
    HttpSession se = request.getSession(false); 
    return se; 
  }
}
tbm adicionei no meu web.xml na pasta WEB-INF o seguinte:
<listener>
  <listener-class>
    (nome do meu arkivo .java que implementa o HttpSessionListener)
  </listener-class> 
</listener>

O QUE TEM DE ERRADO!??!

3 Respostas

R

Tente inserir no web.xml sem o .java

G

sim, claro... o nome do arquivo sem o .java!

agora fui tentar compilar o código q tinha postado na msg anterior, mas usando o javac deu varios erros! ele naum tah reconhecendo as tags do html... será q eu naum tenho fazer com q a minha classe extenda HttpServlets, e faça um doGet, algo como abaixo?
package Projeto;

import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http*;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;

public class Sessoes extends HttpServlet { 

  class SessionTimeoutNotifier implements HttpSessionListener {
  
    public void sessionDestroyed (HttpSessionEvent se) {

      HttpSession s = getSession(); 
      String variavel = (String) s.getAttribute("variavel");

      public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        res.setContentType ("text/html"); 
        PrintWriter out = res.getWriter(); 
        out.println("<html>"); 
        out.println(" <jsp:forward page=\"Pagina.jsp ? 'variavel' = variavel\">");
        out.println("  <jsp:param name=\"variavel\" value='<%=variavel%>' />");
        out.println(" </jsp:forward>");
        out.println("</html>");
      }
    }

    public HttpSession getSession() { 
      HttpSession se = request.getSession(false); 
      return se; 
    }
  }
}
Agradeço desde já a ajuda!!!
jupysilva

Cara Adiciona out.flush(); e out.close();

Criado 20 de julho de 2004
Ultima resposta 23 de fev. de 2010
Respostas 3
Participantes 3