Persistência Java para Web com MySQL 1. Criar o modelo no DBDesigner 2. Criar o esquema e as tabelas no MySQL 3. Criar um projeto Java simples, com o nome Empresa,no NetBeans 4. Adicionar o driver de conexão MySQL: a. Descompactar o arquivo com o driver em algum diretório b. Clicar com o botão direito sobre o diretório biblioteca e adicionar jar c. Localizar o arquivo contendo o driver e adicioná-lo 5. Criar três pacotes: modelo, persistencia e teste 6. No pacote teste, criar a classe TestaConexao: package teste; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; public class TestaConexao { public static void main (String args[]) throws SQLException{ Connection conexao = null; String url = "jdbc:mysql:// servidor :3306/empresa"; String usuario = "professor"; String senha = "professor"; try{ Class.forName("org.gjt.mm.mysql.Driver"); conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); catch(classnotfoundexception cnfe){ System.out.println("Erro ao carregar o driver"); cnfe.printstacktrace(); 7. Simular e testar erros na classe anterior 8. Criar uma classe no pacote persistência que contenha o método estático: getconexao(): package persistencia; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; public class GerenteConexao { //metodo estático gerador de conexões public static Connection getconexao(){ Connection conexao = null; String url = "jdbc:mysql://localhost:3306/empresa"; String usuario = "root"; String senha = "root";
try{ Class.forName("org.gjt.mm.mysql.Driver"); conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); catch(classnotfoundexception cnfe){ System.out.println("Erro ao carregar o driver"); cnfe.printstacktrace(); catch(sqlexception sqle){ System.out.println("Não foi possível conectar com o BD"); return conexao; 9. Testar a classe 10. Criar uma classe TestaEmpregado contendo o método main() para testar a conexão com o banco de dados: package teste; import java.sql.preparedstatement; import java.sql.sqlexception; import persistencia.gerenteconexao; public class TestaEmpregado { public static void main(string a[]){ try{ String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(1,'Maria',25)"; pst.executeupdate(); System.out.println("Dados inseridos com sucesso!!!"); catch(sqlexception sqle){ System.out.println("Não foi possível inserir os dados!!"); 11. Alterar a classe: String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst.setint(1,2); pst.setstring(2,"josé"); pst.setint(3,28); pst.executeupdate(); 12. Criar o classe EmpregadoDAO e o método grava: import java.sql.preparedstatement;
import java.sql.sqlexception; public class EmpregadoDAO { public static int grava(int codigo, String nome, int idade) { String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst.setint(1, codigo); pst.setstring(2, nome); pst.setint(3, idade); System.out.println("Dados inseridos com sucesso!!!"); catch (SQLException sqle) { System.out.println("Não foi possível inserir os dados!!"); 13. Imagine criar um método grava para uma tabela com 100 campos! Então chegou a hora de criarmos uma classe bean no pacote modelo para que possamos instanciar objetos dessa classe. package modelo; public class Empregado { private int codigo; private String nome; private int idade; public int getcodigo() { return codigo; public void setcodigo(int codigo) { this.codigo = codigo; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public int getidade() { return idade; public void setidade(int idade) { this.idade = idade;
public String tostring(){ return "Código = "+getcodigo()+ "\nnome = "+getnome()+ "\nidade = "+getidade(); 14. Agora vamos atualizar o nosso método grava, passando como parâmetro um objeto e não mais cada um dos campos: public static int grava(empregado empregado) { String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst.setint(1, empregado.getcodigo()); pst.setstring(2, empregado.getnome()); pst.setint(3, empregado.getidade()); System.out.println("Dados inseridos com sucesso!!!"); catch (SQLException sqle) { System.out.println("Não foi possível inserir os dados!!"); 15. Vamos testar o nosso método grava, para isso vamos criar uma classe de teste, chamada TestaEmpregadoDAO: TestaEmpregadoDAO: public class TestaEmpregadoDAO { public static void main(string args[]){ Empregado empregado = new Empregado(); empregado.setcodigo(3); empregado.setnome("luiz"); empregado.setidade(45); EmpregadoDAO.grava(empregado); 16. Agora vamos criar o método altera: public static int altera(empregado empregado) { String sql = "UPDATE EMPREGADO SET NOME =?, IDADE =? WHERE CODIGO =?"; pst.setstring(1, empregado.getnome()); pst.setint(2, empregado.getidade()); pst.setint(3, empregado.getcodigo()); System.out.println("Dados atualizados com sucesso!!!"); catch (SQLException sqle) {
System.out.println("Não foi possível atualizar os dados!!"); 17. Vamos criar o método exclui: public static int exclui(int codigo) { String sql = "DELETE FROM EMPREGADO WHERE CODIGO =?"; pst.setint(1, codigo); System.out.println("Dados excluído com sucesso!!!"); catch (SQLException sqle) { System.out.println("Não foi possível excluir os dados!!"); 18. Criar um método para montar o objeto: public static Empregado le(int codigo) { ResultSet rs = null; Empregado empregado = null; String sql = "SELECT * FROM EMPREGADO WHERE CODIGO =?"; pst.setint(1, codigo); rs = pst.executequery(); if (rs.next()){ empregado = new Empregado(); empregado.setcodigo(rs.getint("codigo")); empregado.setnome(rs.getstring("nome")); empregado.setidade(rs.getint("idade")); System.out.println("Dados excluído com sucesso!!!"); catch (SQLException sqle) { System.out.println("Não foi possível excluir os dados!!"); return empregado; 19. Para testar o método Le(), vamos criar o método tostring na classe Empregado; public String tostring(){ return "código = "+getcodigo()+ "\nnome = "+getnome()+ "\nidade = "+getidade(); 20. Vamos criar outro método para ler todos os empregados do banco de dados: public static List<Empregado> letodos() {
List <Empregado> empregados = new ArrayList(); Statement st = null; ResultSet rs = null; Empregado empregado = null; st = con.createstatement(); rs = st.executequery("select * FROM EMPREGADO;"); while (rs.next()){ empregado = new Empregado(); empregado.setcodigo(rs.getint("codigo")); empregado.setnome(rs.getstring("nome")); empregado.setidade(rs.getint("idade")); empregados.add(empregado); System.out.println("Dados lidos com sucesso!!!"); catch (SQLException sqle) { System.out.println("Não foi possível ler os dados!!"); return empregados; Parte II Desenvolvimento Web 21. Vamos criar um formulário para inserir os campos: <div> <form name="form1" action="controle" > Matrícula:<br> <input type="text" name="matricula"><br><br> Nome:<br> <input type="text" name="nome"><br><br> Idade:<br> <input type="text" name="idade"><br><br> <input type="submit" value="incluir"> </form> </div> 22. Clicar no botão submit e ver o resultado 23. Vamos criar o Servlet Controle: a. Criar um pacote chamado servlet em Pacotes de código fonte b. Criar um servlet com o nome Controle dentro do pacote servet criado 24. Clicar novamente no botão submit e ver o resultado novamente 25. Apagar os comentários do método: protected void processrequest 26. Apagar todo o conteúdo do método: protected void processrequest 27. Agora vamos adicionar o.jar da aplicação que contém as informações necessárias ao nosso projeto web: a. Primeiro vamos criar o.jar, clicando com o botão direito sobre a aplicação e escolhendo a opção build ou construir se estiver em português b. Depois procure o caminho da aplicação e adicione o.jar que se encontra dentro do diretório dist 28. Receber os dados dentro do método processrequest: protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException {
Empregado empregado = new Empregado(); PrintWriter out = response.getwriter(); empregado.setcodigo(integer.parseint(request.getparameter("matricula"))); empregado.setnome(request.getparameter("nome")); empregado.setidade(integer.parseint(request.getparameter("idade"))); out.println(empregado); finally { out.close(); 29. Para gravar, altere o servlet: protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { Empregado empregado = new Empregado(); PrintWriter out = response.getwriter(); empregado.setcodigo(integer.parseint(request.getparameter("matricula"))); empregado.setnome(request.getparameter("nome")); empregado.setidade(integer.parseint(request.getparameter("idade"))); EmpregadoDAO.grava(empregado); finally { out.close(); 30. Para verificar qual a ação foi executada, use o mesmo name para os botões e um value para cada botão. <input type="submit" value="grava" name="acao"> <input type="submit" value="exclui" name="acao"> 31. Agora altere o servlet para verificar qual a ação e realizá-la: empregado.setcodigo(integer.parseint(request.getparameter("matricula"))); empregado.setnome(request.getparameter("nome")); empregado.setidade(integer.parseint(request.getparameter("idade"))); String acao = request.getparameter("acao"); if (acao.equals("grava")){ EmpregadoDAO.grava(empregado); else if(acao.equals("exclui")){ EmpregadoDAO.exclui(empregado.getCodigo()); out.print(empregado); finally { out.close();