Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Dúvida no Exercício 2 do Capítulo 6 do Curso de Servlets

Estou com uma dúvida no exercício 2 do capítulo 6 (Manipulando Cookies já existentes) no curso de Servlets 3 e Fundamentos da Web.

No caso, o servidor está me dando o recurso logout como inacessível. E não consigo identificar o problema. O meu código está abaixo, e a anotação me parece que está correta. Alguém sabe me dizer o que estou fazendo de errado?

@WebServlet(urlPatterns = "/logout")
public class Logout extends HttpServlet{

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        Cookie cookie = new Cookies(req.getCookies()).buscaUsuarioLogado();
        PrintWriter writer = resp.getWriter();
        if (cookie == null){
            writer.println("<html>");
            writer.println("<body>");
            writer.println("Usuário não estava logado");
            writer.println("</body>");
            writer.println("</html>");
            return;
        }

        cookie.setMaxAge(0);
        resp.addCookie(cookie);
        writer.println("<html>");
        writer.println("<body>");
        writer.println("Deslogado com sucesso.");
        writer.println("</body>");
        writer.println("</html>");
    }
}
9 respostas

ONde está sua página de logout?

A página de logout é gerada quando o servlet executa, não?

Sim mas em qual pasta ele está? Vocé está invocando como logout ou Logout se for como Logout vai dar erro.

A chamada é no meu htm, no formulário, dentro do html:

<html>
<body>
    Bem vindo ao nosso gerenciador de empresas!<br/>

    <form action="novaEmpresa" method="POST">
        Nome: <input type="text" name="nome">
        <input type="submit" value="Enviar">
    </form>

    <form action="login" method="POST">
        Email: <input type="text" name="email" /> <br/>
        Senha: <input type="password" name="senha" /><br/>
        <input type="submit" value="Login" />
    </form>

    <form action="logout" method="POST">
        <input type="submit" value="Logout" />
    </form>

</body>
</html>

A classe Logout se encontra no mesmo pacote das outras classes. A anotação não deveria garantir onde será criada a página?

Me passa a saída do erro por favor.

No console não dá mensagem de erro. O que aparece é:

INFO: Server startup in 1417 ms
Usuario <deslogado> acessando a URI: /gerenciador/
Usuario <deslogado> acessando a URI: /gerenciador/login
Usuario guilherme.silveira@alura.com.br acessando a URI: /gerenciador/
Usuario guilherme.silveira@alura.com.br acessando a URI: /gerenciador/logout

No browser aparece a seguinte mensagem de erro:

HTTP Status 404 - /gerenciador/logout

type Status report
message /gerenciador/logout
description The requested resource is not available.

Apache Tomcat/7.0.47
solução!

Cara estou tendo o mesmo problema do curso de vraptor. Sabe o que eu fiz exclui os arquivos que estavam dando problema e depois fui em Project e dei um Clean no projeto e criei os arquivos de novo. Deu certo.

Valeu. Dei um clean no projeto e depois dei um republish e funcionou.

Pessoal, tive o mesmo problema e dei um clean no projeto.

Além de não resolver o problema o meu Filtro de Auditoria simplesmente parou de printar as mensagem no console do servidor.

:/

Alguém poderia ajudar?