Dev (Back & Front)ARTIGO

Usando JSF com Netbeans – JSF + Conexao Mysql

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;<br /><br />import java.sql.DriverManager;<br />import java.sql.Statement;<br />import java.sql.ResultSet;<br />import java.sql.Connection;<br />import javax.naming.InitialContext;<br />import  javax.sql.DataSource;<br /><br />public class ConnectionFactory {<br /><br />    public static Connection getConnection() throws Exception{<br />      try{<br /><br />         Class.forName("com.mysql.jdbc.Driver");<br />            return DriverManager.getConnection("jdbc:mysql://localhost/livraria", "camilo", "123");<br />      } <br /><br />      catch(Exception e){<br />            throw new Exception(e.getMessage());<br />        }<br />    }   <br />    public static void closeConnection(Connection conn, Statement stmt, ResultSet rs)throws Exception{<br />        close(conn,stmt,rs);<br />    }<br /><br />    public static void closeConnection(Connection conn, Statement stmt)throws Exception{<br />        close(conn,stmt,null);<br />    }<br /><br />    public static void closeConnection(Connection conn)throws Exception{<br />        close(conn,null,null);<br />    }<br /><br />    private static void close(Connection conn, Statement stmt, ResultSet rs) throws Exception{<br />        try{<br />            if(rs!=null) rs.close();<br />            if(stmt!=null)stmt.close();<br />            if(conn!=null)conn.close();<br />        }catch(Exception e){<br />            throw new Exception(e.getMessage());<br />        }<br />    }<br />}

Passo 3: cliente.java

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

<br />package br.com.cliente;<br /><br />/**<br /> *<br /> * @author Camilo<br /> */<br />public class Cliente {<br />    private int id; <br />    private String nome = null;<br />    private String email = null;<br /><br />    public Cliente( int id, String nome, String email){<br />        this.id = id; <br />        this.nome = nome;<br />        this.email = email;<br />    }<br />    public Cliente(){<br />        <br />    }<br />    public String getNome() {<br />        return nome;<br />    }<br /><br />    public void setNome(String nome) {<br />        this.nome = nome;<br />    }<br /><br /><br />    public String getEmail() {<br />        return email;<br />    }<br /><br />    public void setEmail(String nascimento) {<br />        this.email = nascimento;<br />    }<br /><br />    public int getId() {<br />        return id;<br />    }<br /><br />    public void setId(int id) {<br />        this.id = id;<br />    }<br />}

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;<br /><br /><br />import br.com.cliente.Cliente;<br />import java.util.List;<br /><br />/**<br /> *<br /> * @author Administrador<br /> */<br />public interface DAO {<br /><br />  //  void atualizar(Cliente cliente) throws Exception;<br /><br />    //void excluir(Cliente cliente) throws Exception;<br /><br />    //cliente procurarcliente(Integer id) throws Exception;<br /><br />    void salvar(Cliente cliente) throws Exception;<br /><br />    //List todosclientes() throws Exception;<br /><br />}

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;<br />import br.com.cliente.Cliente;<br />import br.com.integrator.util.ConnectionFactory;<br />import java.sql.Connection;<br />import java.sql.PreparedStatement;<br />import java.sql.SQLException;<br /><br />public class ClienteDAOImp implements DAO {<br />    private Connection conn;<br /><br />     /**<br />     * construtor que se conecta ao banco de dados<br />     * @throws java.lang.Exception se não houver conexão<br />     */<br />    public ClienteDAOImp( ) throws Exception{<br />        try {<br />            this.conn = ConnectionFactory.getConnection( );<br /><br />        } catch( Exception e ) {<br />            throw new Exception( "Erro: " +<br />                    "\n" + e.getMessage( ) );<br />        }  }<br />     /**<br />     * Método que insere dados na tabela Clientes<br />     *  * @throws java.lang.Exception se não conseguir inserir<br />     */ <br />    public void salvar(Cliente cliente)  throws Exception{<br />        PreparedStatement ps = null;<br />        Connection conn = null;<br />        if (cliente == null)throw new   Exception("O valor passado não pode ser nulo");<br /><br />        try {<br />            String SQL = "INSERT INTO cliente (nome, email) "+<br />                         "values (?, ?)";<br />            conn = this.conn;<br />            ps = conn.prepareStatement(SQL);<br />            ps.setString(1, cliente.getNome());<br />            ps.setString(2, cliente.getEmail( ));          <br /><br />            ps.executeUpdate( );<br /><br />        } catch (SQLException sqle) {<br />            throw new<br />                    Exception("Erro ao inserir dados "+ sqle);<br />        } finally {<br />            ConnectionFactory.closeConnection(conn, ps);<br /><br />        }    }

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;<br /><br />import br.com.cliente.Cliente;<br />import br.com.integrator.dao.ClienteDAOImp;<br />import br.com.integrator.dao.DAO;<br /><br />/**<br /> *<br /> * @author Camilo<br /> */<br />public class CliController {<br /><br />        private Cliente cliente;<br /><br />    public Cliente getCliente() {<br />        return cliente;<br />    }<br /><br />    public void setCliente(Cliente cliente) {<br />        this.cliente = cliente;<br />    }<br />    <br />    public String novo(){ <br />        this.cliente = new Cliente();<br />        return "novo";<br />    }<br />    public String salvar() throws Exception{<br />                DAO dao = new ClienteDAOImp();<br />                dao.salvar(cliente);<br />            return "salvar";<br />        }   <br />}

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" %><br /><%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %><br /><br /><%@page contentType="text/html" pageEncoding="UTF-8"%><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />   "http://www.w3.org/TR/html4/loose.dtd"><br /><br /><html><br />    <head><br />        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  </head><br />    <body><br />        <f:view><br />            <h:form id="form1"><br />                <h:panelGrid columns="3"><br />                    <f:facet name="header"><br />                        <h:outputText value="::Cadastro de Clientes"/><br />                    </f:facet><br />                    <h:outputText value="Nome:" /><br />                    <h:inputText size="15" id="nome" <br />                                 value="#{cliC.cliente.nome}"<br />                                 required="true"<br />                                 requiredMessage="Campo obrigatório"/><br />                    <h:message for="nome"/><br />                    <br />                    <h:outputText value="E-mail:" /><br />                    <h:inputText size="30" id="email" <br />                                 value="#{cliC.cliente.email}" <br />                                 required="true"<br />                                 requiredMessage="Campo obrigatório"/><br />                    <h:message for="email"/>                    <br />                    <br />                </h:panelGrid><br />                <br />                <h:commandButton value="Salvar" <br />                                 action="#{cliC.salvar}" />            <br />                <h:commandButton value="Limpar" type="reset" /><br /><br />                <h:commandLink value="Cancelar" action="cancelar" immediate="true" />    <br />            </h:form><br />        </f:view><br />    </body><br /></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><br />            <h:outputText value="operação realizada" /><br />        </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!

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil