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:
[code]/*
- 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
}
}
[/code]
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:
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>
Servlet do login LoginServlet:
[code]/*
- 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
GET
andPOST
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”);
}
//
/**- Handles the HTTP
GET
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
POST
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”;
}//
}
[/code]
-
Espero q possam me ajudar, obrigado.