mas nao me ajudou, infelizmente ngm terminou de falar sobre…estive lendo meu xml mas nao vi erro…c alguem puder me ajudar eu agradeceria mtissimo…
consigo logar em minha aplicacao e fazer todas as restrições necessarias aos users, mas qdo deslogo e tento logar novamente com o mesmo user ou até com outro user da o seguinte erro postado abaixo…percebi que qdo a sessao expira eu consigo tranquilamente fazer o logout e o logon novamente com qualquer usuario…mas enquanto nao expira eu nao consigo…
[color=red]Minha arvore de projeto esta em anexo[/color]
[color=brown]Este é o ERRO:
HTTP Status 400 - Invalid direct reference to form login page
type Status report
message Invalid direct reference to form login page
description The request sent by the client was syntactically incorrect (Invalid direct reference to form login page).
Apache Tomcat/6.0.18
[/color]
Agradeço a ajuda de todos.
Mas pelo que eu to vendo isso aí gera um HTTP Forward, sendo que o que seria necessário é um HTTP Redirect, senão o browser não vai gerar uma requisição nova, o que vai acabar num erro já que a sessão acabou de morrer e o servidor ficará confuso já que esse “Forward” tentou acessar uma página usando as referências de uma sessão inexistente.
Em vez do “Forward”, ponha um “Redirect” via “response.sendRedirect()”.
Tem o lendário truque do redirecionamento extra ultra-neurótico via javascript, que até altera a barra de endereço no browser, na página de login, deve haver algo do tipo:
[...]
function redireciona()
{
if (!window.location.href.match("<%=request.getContextPath()%>/login.jsp"))
{
window.location.href = "<%=request.getContextPath()%>/login.jsp";
}
}
[...]
<body onload="redireciona()">
[...]
Editado: Errei, sem a checagem numa função javascript o browser entra em loop infinito.
Acho que o problema seria outro então, já que depois que você destrói a sessão no lado servidor e redireciona via HTTP redirect para a página de login, o servidor web deve criar uma outra sessão sozinho para você quando o browser faz outra requisição por páginas. To começando a achar que tu não tá fazendo deployment correto das alterações. Quando tu manda um “response.sendRedirect()”, acontece o que?
qdo eu mando o response.sendredirect() ele manda para a pagina de login.jsp certinho…
aih eu tento logar denovo e da o erro de [color=red]invalid direct reference to form login page[/color]…
mas c eu espero dar o tempo da sessao terminar antes de deslogar da minha aplicacao ele loga…
o que eu deveria fazer para que o deployment seja feito corretamente?? Eu apenas paro a aplicacao, desimplanto, paro o tomcat, inicio ele novamente e implanto a aplicacao…
qdo eu mando o response.sendredirect() ele manda para a pagina de login.jsp certinho…
aih eu tento logar denovo e da o erro de [color=red]invalid direct reference to form login page[/color]…
mas c eu espero dar o tempo da sessao terminar antes de deslogar da minha aplicacao ele loga…
o que eu deveria fazer para que o deployment seja feito corretamente?? Eu apenas paro a aplicacao, desimplanto, paro o tomcat, inicio ele novamente e implanto a aplicacao…
ta errado???
vlw brother…
abraxxxxx e fica com DEUS…[/quote]
Eu recomendo também destruir totalmente o conteúdo da pasta “work” do Tomcat, para garantir que o maldito vai recompilar tudo para mim novamente. Deixe-me ver como ficou esse tal servlet de logout com usando “redirect”.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession sessao = request.getSession();
sessao.invalidate();
response.sendRedirect("login.jsp");
//Nao se pode fazer um request dispatcher pois estou enviando dados
//de uma função inexistente ao browser, aih ele fika doidao!!!
Lembrando agora, nunca invalidei sessões usando servlets apenas, eu sempre fazia isso num scriptlet duma página JSP, talvez por isso sempre funcionou. No seu caso, pode ser que antes de enviar o “redirect” você precise criar na mão uma nova sessão, via “request.getSession(true)”, mas isso depois de invalidar a sessão, que em teoria cria uma nova sessão para você.