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

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 ?

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.

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);

        }
		

		
		
	}

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

[quote=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[/quote]

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.

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

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.

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