Como funciona um filtro

0 respostas
cleriston

Olá pessoal!
Em que momento um filtro é acionado?
Pois eu fiz o seguinte mapeamento :

<filter>
		<filter-name>filtro</filter-name>
		<filter-class>br.teste.controller.filtro.Filtro</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>filtro</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;

import br.keko.model.Tag;
import br.keko.util.HibernateUtil;


public class ManutencaoTag extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	
		Session session = HibernateUtil.getSessionFactory().openSession();
		session.beginTransaction();
		
		Tag tag = new Tag();
		tag.setTagId(Integer.parseInt(request.getParameter("tagid")));
		tag.setNome(request.getParameter("nome"));
		
		session.saveOrUpdate(tag);

		session.getTransaction().commit();
		session.close();		
				
		if (Integer.parseInt(request.getParameter("tagid"))==0){
			request.setAttribute("mensagem", "Tag "+request.getParameter("nome")+" incluído com sucesso.");
		}
		else {
			request.setAttribute("mensagem", "Tag "+request.getParameter("nome")+" editado com sucesso.");			
		}
		System.out.println("EDITA/INSERE");
		RequestDispatcher rd = getServletContext().getRequestDispatcher("/tag");		
		rd.forward(request, response);
		
	}

}

o mapeamento do /tag está para a seguinte classe :

package br.keko.controller.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;

import br.keko.model.Tag;
import br.keko.util.HibernateUtil;

public class TagServices extends HttpServlet {
	private Tag tag;
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String acao = request.getParameter("action");
				
		if ((acao!=null) && (acao.equals("novo"))){
			tag = new Tag();			
			request.setAttribute("mensagem","Inserindo nova tag");
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/editainsere.jsp");		
			request.setAttribute("tag", tag);
			rd.forward(request, response);		
		}
		else if ((acao!=null) && (acao.equals("edita"))){			
			Session session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();
			request.setAttribute("mensagem","editando tag");
			tag = (Tag)session.load(Tag.class, Integer.parseInt(request.getParameter("idtag")));
			
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/editainsere.jsp");		
			request.setAttribute("tag", tag);
			System.out.println("EDITA1");
			rd.forward(request, response);		
			System.out.println("EDITA2'");
			
			session.getTransaction().commit();
			session.close();
		}		
		else {
			Session session = HibernateUtil.getSessionFactory().openSession();
			session.beginTransaction();

			List tags = session.createQuery("from Tag order by nome").list();
			System.out.println("LISTA");
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/listatag.jsp");		
			request.setAttribute("tags", tags);
			
			rd.forward(request, response);
						
			session.getTransaction().commit();
			session.close();			
		}
	}
}

Entao eu percebi que o filtro comparta da seguinte maneira :
[list]Chama o filtro e o “doChain” do filtro[/list]
[list]Entra no ManutencaoTag e o mesmo faz um forward para TagServices[/list]
[list]Passa pelo codigo depois do “doChain” do filtro[/list]

No momento que o ManutencaoTag faz um forward para TagServices nao era para entrar no filtro novamente??? O filtro não é “chamado” a cada entrada em um Servlet??

Criado 10 de julho de 2007
Respostas 0
Participantes 1