Olá colega não sei se pode ajudar, mas tem essa forma simples de autenticar e manter usuario logado enquanto ele não informar que irá sair.
Primeiramente voce pode criar uma classe de DAO:
public class UserLogin {
private String login;
private String senha;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
Depois crier uma classe de Filtro para interceptar todas as url que usuario tentar acessar:
@WebFilter(urlPatterns = {"/pages/*"})
public class FilterAutenticacao implements Filter{
private static Connection connection;
//EXECUTA ALGO QUANDO APLICAÇÃO É DERRUBADA
@Override
public void destroy() { }
//INTERCEPTA TODAS AS REQUIÇÕES
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
/*
* IREMOS VERIFICAR SE O USUARIO ESTÁ LOGADO
*/
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
String urlParaAutenticar = req.getServletPath();
//RETORNA NULL CASO NÃO ESTEJA LOGADO
UserLogin userlogado = (UserLogin) session.getAttribute("usuario");
if(userlogado == null && !urlParaAutenticar.equalsIgnoreCase("/pages/ServletAutenticacao")) {//USUARIO NÃO LOGADO
RequestDispatcher dispatcher = request.getRequestDispatcher("/autenticar.jsp?url="+urlParaAutenticar);
dispatcher.forward(request, response);
return; //PARA O PROCESSO REDIRECIONAR
}
//EXECUTA AS AÇÕES DO REQUEST E RESPONSE
chain.doFilter(request, response);
}
//EXECUTA ALGO QUANDO A APLICAÇÃO É INICIADA
@Override
public void init(FilterConfig filterConfig) throws ServletException {
connection = ConnectionDataBase.getConnectionDB();
connectionDataBase2 = ConnectionDataBase2.getConnectionDB2();
//connectionMySQL = ConnectionDataBaseMySQL.getConnectionDBMySQL();
}
}
Depois você cria a Servlet que irá receber os parâmetros para o acesso e que irá remove o usuário da sessão quando acionar algum botão para deslogar.
@WebServlet("/pages/ServletAutenticacao")
public class ServletAutenticacao extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletAutenticacao() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
if(Boolean.parseBoolean(request.getParameter("deslogar"))) {
//ADICIONA USUARIO LOGADO NA SESSÃO
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
session.invalidate();
//redireciona para login novamente
response.sendRedirect("../index.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String url = request.getParameter("url");
//NESTE MOMENTO PODE SER FEITO UMA VALIDAÇÃO NO BANCO DE DADOS
if(login.equalsIgnoreCase("admin") && senha.equalsIgnoreCase("123")) {
UserLogin userLogin = new UserLogin();
userLogin.setLogin(login);
userLogin.setSenha(senha);
//ADICIONA USUARIO LOGADO NA SESSÃO
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
session.setAttribute("usuario", userLogin);
//REDIRECIONA PARA O SISTEMA E AUTORIZA
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);
}else {
//REDIRECIONA PARA LOGIN NOVAMENTE
RequestDispatcher dispatcher = request.getRequestDispatcher("/autenticar.jsp");
dispatcher.forward(request, response);
}
}
}
Aqui é o JSP para realizar o post da autenticação que irá para ServletAutenticacao:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>AUTENTICAÇÃO</title>
</head>
<body>
<h1>AUTENTICAR USUARIO</h1>
<form action="ServletAutenticacao" method="post">
<input type="hidden" id="url" name="url" value="<%= request.getParameter("url") %>">
<table>
<tr>
<td>Login</td>
<td><input type="text" name="login"></td>
</tr>
<tr>
<td>Senha</td>
<td><input type="password" name="senha"></td>
</tr>
<tr>
<td><input type="submit" value="Logar"></td>
</tr>
</table>
</form>
</body>
</html>
Espero que isso possa ajuda-lo em seu projeto.