Estou aprendendo JSP, e já fiz com que o usuário não entre no sistema caso não esteja Logado.
Controller
@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parametro = request.getParameter("logica");
if(parametro == null){
throw new IllegalArgumentException("Falta passar o parametro.");
}
try {
String nomeDaClasse = "br.com.triadworks.todoList.logica." + parametro;
Class<?> classe = Class.forName(nomeDaClasse);
Logica logica = (Logica) classe.newInstance();
String pagina = logica.executa(request, response);
request.getRequestDispatcher(pagina).forward(request, response);
} catch (Exception e) {
throw new ServletException("A lógica causou uma exceção!", e);
}
}
}
public interface Logica {
String executa(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
Logica
public class AdicionaTarefa implements Logica {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response) {
if (request.getSession().getAttribute("usuarioLogado") != null) {
Connection connection = (Connection) request.getAttribute("connection");
List<Usuario> usuarios = new UsuarioDAO(connection).buscarTodosUsuarios();
List<Situacao> statusSituacao = Arrays.asList(Situacao.values());
request.setAttribute("usuarios", usuarios);
request.setAttribute("statusTarefas", statusSituacao);
return "WEB-INF/jsp/view/adicionar.jsp";
}
return "mvc?logica=TelaLogin";
}
}
Classe que eu pego o Usuário e guardo na sessão
public class LoginTarefaLogic implements Logica {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {
Connection connection = (Connection) request.getAttribute("connection");
String login = request.getParameter("usuario");
String senha = request.getParameter("senha");
Usuario usuarioAutenticado = new UsuarioDAO(connection).autenticar(new Usuario(login, senha));
if (usuarioAutenticado != null) {
System.out.println(request.getRequestURI());
pegaSessaoUsuario(request, usuarioAutenticado);
return "mvc?logica=AdicionaTarefa";
} else {
return "mvc?logica=TelaLogin";
}
}
public static void pegaSessaoUsuario(HttpServletRequest request, Usuario usuarioAutenticado) {
HttpSession session = request.getSession();
session.setAttribute("usuarioLogado", usuarioAutenticado);
System.out.println("Usuario: " +usuarioAutenticado.getNome() + "ID" + usuarioAutenticado.getId() + "senha: " +usuarioAutenticado.getSenha());
}
}
OBS: Minhas páginas estão escondidas dentro de WEB-INF/jsp/view
OBS: Como faço para aplicar um filter nesse meu código? Veja que cada logica estou colocando um if para saber se existe Sessão, e isso pode ficar trabalhoso porque eu posso ter muitas Logicas...