Login com JSP/servlets + PostgreSQL – Parte 1

Bem, neste post irei exemplificar um sistema de Login/Senha (beeem básico) com java web. Acredito que o mesmo será interessante para aqueles que querem iniciar com Java web. Para este tutorial, é necessário já estar familiarizado com Java, conhecer o básico de JSP/Servlets, Banco de dados e alguma IDE (Eclipse, NetBeans, etc).

Mesmo sendo um tutorial super simples, tentarei exemplificar de uma forma bem decente, em MVC, e utilizando algumas custom tags de JSTL(JavaServer Pages Standard Tag Library).

Passos:

#1 – Criação do Banco de dados
O primeiro passo é a criação do Banco de Dados. Para este exemplo, será apenas uma tabela de usuário, com os campos id, nome, login e senha, conforme abaixo:

create table usuario(
    id integer not null,
    nome varchar(30) not null,
    login varchar(20) not null,
    senha varchar(20) not null,
    constraint pk_usuario primary key (id)
);

Obs: este tutorial supõe que o leitor já conheça como criar bases e tabelas no banco de dados. Outro ponto importante é que o mesmo pode ser utilizado em qualquer banco de dados além do postgres, apenas efetuando pequenas alterações nos códigos SQL, quando necessário.

#2 – Populando a tabela de usuários
Vamos criar um usuário, para podermos utilizar o mesmo para efetuar o login:

insert into usuario values (1, 'Hallan Medeiros', 'hallan', 'hallan2009' );

#3 – Criando o projeto
Abra sua IDE de preferência (Eclipse, NetBeans, etc) e crie um projeto web. Para quem conhece pouco, a estrutura básica de um projeto web java deve ser:

.        -> arquivos, html, jsp, etc
WEB-INF
|
|-classes      -> classes java compiladas
|-lib               -> bibliotecas a serem utilizadas
`-web.xml -> arquivo de configuração da aplicação (deployment descriptor)

Não irei entrar em detalhes de como criar o projeto: novamente, o tutorial supõe que o leitor já conheça pelo menos o básico do Eclipse/NetBeans, etc.

4# – Adicionando as bibliotecas
Para este projeto, é necessário a biblioteca de conexão com o Banco de Dados (driver JDBC) e as bibliotecas do JSTL.
No caso do postgres:
postgresql.jdbc4.jar

Caso seja outro Banco de Dados (MySQL, Oracle, etc), deve-se utilizar o conector do respectivo banco.

As libs para se usar o JSTL são:
standard.jar
jstl.jar

Ambas podem ser baixadas no site do apache

No final deste tutorial (na parte 2) irei disponibilizar um projeto do Eclipse, com os arquivos, mais as libs utilizadas.

5# – Estrutura de pacotes do projeto
O projeto terá os seguintes pacotes (packages):
login -> onde irá ficar o servlet que fará a verificação do usuário
model.dao -> onde ficará o DAO do usuário
model.bean -> inde ficará a classe do usuário

6# – Criar a classe de Usuário
O próximo passo será criar a classe de Usuário. A mesma terá os mesmos dados da tabela de usuários do Banco, conforme abaixo:

package model.bean;

/**
 * 
 * @author hallan medeiros
 *
 */
public class Usuario {
	
	private int id;
	private String nome;
	private String login;
	private String senha;
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	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;
	}
}


7# – Criar o DAO do usuário
Abaixo, o código da classe de DAO do usuário:

package model.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.bean.Usuario;

/**
 * 
 * @author hallan medeiros
 *
 */
public class DaoUsuario {

	public Connection getConnection(){
		Connection connection = null;
		try {
			Class.forName("org.postgresql.Driver");
			connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/nome_banco", "usuario_banco", "senha_banco");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
		return connection;
	}


	public Usuario getUsuario( String login, String senha ){
		Connection c = this.getConnection();
		PreparedStatement ps = null;
		ResultSet rs = null;
		try{
			ps = c.prepareStatement("select id, nome from usuario where login = ? and senha = ?");
			ps.setString(1, login);
			ps.setString(2, senha);

			rs = ps.executeQuery();

			if ( rs.next() ){
				Usuario user = new Usuario();
				user.setId( rs.getInt("id") );
				user.setLogin(login);
				user.setSenha(senha);
				user.setNome( rs.getString("nome") );

				return user;
			}
		}
		catch (SQLException e){
			e.printStackTrace();
		}
		finally{
			if (rs != null ) {
				try { rs.close(); } catch (SQLException e) { ; }
				rs = null;
			}
			if (ps != null ) {
				try { ps.close(); } catch (SQLException e) { ; }
				ps = null;
			}
			if (c != null ) {
				try { c.close(); } catch (SQLException e) { ; }
				c = null;
			}
		}
		return null;
	}

}

Bom, no próximo post veremos como criar a página de login, de logado e de erro, e o servlet de validação do usuário, em MVC.

Abraço!

Deixe um Comentário

4 Comentários.

  1. Cara não sei como você consegue… o__O

  2. primeiramente obrigad pelo ensinamento.
    criei um projeto em eclipse para aprender como é feito mas na hora de rodar não encontro a validaLogin.do. Estou com tomcat 7.0.12 junto com o eclipse. vc pode me ajudar?

  3. Valeu mesmo cara!.. -:)

  4. cara o meu ta dando erro naqueles pontos e vírgulas :/
    e da The requested resource is not available.

Deixe um Comentário


NOTA - Você pode usar estesHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>