[Resolvido]Cadastro de usuario

7 respostas
C

Pessoal, preciso fazer um cadastro de usuario, consegui fazer, só que eu tenho que fazer uma validação de saber se esse login já está em uso ou não, to sem a lógica. Alguém poderia me ajudar ? Eu teria que ir dentro do meu Controle com nome de manterusuario e criar um método disso né ?

Grato

Login
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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">
<title>Login</title>
</head>
<body>
<h3>Login</h3>
<p/><hr/><p/>
<form method="post" action="ControleAcesso">

<p />Login:<br />
<input type="text" name="login" size="15" />
<p />Senha:<br />
<input type="password" name="senha" size="15" />

<p /><input type="submit" value="Logar" /> <input type="reset"
	value="Limpar os campos" />
	
<p />
<h5>${msg}</h5>
<p /><a href="index.jsp">Clique aqui</a> para voltar a pagina inicial.
<p />Não é cadastrado? <a href="cadastrar.jsp">Clique aqui.</a>
</body>
</html>

Cadastro

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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">
<title>Pagina de Cadastro</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
</head>
<body>
<h3>Cadastro de Usuários</h3>
<p/><hr/><p/>
<form method="post" id="formcadastro" action="ManterUsuario">
Nome:
	<input type="text" name="nome" size="15" /><p/>
Login: 
	<input type="text" name="login" size="15" /><p/>
Senha:       
	<input type="password" id="senha" name="senha" size="15" /><p/>
Confirmar a senha:
	<input type="password" id="confsenha" name="senha" size="15" /><p/>
Função:
	<select name="nivel">
		<option value="ADM">Administrador</option>
		<option value="COMUM">Usuário</option>
	</select><p/>
<input type="submit" value="Cadastrar" />
<input type="reset" value="Apagar os dados" /><p/>
<p/>
<a href="index.jsp">Clique aqui</a> para voltar para a página inicial.<p/>
Já tem um cadastro? <a href="login.jsp">Clique aqui.</a>
</form>
<h5>${msg}</h5>
<!-- Regra de validaçao -->
<script type="text/javascript">
	$("#formcadastro").validate({
		rules:{
			 
		nome:{required: true,
		 		minlength: 3},
		login:{required: true,
				rangelength:[3,8]},
		senha:{required: true,
					rangelength:[3,8]},
		confsenha:{equalTo:"#senha"
					}
		},
		messages:{
		nome:{required: "Campo nome é obrigatório.",
	 		minlength:"O campo deve ter no mínimo {0} caracteres"},
	 		
		login:{required: "Campo login é obrigatório.",
			rangelength:"O campo deve ter no mínimo {0} caracteres e no maximo {1}."},
			
		senha:{required: "Campo senha é obrigatório.",
				rangelength:"O campo deve ter no mínimo {0} caracteres e no maximo {1}."},
				
		confsenha:{equalTo:"As senhas digitadas são diferentes. Repita a senha digitada no campo senha."
				}

			}
		}
	
);
	
	
	
</script>
</body>
</html>

7 Respostas

K

voce pode fazer um formulario antes do cadastro para verificar se aquele login ja existe, se ja existir criar outro, se não continua com o cadastro.

ou utilizar o ajax para fazer a validação do login no banco.

J

Não seria mais fácil no momento da criação da tabela você dizer que o login é chave primária ?
Desta forma, você teria a certeza que o login, não se repetiria.

L

Outra alternativa é colocar o atributo login como unique no banco, assim voce garante que ele não ira se repetir.

K

mas isso não garante que a aplicação não vai dar pau, tem que tratar na aplicação mesmo sendo uma chave primaria ou não.

eu fiz uma alicação web, que não poderia ter usuario repetidos.
tive que tratar na aplicação pois o banco com chave primaria me retornava uma exceção.

J

É tem razão Kleberson, ele gera uma exerção quando o indici for duplicado.

Você pode colocar isso no mapeamento do seu login:

[code @org.hibernate.annotations.NaturalId[/code]

Fará com que o login hão possa ser repetido.

J

joaolenosi:
É tem razão Kleberson, ele gera uma exerção quando o indici for duplicado.

Você pode colocar isso no mapeamento do seu login:

@org.hibernate.annotations.NaturalId

Fará com que o login hão possa ser repetido.

C

O trabalho é em JDBC....
Pessoal já resolvi com um amigo aqui ele me ajudou ....

Resolução foi simples e eu tinha em mente ... Criar um novo metodo no Dao do usuario com as seguintes propriedades
public boolean existe(String login) throws Exception{
		open();
		try {

			stmt = con.prepareStatement("select * from usuarios where login = ?");
			stmt.setString(1, login);
			ResultSet rs = stmt.executeQuery();
			String msg = null;
			if (rs.next()) {
				msg = "Já existe esse login, favor utilizar outro";
				return true;
				
			}else{
				return false;
			}	
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Erro: "+e.getMessage());
			return true;
		}finally{
			stmt.close();
			close();
		}
				
	}

e no meu manterusuario por um if para a comparação

String msg = null;
		try {
			Usuario u = new Usuario(null,
									request.getParameter("nome"),
									request.getParameter("login"),
									request.getParameter("senha"),
									request.getParameter("nivel"));
			
			if (new UsuarioDao().existe(request.getParameter("login"))) {
				msg = "Login  existe no nosso banco de dados, por favor escolher um novo.";
			} else {
				new UsuarioDao().criar(u);
				msg = "Usuario cadastrado com sucesso. ";	
			}
			
			
		} catch (Exception e) {
		e.printStackTrace();
		msg ="Erro: "+e.getMessage();
		}
	request.setAttribute("msg", msg);
	request.getRequestDispatcher("cadastrar.jsp").forward(request, response);
	}
Criado 11 de julho de 2012
Ultima resposta 11 de jul. de 2012
Respostas 7
Participantes 4