Bom dia galera. Gostaria de saber duas coisas.
1 - qual a funcao deste elemento (<dispatcher>FORWARD</dispatcher>) dentro de um mapeamento de Filter?
2 - se acaso eu der um RequestDispatcher no meu filtro, mesmo assim ele vai ter que passar pelo servlet?
Os codigos estao abaixo.
Referente a primeira duvida.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
compras</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- Servlets -->
<servlet>
<servlet-name>ControleCompras</servlet-name>
<servlet-class>br.com.controler.Controler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControleCompras</servlet-name>
<url-pattern>/Controler.do</url-pattern>
</servlet-mapping>
<!-- Filters -->
<filter>
<filter-name>VerificaUsuario</filter-name>
<filter-class>br.com.controler.VerificaUsuario</filter-class>
</filter>
<filter-mapping>
<filter-name>VerificaUsuario</filter-name>
<url-pattern>/Controler.do</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
</web-app>
Agora o meu Filter a respeito da segunda duvida
package br.com.controler;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
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.vo.Usuario;
public class VerificaUsuario implements Filter {
private FilterConfig config;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String usuario = req.getParameter("usuario");
String password = req.getParameter("senha");
if (usuario == null || password == null) {
RequestDispatcher view = req.getRequestDispatcher("erro.jsp");
view.forward(req, resp);
chain.doFilter(req, resp);
} else {
RequestDispatcher view = req.getRequestDispatcher("menu.jsp");
view.forward(req, resp);
chain.doFilter(req, resp);
}
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config = config;
}
}
A minha pagina index.html coloca o action para o Controler.do. Ou seja ela aponta para o mesmo lugar do servlet e do Filter.
Obrigado pessoal