Olá,
Estou com um problema após a session expirar na minha pagina (estou usando Servlet). O problema é o seguinte:
Eu faço login na pagina; clico no menu para ir para a pagina de histórico de pedidos, e espero o tempo de inatividade passar; recarrego a pagina e ele desloga normalmente; até ai tudo funcionando normalmente. Quando logo novamente ele vai para a pagina inicial e quando clico para ir para o histórico ele retorna para a pagina de login, e se eu recarregar a pagina de login sem refazer o login ele abre a pagina de histórico normalmente. O mais estranho é que quando ele volta para a pagina de login é como se ela ficasse "invisível", ela não passa pelo Controller, muito menos entra na classe Historico. Abaixo as três classes utilizadas neste processo:
Classe Login:
public class Login implements Tarefa {
@Override
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
String email = req.getParameter("e-mail");
String senha = req.getParameter("senha");
try (Connection con = new ConnectionPool().getConnetion()) {
Empresa empresa = new EmpresaDAO(con).buscaLogin(email, senha);
if (empresa != null) {
System.out.println("Fiz o login");
HttpSession session = req.getSession();
session.setAttribute("usuarioLogado", empresa);
session.setMaxInactiveInterval(20);
return "/WEB-INF/paginas/pedidos.jsp";
}
}
System.out.println("retornei o index do login");
return "/index.html";
}
}
Classe Controller
@WebServlet(urlPatterns = "/exec")
public class Controller extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String tarefa = req.getParameter("tarefa");
System.out.println("entrei na classe Controller");
if(tarefa == null) {
throw new IllegalArgumentException("Voce esqueceu de passar a tarefa");
}
try {
String nomeClasse = "br.com.portal.hidrosistemas.web." + tarefa;
Class<?> type = Class.forName(nomeClasse);
Tarefa instancia = (Tarefa) type.newInstance();
String pagina = instancia.executa(req, resp);
RequestDispatcher dispatcher = req.getServletContext().getRequestDispatcher(pagina);
System.out.println(pagina);
dispatcher.forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Classe Historico
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.out.println("entrei na classe Historico");
HttpSession session = req.getSession();
Empresa usuario = (Empresa) session.getAttribute("usuarioLogado");
if(usuario == null) {
System.out.println("entrei no null");
return "/index.html";
}else {
try (Connection con = new ConnectionPool().getConnetion()) {
System.out.println("entrei no session");
session.getMaxInactiveInterval();
List<HistoricoPedido> hist = new HistoricoPedidosDAO(con).listaHistoricoPedidos(usuario.getId());
session.setAttribute("historicoPedido", hist);
return "/WEB-INF/paginas/historico.jsp";
}
}
}
}