Back-End

17 nov, 2009

Usando JSF com Netbeans – JSF + Conexao Mysql

Publicidade

Olá, pessoal! Neste artigo apresentarei como
conectar um DB(Mysql) + JSF usando o padrão DAO. Aqui vamos criar uma aplicação que
grava nome e email dos clientes, tendo como IDE o Netbeans.

Lets go…


Artigos anteriores:

Usando JSF com Netbeans – criando uma newsletter

Usando JSF com Netbeans

Criando conexão Java + BD

Requisitos:

  1. Netbeans 6.7
  2. Mysql instalado

Passo 1

Crie um schema e uma tabela no mysql com o nome que achar
conveniente, aqui chamamos de livraria (schema) e
clientes (tabela).

Os campos para tabela foram:

id: Integer  autoincrement

nome: varchar

email: varchar

Passo 2

Crie um projeto chamado CadCliJSF e escolha o framework
JSF. Se você tem alguma dúvida, veja o primeiro artigo da série.

Vamos Criar a classe de conexão com banco de dados. Para isso crie
um new package: br.com.camilo.util
e coloque a classe nesse package.

Chamamos aqui de ConnectionFactory

package br.com.integrator.util;

import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class ConnectionFactory {

public static Connection getConnection() throws Exception{
try{

Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost/livraria", "camilo", "123");
}

catch(Exception e){
throw new Exception(e.getMessage());
}
}
public static void closeConnection(Connection conn, Statement stmt, ResultSet rs)throws Exception{
close(conn,stmt,rs);
}

public static void closeConnection(Connection conn, Statement stmt)throws Exception{
close(conn,stmt,null);
}

public static void closeConnection(Connection conn)throws Exception{
close(conn,null,null);
}

private static void close(Connection conn, Statement stmt, ResultSet rs) throws Exception{
try{
if(rs!=null) rs.close();
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
}catch(Exception e){
throw new Exception(e.getMessage());
}
}
}

Passo 3: cliente.java

Crie agora o JavaBeans chamado cliente dentro do package
br.com.cliente.


package br.com.cliente;

/**
 *
 * @author Camilo
 */
public class Cliente {
    private int id;
    private String nome = null;
    private String email = null;

    public Cliente( int id, String nome, String email){
        this.id = id;
        this.nome = nome;
        this.email = email;
    }
    public Cliente(){
       
    }
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }


    public String getEmail() {
        return email;
    }

    public void setEmail(String nascimento) {
        this.email = nascimento;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

Ppasso 4: DAO.java / ClienteDAOImp.java

Crie um package chamado br.com.camilo.dao e coloque a
classe dentro desse package.

Agora vamos criar uma interface DAO.java que possui os
métodos de ação com o DB. Nesse caso, teremos apenas o salvar.
Abaixo, o code da interface.

package br.com.integrator.dao;


import br.com.cliente.Cliente;
import java.util.List;

/**
 *
 * @author Administrador
 */
public interface DAO {

  //  void atualizar(Cliente cliente) throws Exception;

    //void excluir(Cliente cliente) throws Exception;

    //cliente procurarcliente(Integer id) throws Exception;

    void salvar(Cliente cliente) throws Exception;

    //List todosclientes() throws Exception;

}

Passo 5

Vamos criar a classe que implementa os métodos da interface DAO.
Observe que assim fica mais fácil a manutenção e o reuso de código
também.

Portanto, no package br.com.camilo.dao, crie uma
classe que implementa os a interface dao.java. Aqui chamados de
ClienteDAOImp. Veja o code:

package br.com.integrator.dao;
import br.com.cliente.Cliente;
import br.com.integrator.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ClienteDAOImp implements DAO {
    private Connection conn;

     /**
     * construtor que se conecta ao banco de dados
     * @throws java.lang.Exception se não houver conexão
     */
    public ClienteDAOImp( ) throws Exception{
        try {
            this.conn = ConnectionFactory.getConnection( );

        } catch( Exception e ) {
            throw new Exception( "Erro: " +
                    "\n" + e.getMessage( ) );
        }  }
     /**
     * Método que insere dados na tabela Clientes
     *  * @throws java.lang.Exception se não conseguir inserir
     */
    public void salvar(Cliente cliente)  throws Exception{
        PreparedStatement ps = null;
        Connection conn = null;
        if (cliente == null)throw new   Exception("O valor passado não pode ser nulo");

        try {
            String SQL = "INSERT INTO cliente (nome, email) "+
                         "values (?, ?)";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            ps.setString(1, cliente.getNome());
            ps.setString(2, cliente.getEmail( ));         

            ps.executeUpdate( );

        } catch (SQLException sqle) {
            throw new
                    Exception("Erro ao inserir dados "+ sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps);

        }    }

Passo 6

Crie um package br.com.Controler e crie uma classe chamada
CliControler.java. Esta classe vai executar as ações com base
no que foi solicitado pelo usuário. Se este clicar em salvar, o
controlador vai chamar o método salvar da interface dao.java
implementado pela classe CliDAOimp.

package br.com.Controler;

import br.com.cliente.Cliente;
import br.com.integrator.dao.ClienteDAOImp;
import br.com.integrator.dao.DAO;

/**
 *
 * @author Camilo
 */
public class CliController {

        private Cliente cliente;

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
   
    public String novo(){
        this.cliente = new Cliente();
        return "novo";
    }
    public String salvar() throws Exception{
                DAO dao = new ClienteDAOImp();
                dao.salvar(cliente);
            return "salvar";
        }  
}

Passo 7

Crie os arquivos abaixo.

Agora altere o arquivo formAutor.jsp conforme o code a seguir.
Adicione o code abaixo entre <body> </body>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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=UTF-8">  </head>
    <body>
        <f:view>
            <h:form id="form1">
                <h:panelGrid columns="3">
                    <f:facet name="header">
                        <h:outputText value="::Cadastro de Clientes"/>
                    </f:facet>
                    <h:outputText value="Nome:" />
                    <h:inputText size="15" id="nome"
                                 value="#{cliC.cliente.nome}"
                                 required="true"
                                 requiredMessage="Campo obrigatório"/>
                    <h:message for="nome"/>
                   
                    <h:outputText value="E-mail:" />
                    <h:inputText size="30" id="email"
                                 value="#{cliC.cliente.email}"
                                 required="true"
                                 requiredMessage="Campo obrigatório"/>
                    <h:message for="email"/>                   
                   
                </h:panelGrid>
               
                <h:commandButton value="Salvar"
                                 action="#{cliC.salvar}" />           
                <h:commandButton value="Limpar" type="reset" />

                <h:commandLink value="Cancelar" action="cancelar" immediate="true" />   
            </h:form>
        </f:view>
    </body>
</html>

Agora altere o arquivo menu.jsp:

  • para o arquivo forwardToJSF.jsp, deixei assim: <jsp:forward
    page=”menu.jsf”/>
  • para o arquivo cancelado.jsp, deixe conforme a imagem abaixo:
 <f:view>
            <h:outputText value="operação realizada" />
        </f:view>

Agora, vamos configurar o arquivo face-web.xml. Portanto, deixe assim:

Running…

Fico por aqui e espero que tenham
gostado da série JSF com Netbeans. Quero aproveitar e divulgar o novo endereco do meu blog, http://www.camilolopes.com

Até o
próximo post! Abraço!