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
Requisitos:
- Netbeans 6.7
- 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!







