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??