Post on 22-Apr-2015
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