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

Dúvida no Ex. 3 da Aula 6 - Manipulando cookies existentes

Em filtroDeAuditoria há erro na linha:

Cookie cookie = new Cookies(req.getCookies()).getUsuarioLogado();

as soluções se referem ao construtor e a inexistência de getUsuarioLogado() para Cookies.

Passei o resp como parâmetro para getUsuario.

package br.com.alura.gerenciador.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.http.Cookies;


@WebFilter(urlPatterns = "/*")
public class filtroDeAuditoria implements Filter{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletRequest req =(HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        String uri = req.getRequestURI();

        String usuario = getUsuario(req, resp);
        System.out.println("Usuário" + usuario + "acessando a uri : " + uri);
        chain.doFilter(request, response);

    }

    private String getUsuario(HttpServletRequest req ,HttpServletResponse resp) {        
        Cookie cookie = new Cookies(req.getCookies()).getUsuarioLogado();
        if(cookie==null) return "<deslogado>";            
        else {
            cookie.setMaxAge(60*10);
            resp.addCookie(cookie);
            return cookie.getValue();
            }
        }


    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}
7 respostas

Oi Mary, poderia explicar melhor? Não entendi seu problema.

Abraço,

Oi Paulo,

O Eclipse indica erro na seguinte linha:

Cookie cookie = new Cookies(req.getCookies()).getUsuarioLogado();

e parece tudo certo.

Oi Mary, tudo bem?

getUsuarioLogado();

É um método ou apenas um getter? Se for um getter tá errado. O certo seria um método pra buscar os Cookies.

Ex:

buscaUsuarioLogado();

Se eu estou errado, por favor poste o código do getUsuarioLogado();

solução!

Mary,

O problema é o seu import da classe Cookies:

import org.apache.tomcat.util.http.Cookies;

A classe que você precisa importar é a que você criou no exercício 1 dessa seção. (https://www.alura.com.br/course/servlet-3-e-fundamentos-web/section/6/exercise/1)

Abraço!

Mary,

Você precisa criar esse método getUsuarioLogado dentro da sua classe Cookies. Segue o método:

    public Cookie getUsuarioLogado() {
        if (cookies == null)
            return null;
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals("usuario.logado")) {
                return cookie;
            }
        }
        return null;
    }

Tente isso e avisa ai se funcionou.

Abraço.

Mary, por favor, selecione uma resposta como solução da sua dúvida. Caso contrário, não hesite em perguntar.

Certo? Abraços e bons estudos!

A dica da Joviane resolveu:

retirei a linha : import org.apache.tomcat.util.http.Cookies;

e funcionou.

Obrigada a todos!