[RESOLVIDO] Filtro de verificação antes da pagina index.jsp ser executada

7 respostas
EuclidesFilizola

Boa tarde pessoal,

eu gostaria de saber como eu faria um filtro, ou uma verificação qualquer, antes da pagina index.jsp rodar.

Por exemplo, eu tenho a index abaixo:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head></head>
	<body>
		<jsp:forward page="paginas/principal.jsf"/>
	</body>
</html>

mas eu queria fazer uma verficação no banco de dados, antes dela executar o "forward page=“paginas/principal.jsf”. Ou seja, eu queria verificar se dentro do banco de dados existe algum municipio com padrão nulo.

Dae tentei fz o seguinte filtro:

package br.com.empresa.projeto.comum.utilitario;

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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.empresa.projeto.infra.banco.MunicipioDAO;

public class FiltroVerificacaoMunicipio implements Filter {

	private MunicipioDAO municipioDao = new MunicipioDAO();
	
	public FiltroVerificacaoMunicipio() {
		
	}

	@Override
	public void destroy() {
		

	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		 HttpSession session = ((HttpServletRequest)req).getSession();
		
		  if (municipioDao.procurarMunicipioNulo()){
			  
			  session.setAttribute("msg","redirecinando..");
			  
			  ((HttpServletResponse)resp).sendRedirect("../municipioNulo.jsf");
			  
		  }
		

		
		
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
	

	}

}

porém esse filtro não chega a ser executado.

eu tentei fz assim no mapeamento do filtro:

<filter>
  <display-name>FiltroVerificaMunicipio</display-name>
  <filter-name>FiltroVerificaMunicipio</filter-name>
  <filter-class>br.com.empresa.projeto.comum.utilitario.FiltroVerificacaoMunicipio</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>FiltroVerificaMunicipio</filter-name>
  <url-pattern>/index/*</url-pattern>
 </filter-mapping>

Porém ele não funciona, e acaba entrando na pagina principal. Algueria saber me ajudar ?

7 Respostas

Giulliano

acho q faltou esta linha no seu código

chain.doFilter(request, response);

o que esta ntes executa nates e o que esta depois executa depois.

EuclidesFilizola

Bem, tentei fazer assim e não funcionou:

public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		 HttpSession session = ((HttpServletRequest)req).getSession();
		
		  if (municipioDao.procurarMunicipioNulo()){
			  
			  session.setAttribute("msg","redirecinando..");
			  
			  ((HttpServletResponse)resp).sendRedirect("../municipioNulo.jsf");
			  
		   }else{

              chain.doFilter(req, resp);

        }
		

		
		
	}
Giulliano

Acho que o seu mapeamento esta errado. Vc colocou um flitro para todas as páginas dentro da pasta index.

Ao invés de dizer que quer um filtro para a página index.

é śo um chute…afinal podem ser mil coisas. O lance é que o filtro funciona, só precisa adequar para as suas necessidades

EuclidesFilizola

Giulliano:
Acho que o seu mapeamento esta errado. Vc colocou um flitro para todas as páginas dentro da pasta index.

Ao invés de dizer que quer um filtro para a página index.

é śo um chute…afinal podem ser mil coisas. O lance é que o filtro funciona, só precisa adequar para as suas necessidades

Bom dia Giulliano,

provavelmente seja isso, mas como eu devo fazer o mapeamento então ?

eu tentei fazer assim:

<filter-mapping>
  <filter-name>FiltroVerificaMunicipio</filter-name>
  <url-pattern>/index.jsf</url-pattern>
 </filter-mapping>

porém não funciona, ele acaba entrando na pagina.

EuclidesFilizola

e ae moçada, nenhuma boa idéia ?

EuclidesFilizola

Resolvi pessoal.

aqui está meu filtro

public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {

		HttpSession session = ((HttpServletRequest) req).getSession();

		if (municipioDao.procurarMunicipioNulo()) {

			session.setAttribute("msg", "redirecinando..");

			((HttpServletResponse) resp).sendRedirect("./municipioNulo.jsf");

		} else {

			chain.doFilter(req, resp);

		}

e aqui ficou o mapeamento dele.

<filter>
  <display-name>FiltroVerificaMunicipio</display-name>
  <filter-name>FiltroVerificaMunicipio</filter-name>
  <filter-class>br.com.empresa.projeto.comum.utilitario.FiltroVerificacaoMunicipio</filter-class>
 </filter>


 </filter-mapping>
  <filter-mapping>
  <filter-name>FiltroVerificaMunicipio</filter-name>
  <url-pattern>/index.jsp</url-pattern>
 </filter-mapping>

Agradecendo a atenção de todos.

Abraços.

Giulliano

Legal chefe…mas dá uma pesquisada melhor sobre filtros…

o método que faltava na sua lógica SEMPRE deve ser executado…e vc colocou ele dentro de um if else

Criado 20 de setembro de 2010
Ultima resposta 21 de set. de 2010
Respostas 7
Participantes 2