Problemas com request, Session e redirecionamento

1 resposta
hlegius

Salve pessoal !
Criei um formulário simples que recebe login/senha em um JSP normal. Esse JSP envia para um Servlet os dados para serem tratados e ação correta tomada.
Porém, estou recebendo insistentemente um IllegalStateException que eu ainda não consegui decifrar o motivo.

"Error trace":
SEVERE: Servlet.service() for servlet autentica threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) at br.com.caelum.jdbc.agenda.servlet.Autentica.service(Autentica.java:14) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at br.com.caelum.jdbc.agenda.filters.EncodingFilter.doFilter(EncodingFilter.java:24) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619)

Trecho do Servlet

@Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (request.getParameter("done") == null) {
            response.sendRedirect("autentica.jsp");
        }
        
        Administrador admin = new Administrador(request.getParameter("login"), request.getParameter("senha"));
        
        if (!admin.login()) {
            response.sendRedirect("autentica.jsp");
        }
        request.getSession().setAttribute("login", "foobaz");
        
        response.sendRedirect("index.jsp");
        response.getWriter().flush();
        response.getWriter().close();
    }

Caso eu chame: http://localhost:8080/projeto/autentica (caminho mapeado para o Servlet acima) ele retorna essa exception nessa linha
Se eu submeter o formulário (que encontra-se nesta autentica.jsp) com dados ou sem dados também recebo tal erro.

Parece que ele está ignorando a condição que coloquei em !admin.login() -- que sempre retorna false, mas mesmo assim ele dá erro depois deste if :S - como naquele primeiro if que é o nome do botão, e acessando diretamente deveria cair nele, pois o botão no debugger está como nulo nestes casos.

Estou boiando no que está rolando. hehe
Alguém poderia me dar uma luz ?

Abraços !

1 Resposta

hlegius

Problema resolvido. Ele estava requerendo um return ;

@Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (request.getParameter("done") == null) {
            response.sendRedirect("autentica.jsp");
            return ; // <---- return aqui, ó !
        }
        
        Administrador admin = new Administrador(request.getParameter("login"), request.getParameter("senha"));
        
        if (!admin.login()) {
            response.sendRedirect("autentica.jsp");
            return ; // <---- return aqui, ó !
        }
        request.getSession().setAttribute("login", "foobaz");
        
        response.sendRedirect("index.jsp");
        response.getWriter().flush();
        response.getWriter().close();
    }

Abraço !

Criado 24 de janeiro de 2010
Ultima resposta 25 de jan. de 2010
Respostas 1
Participantes 1