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

Post on 22-Apr-2015

104 views 2 download

Transcript of 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

JavaBeans

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

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.

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.

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; }};

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();

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

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 />

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(); %>

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() %>

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"); %>

Conexão com Banco de Dados

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

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.

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

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

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); }}

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

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()

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;}

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)

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