Filtros

Pessoal criei um filtro pra validar a sessão e no meu doFilter() implementei o seguinte código:

 if (page.length()>8){
    page = page.substring(page.length()-8,page.length()-3);
  }

  if (!page.equals("login")){

  if (session.getAttribute("user")==null){			
   RequestDispatcher rd =  request.getRequestDispatcher("/jsp/login.jsp");
   rd.forward(req,res);
   }

  }		
  chain.doFilter(req,res);

Seria a forma mais adequada? De qualquer forma eu queria saber com n aplicar a checagem para a pagina de Login. No codigo tentei pegar o nome da JSP mas ele invoca o método sempre que o cliente faz um request pro servidor, ou seja, qd carrega as imagems tb aí desse jeito n rola :frowning:

Como está definido esse filtro no seu web.xml?

<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>projeto.core.SessionValidatorFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

[quote=cain]<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>[/quote]

O problema é q vc está definindo que tudo terá q passar pelo filtro( <url-pattern>/*</url-pattern> )
Coloque apenas oq vc quer, por exemplo

&lt;url-pattern&gt;/pages/pagina.jsp&lt;/url-pattern&gt;

Tem como fazer um NOT? Pq a única página q está fora da regra é a de Login

Tenta isso colocar isso dentro da tag do seu filtro:

&lt;init-param&gt; &lt;param-name&gt;exclude&lt;/param-name&gt; &lt;param-value&gt;/login.jsp&lt;/param-value&gt; &lt;/init-param&gt;

Não funcionou mas valeu pela ajuda

Uma solução simples é: por que você não põe a página de login em um lugar que não esteja mapeado para o filter?