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);
}
}
}