Pessoal, meu primeiro topico, espero que possam me ajudar.
Estou criando um site com login, estou usando Filter para tratar a sessão do login.
classe do filtro, FiltroLogin:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package filtros;
import java.io.IOException;
import java.util.Date;
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;
/**
*
* @author Rodrigo
*/
public class FiltroLogin implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("Filter sendo executado - FILTRO LOGIN");
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession();
if (session.getAttribute("usuarioLogado") != null) {
System.out.println("AQUI LOGADO");
chain.doFilter(request, response);
} else {
System.out.println("AQUI NAO LOGADO");
resp.sendRedirect("login.jsp");
//request.getRequestDispatcher("/LoginServlet").forward(request, response);
}
}
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
//add code to release any resource
}
}
Até aonde eu encontrei no google, está correto, a classe de filtro,
a ideia é simples, toda vez q for solicitada uma página, passa pelo filtro e ve se já existe usuário logado, se existir, tudo bem, chama o chain e continua o site, se não, manda o usuário para a tela de login.
Porem quando eu mando executar, em qualquer página que eu abro o firefox dá uma mensagem de erro:
[IMG]http://img854.imageshack.us/img854/6701/errofirefox.th.jpg[/IMG]
Já tentei trocar de login.jsp para o servlet /LoginServlet mesmo assim não funciona, ele não dá o erro do firefox, mas tambêm não mostra página nenhuma.
ja tentei trocar de redirect para o dispatcher, como ta em comentário ali e não deu.
web.xml<filter>
<filter-name>filtroz</filter-name>
<filter-class>filtros.FiltroLogin</filter-class>
</filter>
<filter-mapping>
<filter-name>filtroz</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.DAO.UsuarioDAO;
import model.Usuario;
/**
*
* @author Rodrigo
*/
public class LoginServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String jsp = "";
String login = request.getParameter("login");
String senha = request.getParameter("senha");
Usuario usr = new Usuario();
usr.setLogin(login);
usr.setSenha(senha);
UsuarioDAO usrDAO = new UsuarioDAO();
try {
boolean us = usrDAO.validarLogin(usr);
if (us) {
request.getSession().setAttribute("usuarioLogado", usr);
jsp = "/PrincipalServlet";
} else {
jsp = "/erro.jsp";
}
} catch (Exception e) {
e.printStackTrace();
jsp = "";
}
request.getRequestDispatcher(jsp).forward(request, response);
//response.sendRedirect("principal.jsp");
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.sendRedirect("login.jsp");
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Espero q possam me ajudar, obrigado.
