Tecnologias a serem usadas Spring MVC, Filter, Arquitetura Web [Resolvido]

3 respostas
P

Pessoal blz?

Eu estou fazendo um site com telas JSP, comunicação com Servlet, clases e DAO, e terá autenticação (login e senha), usuários em session e persistência no BD.

Tenho pouco conhecimento, mas sei fazer uma tela jsp enviar e receber dados do servlet que passa para as classes que busca no BD, mas me falta essa parte de estrutura de conhecimentos em autenticações (login, senha e perfis de usuário), usuários na session (tempo que está la).

Estava estudando Spring MVC (http://www.caelum.com.br/apostila-java-web/spring-mvc-autenticacao-e-autorizacao/#12-9-exercicios-opcionais-logout) lá eles falam bem de autenticar e usuários na session e tal (Me corrigem se eu estiver errado), mas um amigo me solicitou que eu usasse filter (http://www.caelum.com.br/apostila-java-web/recursos-importantes-filtros/#10-6-exercicios-filtros) que é mais simples, mas não entendi muito bem, parece que não tem a mesma funcionalidade que eu preciso…

Alguém poderia me dar uma luz de conhecimento?? um sistema web mais adequado

3 Respostas

P

Pessoal,

Em uma outra ocasião eu usei scriptlet e fiquei manipulando o usuário na session para habilitar ou não acesso a algumas opções de menu por exemplo (perfil de usuário).

Também no sentido de se ele tentar entrar em uma tela diretamente sem estar logado ele ser direcionado para a página de login.

Mas não sei se isso é o melhor caminho e se é um caminho válido.

Um exemplo do que eu estou falando:

<body>
 <% VerificaUsuario verifica = new VerificaUsuario(); if (request.getSession().getAttribute("loginUsuario") != null) { %>

		<div class="titulo"> <img src="./img/logo.png" border="0" width="128"> 
		<div class="tela"><b>Principal</b></div>
			<div class="direita"><input type="button" onclick="javascript: if (confirm('Deseja Fazer Logout?')) {window.location.href='logout.jsp'} else { void('') };" value="Logout"><br></div>
		</div>

		<hr>
<div id='cssmenu'>
<ul>
   <li class='active'><a href='index.jsp'><span>Principal</span></a></li>
   <li class='has-sub'><a href='#'><span>Consultas</span></a>
      <ul>
         <li><a href='consultaUnitaria.jsp'><span>Unit&aacute;ria</span></a></li>
      </ul>
   </li>
   <li class='has-sub'><a href='#'><span>Gerar Relat&oacute;rio</span></a>
      <ul>
         <li><a href='geraRelatorioAtual.jsp'><span>&Uacute;ltima Atualiza&ccedil;&atilde;o</span></a></li>
      </ul>
   </li>
   <% if (verifica.verificaUsuarioADM(request.getSession().getAttribute("loginUsuario").toString())) {%>
   <li class='has-sub'><a href='#'><span>Upload</span></a>
      <ul>
         <li class='last'><a href='uploadArquivoCancelaChip.jsp'><span>Cancelar Chip</span></a></li>
      </ul>
   </li>
   <li class='has-sub'><a href='#'><span>Cadastro</span></a>
      <ul>
         <li><a href='cadastrarUsuario.jsp'><span>Cadastrar Usu&aacute;rio</span></a></li>
      </ul>
   </li>
   <%} %>
   
</ul>
</div>
</body>
javaflex

Se o projeto é para fins profissionais, usa Spring MVC: http://www.simpledev.com.br/simplificando-springmvc.html E depois pesquise sobre segurança com ele.

P

Javaflex, obrigado pela resposta, demorei a responder porque estava tentando implementar o spring ou o filter, mas não consegui....

Estou usando uma maneira mais simples (não muito bonita e talvez não muito segura) mas funcional:

Telaa de login chama a access para ser inserida os dados:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import ="br.com.pgpm.usuario.VerificaUsuario" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--[if lte IE 6]>
	<script type="text/javascript">alert("Sua vers&atilde;o de Browser est&aacute; desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if gte IE 7]>
	<script type="text/javascript">alert("Sua vers&atilde;o de Browser est&aacute; desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if gte IE 8]>
	<script type="text/javascript">alert("Sua vers&atilde;o de Browser est&aacute; desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if IE 9]>
	<script type="text/javascript">alert("Sua vers&atilde;o de Browser est&aacute; desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->  

<!--[if lte IE 6]>
	<script type="text/javascript">alert("Sua versão de Browser está desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if gte IE 7]>
	<script type="text/javascript">alert("Sua versão de Browser está desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if gte IE 8]>
	<script type="text/javascript">alert("Sua versão de Browser está desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<!--[if IE 9]>
	<script type="text/javascript">alert("Sua versão de Browser está desatualizada");location.href='http://www.updateyourbrowser.net/pt'; </script>
<![endif]-->

<html>
	<head>
		<title> PGPM - Login </title>
		<script type="text/javascript" src="http://updateyourbrowser.net/asn.js"> </script>
		<meta name="description" content="Tela login do PGPM">
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">	 
	</head>
 <% if (request.getSession().getAttribute("loginUsuario") != null) {%>
	
  <script type="text/javascript">  
      
      if (window.top != window.self) {  
        window.top.location="index.jsp";
      }  
    
  </script>	
 <%} else {%>	
    <frameset rows="8%,80%,4.3%" border="1" frameborder="1">
        <frame name="head" src="header.jsp" noresize="no">
        <frameset cols="100%"border="0" frameborder="0">
        	<frame src="access.jsp" noresize="no"></frame>
    	</frameset>
        <frame name="foot" src="foot.jsp" noresize="no">
    </frameset>
</html>
<% } %>

Na access envia para o servlet:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<link rel='stylesheet' type='text/css' href='css/padraoVisual.css'>
<title>Acesso - PGPM</title>

</head>
    <body> 
	<center>
		<form action="ServletValidaLogin" method="post">
			<input type="hidden" id="msgRetornoLogin" value="<c:out value="${msgRetornoLogin}"/>" />
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
			<table border="1px" cellspacing="0" cellpadding="6">
				<tr class="tabelaAcesso">
					<td style="border-color: white" style="border-style:groove"	colspan="3">Acessar</td>
				</tr>
				<tr class="textoAcesso">
					<td align="left" style="border-color: white" style="border-style:groove">Login:</td>
					<td><input type="text" name="login" id="login" align="left" maxlength=15 style="background-color: #DCDCDC"></td>
				</tr>
				<tr class="textoAcesso">
					<td align="left" style="border-color: white" style="border-style:groove">Senha:</td>
					<td><input type="password" name="senha" id="senha" align="left" maxlength=15 style="background-color: #DCDCDC"></td>
				</tr>
			</table>
			<br>
			<input type="submit" value="Acessar">
		</form>
	</center>
	
</body>

	<script>
		var msgRetornoLogin = document.getElementById("msgRetornoLogin");

		if (msgRetornoLogin != null && msgRetornoLogin.value != "") {

			alert(msgRetornoLogin.value);

		}
	</script>

</html>

No servlet retorna a resposta para a tela de login, e se o login estiver correto será direcionado para a tela principal index.jsp pela tela de login:

package br.com.pgpm.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.pgpm.usuario.VerificaUsuario;

/**
 * Classe: ServletCadastroUsuario
 * 
 * Objetvio:
 * 
 * Receber e tratar da comunicação entre o JSP e a classe
 * VerificaCadastroDAO.java e tratar os valores
 * 
 * Comentário:
 * 
 * Seta os parâmetros para enviar ao BD e tratar os valores enviados pela
 * cadastrarUsuario.jsp e retornar o valor para a mesma
 * 
 * Dos métodos:
 * 
 **/

@WebServlet("/ServletValidaLogin")
public class ServletValidaLogin extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public ServletValidaLogin() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");

		VerificaUsuario verifica = new VerificaUsuario();
		String login = "a";//request.getParameter("login");
		String senha = request.getParameter("senha");
		String msgRetornoLogin = null;
		
		try {
			boolean status = verifica.verificarUsuario(login, senha);

			boolean a = true;
			if (a == true) { // teste

				request.getSession().setAttribute("loginUsuario", login);  

				response.sendRedirect("login.jsp");
				
			} else {

				msgRetornoLogin = "Login e/ou Senha inválido(s)";
				request.setAttribute("msgRetornoLogin", msgRetornoLogin);
				request.getRequestDispatcher("access.jsp").forward(request, response); 
			}

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);

	}
}
Criado 7 de julho de 2014
Ultima resposta 15 de jul. de 2014
Respostas 3
Participantes 2