Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

23
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos

Transcript of Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Page 1: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Programação para Web

Unidade 06 – Java Beans e BDsProf.: Henrique Santos

Page 2: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

JavaBeans

Page 3: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

O que é um JavaBean?

Uma classe java comum usada para armazenar dados que segue uma padronização

Tem que possuir um construtor sem argumentos Não deve possuir variáveis de instância públicas

• Utilizar métodos de acesso ao invés de permitir acesso direto as variáveis de instância

• As propriedades normalmente devem refletir campos da Tabela no BD ou ser derivado de dados do BD

Valores persistentes devem ser acessados através de métodos chamados getXxx e setXxx

• Se a classe tiver um método chamado getTitulo que retorna uma String, dizemos que que a classe possui uma propriedade do tipo string chamada titulo

• Propriedades Booleanas usam isXxx ao invés de getXxx

Page 4: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Porque encapsular campos

Padronização Pode-se inserir restrições ou realizar

verificações nos valores Pode-se mudar a representação

interna sem afetar a interface Pode-se chamar outros métodos ou

classes e realizar outras operações antes ou após a atualização do valor. Também conhecido como efeito cascata.

Page 5: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Notas sobre Beans

Beans são instalados no diretório padrão para classes Java (o mesmo de Servlets)

É boa prática de programação que Beans (e classes auxiliares) SEMPRE estejam em pacotes!

• De preferência em um pacote diferente do pacote dos Servlets

• Lembre-se que a criação de Beans e Servlets no diretório padrão acarreta em penalização nos trabalhos práticos.

Page 6: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Exemplo de JavaBean

package beansgrupo;public class Usuario {

private String Login; public Usuario(){ }

public String getLogin() { return Login; }

public void setLogin(String Login) { this.Login = Login; }};

Page 7: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Usando Beans em Servlets

Como Beans e Servlets são classes Java comuns, basta importar o pacote do Bean para poder usá-lo no Servlet

Exemplo:import beansgrupo.Usuario;public class LoginServlet extends HttpServlet { protected void processRequest(HttpServletRequest

request, HttpServletResponse response) throws ServletException, IOException {

Usuario U = new Usuario();

Page 8: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Pode-se usar Beans normalmente como em qualquer classe java.

Lembre-se de usar o nome completo junto ao pacote ao acessar um Bean em JSP

• <%! beansgrupo.Usuario U = null; %>

Ou então de importar o pacote no começo do JSP

• <%@ page import="beansgrupo.Usuario" %>

Usando Beans em JSP

Page 9: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Tags JSP para Beans

Existem Tags especiais em JSP para lidar com Beans.

Todas essa tags podem ser substituídas por scriptlets comuns.

•<jsp:atributo />

Page 10: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Construindo Beans

Formato• <jsp:useBean id="nome"

class="pacote.Classe" />

Objetivo• Instancia uma classe Java

Exemplo• <jsp:useBean id="U"

class="beansgrupo.Usuario" />

Scriptlet Equivalente• <%! beansgrupo.Usuario U = new

beansgrupo.Usuario(); %>

Page 11: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Acessando propriedades

Formato• <jsp:getProperty name="nome"

property="propriedade" />

Objetivo• Permite acesso as propriedades dos beans,

ou seja, chamadas ao métodos getXxx

Exemplo• <jsp:getProperty name="U"

property="Login" />

Scriptlet Equivalente• <%= U.getLogin() %>

Page 12: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Setando propriedades

Formato• <jsp:setProperty name="nome"

property="propriedade" value="valor" />

Objetivo• Permite a atribuição das propriedades do

bean, ou seja, chamadas a métodos setXxx

Exemplo• <jsp:setProperty name="U"

property="Login" value="aluno" />

Scriptlet Equivalente• <% U.setLogin("aluno"); %>

Page 13: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Conexão com Banco de Dados

Page 14: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

JDBC

Java DataBase Connectivity (Conectividade a Bancos de Dados Java)

Biblioteca padrão que fornece acesso a bancos de dados por meio de Java

Desenvolvedores podem acessar bancos de dados não importando quem é o distribuidor

• Distribuidores fornecem a implementação para interfaces abstratas definidas na API

• Fornece o mesmo conjunto de funcionalidades para o desenvolvedor

Page 15: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Instalação do BD

Deve-se primeiramente instalar um SGBD na máquina servidora.

Uma vez instalado, pegar o driver JDBC mais recente do SGBD escolhido (a própria página do SGBD disponibiliza esses drivers)

Copiar o jar do driver para o diretório /lib/ do Tomcat Apache

•Atenção: Não instalar o jar do driver para outro lugar, isso pode causar problemas.

Page 16: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Classes importantes

java.sql.Connection: Representa uma conexão com um banco de dados

java.sql.DriverManager: Gerencia drivers JDBC usados pela aplicação

javax.sql.DataSource: Abrange os detalhes de como obter uma conexão para o banco de dados

java.sql.Statement: Fornece métodos para o desenvolvedor executar instruções SQL

java.sql.ResultSet: Representa o resultado de uma instrução SQL de Pesquisa

Page 17: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

java.sql.DriverManager

Permite que um desenvolvedor recupere um objeto Connection que pode ser usado para executar instruções em bancos de dados.

•O Driver JDBC deve estar registrado com o DriverManager

•Usar o método getConnection em DriverManager

Page 18: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Exemplo de Conexão MySQL

package persistencia;import java.sql.*;

class BaseDados{ private Connection Conexao = null;

private BaseDados(){ String jdbcURL

="jdbc:mysql://localhost:3306/baseteste"; String user = "aluno"; String password = "unipac";

Class.forName("com.mysql.jdbc.Driver"); Conexao = DriverManager.getConnection(jdbcURL,

user, password); }}

Page 19: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Executando Queries

Objetos da classe java.sql.Connection representam conexões atuais para o banco de dados

Uma vez de posse deste objeto, pode-se criar um objeto da classe Statement, que é usado para executar consultas SQL

•ExecuteQuery: usada para comandos SELECT, retornando o resultado de operações como um objeto ResultSet

•ExecuteUpdate: usada para comandos INSERT, UPDATE ou DELETE, retornando o número de linhas afetadas como um tipo int

Page 20: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

ResultSets

Resultados de uma consulta no banco de dados

Um objeto ResultSet pode ser visualizado como uma tabela

A informação é recuperada uma coluna por vez

O objeto ResultSet mantém a linha corrente

Para percorrer as linhas da tabela em ResultSet, usa-se o método next()

Page 21: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Exemplo de Login

public static Usuario login(String Login, String Senha) { Usuario U = null; try { Statement St = Conexao.createStatement(); ResultSet Rs = Conexao.executeQuery(

"SELECT CodUsuario FROM usuario WHERE login LIKE '"+Login+"' AND senha LIKE '"+Senha+"' ");

if(Rs.next()){ U = new Usuario(); U.setLogin(Login); U.setCodigo( Rs.getInt("CodUsuario") ); }

}catch (Exception e) { System.out.println(e); } return U;}

Page 22: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Padronização DAO

Uma padronização muito utilizada atualmente é deixar os JavaBeans, somente com as propriedades

Deve-se então colocar todas consultas SQL em objetos separados chamados DAO (Database Access Object)

Page 23: Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.

Exemplo DAO

package persistencia;

import java.sql.*;

import beansgrupo.Usuario;

class UsuarioDAO {

public static Usuario getUsuario(int CodUsuario){

// código SQL e JDBC para recuperar Usuário

}

public static void alterarUsuario(Usuario U){

//código SQL e JDBC para alterar Usuário

}

//Outros métodos de acesso a banco para Usuário