Servlet Filter - não reconhece alguns métodos

4 respostas
Javabuntu

Pessoal to precisando restringir acessos a diretórios e urls, to iniciando isso agora e to fazendo por filter.
criei uma classe que implementa filter.
Pesquisei e achei alguns métodos que me ajudariam:

request.getServletPath().endsWith()

porém ele diz que não existe esse método getServletPath…
fiz todos imports necessários, de Request, Response…etc…mesmo assim fica vermelho dizendo que não existe.

public class Security implements Filter{


  public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain)
    throws IOException, ServletException {
    if(request.getServletPath().endsWith("inicio.jsf"){

      } 
  }
}

problema que diz que não existe o método que eu preciso pra verificar qual foi a url que está tentando acessar…
Alguem poderia ajudar…

4 Respostas

T

Você pode fazer um cast de ServletRequest para HttpServletRequest, e tentar novamente. De fato, não existe esse método “getServletPath” em ServletRequest. Como seu ServletRequest é muito provavelmente um HttpServletRequest, você até pode tentar o cast.

HttpServletRequest.getServletPath

Alexandre_Saudate

Acho q o melhor, ainda seria vc não colocar no corpo do filtro quais páginas deseja filtrar (e se elas mudarem com o decorrer do desenvolvimento? Vc não vai querer recompilar, vai?), e sim, no web.xml. Assim, vc deixa mais “solta” sua aplicação, e filtra as páginas certas.

Pra isso, coloca as páginas dentro de uma pasta qualquer (ex.: aplicacao/protegida), e faz o teu filtro filtrar só aplicacao/protegida/*

Javabuntu

thingol:
Você pode fazer um cast de ServletRequest para HttpServletRequest, e tentar novamente. De fato, não existe esse método “getServletPath” em ServletRequest. Como seu ServletRequest é muito provavelmente um HttpServletRequest, você até pode tentar o cast.

HttpServletRequest.getServletPath


valeu o cast funcionou…

Javabuntu

asaudate:
Acho q o melhor, ainda seria vc não colocar no corpo do filtro quais páginas deseja filtrar (e se elas mudarem com o decorrer do desenvolvimento? Vc não vai querer recompilar, vai?), e sim, no web.xml. Assim, vc deixa mais “solta” sua aplicação, e filtra as páginas certas.

Pra isso, coloca as páginas dentro de uma pasta qualquer (ex.: aplicacao/protegida), e faz o teu filtro filtrar só aplicacao/protegida/*

sim…não vou tratar cada página não, o exemplo acima foi só pra desmonstrar que eu não estava conseguindo usar o método, será tratado por diretório…
valeu…

Criado 27 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 4
Participantes 3