Como pegar uma página jsp no filtro de servlet [RESOLVIDO]

Olá pessoal, to com o seguinte probleminha, preciso pegar as paginas no meu filtro sejam elas direcionadas por:

" sendRedirect "

response.sendRedirect("/pagina1.jsp");

ou por um " RequestDispatcher "

request.getRequestDispatcher("/pagina2.jsp").forward(request, response);

Como posso fazer isso?

Grato a todos!

[]'s

Como assim pegar?
vc quer dizer restringir o acesso a essa pagina?

Bom, se for isso eu acho que é mais ou menos assim:

Seu Filtro

[code]

    Usuario usuario = (Usuario) session.getAttribute("usuario");
    if (usuario == null) {            
        ((HttpServletResponse) res).sendRedirect("/pagina1.jsp");
    } else {
        chain.doFilter(req, res);
    }[/code]

web-info/web.xml

<filter> <filter-name>SeuFiltro</filter-name> <filter-class>seuPacote.SeuFiltro</filter-class> </filter> <filter-mapping> <filter-name>SeuFiltro</filter-name> <url-pattern>paginaRestrita.jsp</url-pattern> </filter-mapping>

referencia:http://www.web4u.eti.br/2008/07/12/servlet-filter/

Só pra reforçar,
caso vc deseje restringir a um diretorio com varias paginas

    <filter-mapping>   
        <filter-name>SeuFiltro</filter-name>   
        <url-pattern>/pastaDasPaginas/*</url-pattern>   
    </filter-mapping>

Não é isso minha duvida, pois quanto ao filtro e a implementação é tranquilo, acontece que por padrão o filtro pega tudo que for REQUEST, no caso td que for encaminhado por response.sendRedirect() ele pega, mas eu quero pegar tambem o que for enviado por “request.getRequestDispatcher(”/pagina2.jsp").forward(request, response);" sendo que se eu declarar no filtro a opção:

<dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher>
ele da erro logo que inicia a aplicação.

A opção REQUEST é a default e se eu declarar a FORWARD ele so pega as requisições feitas por “request.getRequestDispatcher”.

Espero ter sido mais claro desta vez, obrigado amigo.

[]'s

Olha…Creio que para atender a sua necessidade você poderia declarar FORWARD e REQUEST juntos…


<filter-mapping>
    <filter-name>filtro1</filter-mapping>
    <servlet-name>pagina1</servlet-name>
    <dispatcher>FORWARD</dispatcher>  
    <dispatcher>REQUEST</dispatcher>  
</filter-mapping>


<filter-mapping>
    <filter-name>filtro2</filter-mapping>
    <servlet-name>pagina2</servlet-name>
    <dispatcher>FORWARD</dispatcher>  
    <dispatcher>REQUEST</dispatcher>  
</filter-mapping>

Poste o erro que deu na hora de subir sua aplicação…

Se eu não declarar o (na verdade assumindo que o default é REQUEST) eu consigo pegar a ação que foi invocada no servlet, mas não a pagina que originou essa ação e é justamente isso o q eu quero pegar!

Não to no serviço agora, mas depois posto o código de erro.

[]'s

O erro que esta dando:

javax.servlet.ServletException: Filter execution threw an exception
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at br.com.seguranca.controle.FiltroRequisicao.doFilter(FiltroRequisicao.java:38)
        ...

parece que fica em loop e da estouro de memoria.

meu mapeamento:

<filter>
	  <display-name>FiltroRequisicao</display-name> 
	  <filter-name>FiltroRequisicao</filter-name> 
	  <filter-class>br.com.seguranca.controle.FiltroRequisicao</filter-class>
  </filter>
  <filter-mapping>
	  <filter-name>FiltroRequisicao</filter-name> 
	  <url-pattern>/*</url-pattern>
	  <dispatcher>REQUEST</dispatcher>
	  <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

Estive lendo e existe a possibilidade de pegar o retorno do filtro (após a chamada a chain.doFilter) e então tratar a resposta, pra mim isto seria perfeito, mas quando pego um parametro que coloquei na requisição no servlet ele vem nulo após a execução do chain.doFilter(), li que devo criar uma classe wrapper para conseguir fazer este tratamento, mas não ficou muito claro pra mim qual metodo preciso dar override para então tratar a resposta.

[]'s