Abaixo estão os códigos de implementação do projeto utilizando Facade.
Exemplo de implementação de uma classe de conexão com o Banco de dados MySQL.
package aula;
import java.sql.*;
import java.util.*;
/** Classe que realiza conexão com o banco
de dados
Neste exemplo é mostrado para um conexão com o Banco de Dados
MySQL.
Pode-se passar o nome ou o IP para identificar o servidor.
*/
public class Conexao{
String jdbc=”jdbc:mysql://localhost/bdaula“;
private String usuario = “root”;
private String senha = “123”;
Statement st;
Connection conexao;
private String msg=””;
private String sql=null;
ResultSet rs=null;
/** Construtor default */
public Conexao() {
try{
Class.forName(“com.mysql.jdbc.Driver“);
this.conexao = DriverManager.getConnection(jdbc,usuario,senha);
this.st = this.conexao.createStatement();
this.msg=”Conexão estabelecida com exito !\n”;
}
catch(ClassNotFoundException e) {
this.msg=”Driver JDBC-ODBC não encontrado!.Verifique a classe do
Driver”;
getmsg();
}
catch(SQLException e) {
this.msg=”Problemas na conexao com a fonte de dados,verifique o SQL passado.”;
getmsg();
}
}
/** Método para imprimir no console */
public void getmsg(){
System.out.println(this.msg);
}
/**Método para retornar a variável
de menagem*/
public String getMsg(){
return this.msg;
}
public void fecharConexao()throws SQLException{
try{
this.st.close();
this.conexao.close();
}catch(SQLException e){
this.msg=”Não foi possível fechar a conexao”;
getmsg();
e.printStackTrace();
}
}
public Connection getConexao() {
return conexao;
}
}
1- Desenvolva uma página em JSP que utilize esta classe de conexão com o banco de dados, e ao final apresente o valor da variável de mensagem da classe de conexão.
2- Crie um banco de dados no MySQL chamado bdaula, contendo apenas uma tabela chamada usuário. Esta tabela devera conter os campos: login, senha e nome.
usuario(login,senha,nome)
create table usuario(
login varchar(12) not null,
senha varchar(12) not null,
nome varchar(12) not null,
primary key(login)
)
3-Alimente esta tabela com cinco registros.
4- Crie uma classe usuário em java, com os mesmo atributos definidos para a tabela usuário.
package aula;
public class Usuario {
private String nome;
private String login;
private String senha;
public Usuario() {
}
public Usuario(String nome,String login,String senha) {
this.nome = nome;
this.login = login;
this.senha = senha;
}
public String getLogin() {
return this.login;
}
public String getNome() {
return this.nome;
}
public String getSenha() {
return this.senha;
}
public void setLogin(String login) {
this.login = login;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
5- Para a classe usuário,crie uma classe com o mesmo nome e sufixo BD, onde deverão ficar as instruções e SQL.
package aula;
import java.sql.*;
import java.util.*;
public class UsuarioBD {
private String sql=null;
private String msg=null;
private Conexao conexao;
private Usuario usuario;
private Vector vetUsuario;
/** Método construtor sem parametros */
public UsuarioBD() {
this.conexao=new Conexao();
}
public void msg(){
this.msg=this.msg+this.conexao.getMsg();
System.out.println(this.msg);
}
public String getMsg(){
this.msg=this.msg+this.conexao.getMsg();
return this.msg;
}
public boolean autenticaUsuario(Usuario usuario)throws
SQLException{
this.sql=“select * from usuario where login='” + usuario.getLogin() + “‘ and senha='” + usuario.getSenha() +”‘”;
try{
this.conexao.rs=this.conexao.st.executeQuery(this.sql);
if(this.conexao.rs.next())
return true;
else
return false;
}catch(SQLException e){
this.msg=”Nao foi possivel inserir o usuário ” + usuario.getLogin()
+ “.\nErro:” + e.getMessage();
return false;
}finally{
this.conexao.fecharConexao();
}
}
public Usuario getUsuario(Usuario
usuario)throws SQLException{
this.sql =“select * from usuario where login='” + usuario.getLogin()
+”‘”;
try{
this.conexao.rs=this.conexao.st.executeQuery(this.sql);
if(this.conexao.rs.next()){
this.usuario = new Usuario(this.conexao.rs.getString(“nome“),this.conexao.rs.getString(“login“),this.conexao.rs.getString(“senha“));
return this.usuario;
}
}catch(SQLException e){
this.msg=”Nao foi possivel recuperar o usuário ” + usuario.getLogin()
+ “.\nErro:”+e.getMessage();
}
return this.usuario=null;
}
public Vector getUsuario()throws
SQLException{
this.sql=“select * from usuario order by login”;
this.vetUsuario=new Vector();
try{
this.conexao.rs=this.conexao.st.executeQuery(this.sql);
while(this.conexao.rs.next()){
this.usuario = new Usuario(this.conexao.rs.getString(“nome”),this.conexao.rs.getString(“login”),this.conexao.rs.getString(“senha”));
this.vetUsuario.addElement(this.usuario);
}
}catch(SQLException e){
this.msg=”Nao foi possivel realizar a consulta.\nErro:”+e.getMessage();
getMsg();
}finally{
this.conexao.fecharConexao();
}
return this.vetUsuario;
}
public Vector getUsuarioINI(Usuario usuario)throws SQLException{
this.sql=”select * from usuario where nome like ‘” + usuario.getNome() + “%’“;
this.vetUsuario=new Vector();
try{
this.conexao.rs=this.conexao.st.executeQuery(this.sql);
while(this.conexao.rs.next()){
this.usuario = new Usuario(this.conexao.rs.getString(“NOME”),this.conexao.rs.getString(“LOGIN”),this.conexao.rs.getString(“SENHA”));
vetUsuario.add(this.usuario);
}
}catch(SQLException e){
this.msg=”Nao foi possivel realizar a consulta.\n Erro:”+e.getMessage()+”\n”;
getMsg();
}
return this.vetUsuario;
}
public boolean setUsuario(char operacao,Usuario
usuario)throws SQLException{
String login = usuario.getLogin();
String senha = usuario.getSenha();
String nome = usuario.getNome();
switch(operacao){
case ‘I‘:
this.sql=”insert into usuario(nome,login,senha)values(‘”+nome+”‘,'”+login+”‘,'”+senha+”‘)”;
break;
case ‘U‘:
this.sql=“update usuario set senha='”+senha+”‘,nome='”+nome+”‘
where login='”+login+”‘”;
break;
case ‘D‘:
this.sql=“delete from usuario where login='”+login+”‘”;
break;
default:this.sql=””;
}
try {
this.conexao.st.executeUpdate(this.sql);
return true;
} catch (SQLException e) {
e.printStackTrace();
this.msg=”Erro=”+e.getMessage();
return false;
}
}
//Exemplo de uma chama de Stored Procedure
public boolean setUsuario(String
operacao,Usuario usuario)throws
SQLException{
String login = usuario.getLogin();
String senha = usuario.getSenha();
String nome = usuario.getNome();
this.sql=”execute procedure sp_usuario(‘”+ operacao +”‘,'”+
login +”‘,'”+ senha +”‘,'” + nome + “‘);”;
try{
this.conexao.st.executeUpdate(this.sql);
this.msg=”O usuario “+login+” foi incluido no sistema.”;
return true;
}catch(Exception e){
this.msg=”Não foi possível inserir o usuario ” + login;
return false;
}finally{
this.conexao.fecharConexao();
}
}
}
8- Construa a classe Fachada de acordo com o código abaixo.
package aula;
import java.sql.*;
import java.util.Vector;
public class Fachada {
private String msg=null;
private UsuarioBD ubd;
/** Construtor padrao default*/
public Fachada() {
}
public void getmsg(){
System.out.print(this.msg);
}
public String getMsg(){return this.msg;}
//****************operação com os objetos Usuario***************************
public boolean autenticaUsuario(Usuario usuario)throws SQLException{
this.ubd= new UsuarioBD();
if(ubd.autenticaUsuario(usuario))
return true;
else
return false;
}
public boolean setUsuario(char operacao,Usuario usuario)throws SQLException{
this.ubd= new UsuarioBD();
if(ubd.setUsuario(operacao,usuario))
return true;
else
return false;
}
/**Retorna um usuario que tenho o login correpindente.
* @param login
* @return Usuario u
*/
public Usuario getUsuario(Usuario usuario)throws SQLException{
this.ubd= new UsuarioBD();
return this.ubd.getUsuario(usuario);
}
/**Retorna o conjunto total de usuario cadastrado na base de dados.
*Para recurar qualquer valor bastautilizar os metodos get e set da classe
*básica.
* @param Sem parametro de entrada
* @return Um vetor de objetos de Usuario.
*/
public Vector getUsuario()throws SQLException{
this.ubd= new UsuarioBD();
return this.ubd.getUsuario();
}
public Vector getUsuarioINI(Usuario usuario)throws SQLException{
this.ubd= new UsuarioBD();
return this.ubd.getUsuarioINI(usuario);
}
}
7- Desenvolva uma página de autenticação utilizando as classes mostadas, de acordo com o mostrado no padrão.
Um comentário em “Programação Java – JSP – Classes para implementação utilizando Facade”