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

Falha HTTP Status 412... No exercício 3 da aula 9,

Boa noite! No exercício 3 da aula 9, implementei o Dispatcher no logout.java para ir para logout.html. Ao entrar na página inicialmente funciona corretamente. Mas ao clicar no botão atualizar (F5) traz a mensagem:

HTTP Status 412 -

type Status report

message

description A specified precondition has failed for this request.

Apache Tomcat/7.0.69

Depois atualizei novamente e carregou normalmente a página... E atualizei de novo, e tornou a dar a mensagem de erro.

Meu código está assim: da Servlet Logout.java:

@WebServlet(urlPatterns="/logout")
public class Logout extends HttpServlet{
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        HttpSession session = req.getSession();
        session.removeAttribute("usuario.logado");

        RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/paginas/logout.html");
        dispatcher.forward(req, resp);

    }

}

e em WebContent...WEB-INF...paginas...logout.html:

<html>
    <head>
        <title>
            Logout
        </title>
    </head>
    <body> 
        Deslogado com sucesso.
    </body>
</html>
3 respostas
solução!

Engraçado esse erro.. a especificação diz que o status 412 é retornado quando alguma coisa enviada pelo cliente não pode ser atendida pelo servidor..

Não sei exatamente o que pode estar acontecendo, mas será que faz sentido vc querer dar refresh num endereço de logout? Para tentar descobrir certinho, o melhor jeito é ir mexendo no código da servlet... Comenta todas as linhas e vê se o refresh funciona.. aí vai descomentando e testando.

Essa situação também esta ocorrendo aqui, não consegui entender porque, mas realmente não faz sentido dar refresh em uma página de logout, mais por curiosidade que gostaria de entender o porquê. Detalhe que quando só usa ctrl+shift+ R,para atualizar nunca ocorre o erro, se usa F5 normal fica alternando entre página com erro 412 e página normal.

Olá, galera! Também acontece a mesma coisa comigo, mas analisando o comentário do Victor Monteiro, penso que pode ter relação com o cache no browser.

Quando usamos o Ctrl+shift+R, o browser faz uma nova requisição para o servidor. Daí ele executa a lógica de logout que nós implementamos e tudo funciona perfeito.

Já quando usamos apenas o F5, ele faz a requisição apenas usando a URI armazenada no cache (http://localhost:8080/gerenciador/logout), mas esse caminho não existe no servidor, pois o arquivo logout.html está na pasta /web-inf/paginas/logout.html. E o servidor também não executa a lógica. Daí o erro 412.

Quando damos F5 novamente passa a funcionar, pois o browser fez uma nova requisição para o servidor porque a informação armazenada no cache não deu certo.

Não sei faz sentido...

Quem souber, por favor, esclareça essa dúvida! =P

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software