Invalidar sessão, problemas

0 respostas
ThomasCouto

Estou tentando invalidar uma sessão mas não consigo. Ele chama a pagina que estava e não a de login.. estou usando j_security_check
e não posso chamar login.html diretamente.

o que fazer?

public abstract class AbstractCommand {	
	
	protected HttpServletRequest request;
	protected HttpServletResponse response;
	
	public void init (HttpServletRequest rq,
			HttpServletResponse rs){		
		request = rq;
		response = rs;		
	}
	public abstract String execute() throws ServletException,IOException;
}
public class LogoutCommand extends AbstractCommand {

	public String execute() throws IOException {
	
        HttpSession sessao = request.getSession();
        sessao.invalidate();
	 	return "logout";
		
	}
}
package pacote;

import java.io.IOException;
import java.util.Hashtable;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class FrontController extends HttpServlet {
	
	private Map<String, String> commands = new Hashtable<String, String>();
	private Map<String, String> forwards = new Hashtable<String, String>();
	
	public void init() throws ServletException {		
		commands.put("cadastrar", "pacote.CadastraCommand");
		commands.put("cadastrarUsuario", "pacote.CadastraUsuarioCommand");
		commands.put("cadastraGenero", "pacote.CadastraGeneroCommand");
		commands.put("cadastraCategoria", "pacote.CadastraCategoriaCommand");
		commands.put("cadastraFilme", "pacote.CadastraFilmeCommand");
		commands.put("logoutUser", "pacote.LogoutCommand");
		commands.put("gerencia", "pacote.GerenciaCategoriaCommand");
		commands.put("alteraCategoria", "pacote.AlteraCategoriaCommand");
		commands.put("acompanharLocacoes", "pacote.AcompanharLocacoesCommand");
		commands.put("detalhesLocacoes", "pacote.DetalhesLocacoesCommand");
		
		forwards.put("detalhes", "/detalhes.jsp");
		forwards.put("acompanhar", "/acompanhar.jsp");
		forwards.put("gerenciaCategoria", "/gerenciaCat.jsp");
		forwards.put("cadastra","/cadastrar.jsp");
		forwards.put("logout", "/");
	}
	
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		handleRequest(request, response);
	}
	
	protected void handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
		String requestURI = request.getRequestURI();
		int index = requestURI.lastIndexOf("/");
		String requestCommand = requestURI.substring(index + 1);
		
		String commandClass = (String) commands.get(requestCommand);
		
		if (commandClass == null) {
			throw new ServletException(
					"Não foi possível encontrar o comando para a requisição:"
					+ requestCommand);
		}
		
		try {
			AbstractCommand cmd = (AbstractCommand) Class.forName(commandClass)
			.newInstance();
			cmd.init(request, response);
			String target = cmd.execute();
			
			String jsp = (String) forwards.get(target); 
			
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(jsp);
			dispatcher.forward(request, response);
			
		} catch (ClassNotFoundException ex) {
			throw new ServletException(
					"Não foi possível encontrar a classe de comando:"
					+ commandClass);
		} catch (IllegalAccessException ex) {
			throw new ServletException(
					"Não foi possível instanciar a classe de comando:"
					+ commandClass);
		} catch (InstantiationException ex) {
			throw new ServletException(
					"Não foi possível instanciar a classe de comando:"
					+ commandClass);
		}
	}
}
Criado 24 de maio de 2006
Respostas 0
Participantes 1