Professional Documents
Culture Documents
Collections
COLLECTIONS FRAMEWORK
COLLECTIONS FRAMEWORK
COLLECTIONS FRAMEWORK
Exemplo de cdigo
// Declara uma coleo (lista) List <String> listaCores = new ArrayList(); listaCores.add("vermelho"); listaCores.add("verde"); listaCores.add("amarelo"); listaCores.add("branco"); // Apresenta todos os elementos na tela for (int i=0; i<listaCores.size(); i++) { String cor = (String) listaCores.get(i); System.out.println(cor); } // Ordena a lista Collections.sort(listaCores); // Apresenta todos os elementos na tela de outra forma for (String cor: listaCores) System.out.println(cor);
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca
DB SQL
BANCO DE DADOS
Viso Rpida:
Banco Dados MySQL Ferramenta de administrao grfica
Alterao em tabela
Remoo em tabela
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca
Criao de tabela
CREATE TABLE curso ( id int(10) unsigned NOT NULL AUTO_INCREMENT, nome varchar(50) NOT NULL, semestres int(10) unsigned NOT NULL, valor float NOT NULL, PRIMARY KEY (id) );
Insero em tabela
INSERT INTO curso(nome, semestres, valor) VALUES ("Gesto de TI", 5, 474.81);
Remoo em tabela
DELETE FROM curso WHERE id=1;
JAR Java Archive um arquivo compactado usado para distribuir um conjunto de classes Java. usado para armazenar classes compiladas e metadados
mysql-connector-java-5.1.6-bin.jar
Pegue no Moodle o JAR e copie para o diretrio (pasta) WEB-INF/lib
CONEXO
BANCO
CLIENTE
WEB
SERVIDOR DB
CLIENTE
Controle
Forward Evento Evento de Negcio
Modelo
CONEXO
SERVIDOR WEB
Dados
BANCO
SERVIDOR EJB
SERVIDOR DB
Programao para WEB
Controle
Forward Evento Evento de Negcio
CLIENTE
Modelo
Dados
CONEXO
BANCO
SERVIDOR DB
SERVIDOR EJB
BANCO DE DADOS
Exemplo de cdigo
try { // Carrega o Driver JDBC especfico para o DB Class.forName("com.mysql.jdbc.Driver"); // Cria a conexo com o Banco de Dados String str = "jdbc:mysql://localhost/escola?user=root&password=root"; Connection con = DriverManager.getConnection(str); Statement stm = con.createStatement(); ResultSet rs = stm.executeQuery("SELECT * FROM curso;"); while (rs.next()) { System.out.println("Nome......: " + rs.getString("nome")); System.out.println("Semestres.: " + rs.getInt("semestres")); System.out.println("Valor.....: " + rs.getFloat("valor")); } con.close(); } catch (ClassNotFoundException e) { System.out.print("Driver nao encontrado"); } catch (SQLException e) { System.out.print("Erro ao executar SQL"); UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB }
CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca
BANCO DE DADOS
Connection
Statement
ResultSet
Persistncia DAO
PERSISTNCIA
Consiste no armazenamento confivel e coerente de dados em um sistema de armazenamento, normalmente um SGBD
SGDB Grandes quantidades de dados Acessados por vrias aplicaes Longa durao e muito valiosos Acessados com sofisticado controle de segurana
PERSISTNCIA
Persistncia de Objetos Armazenamento consistente de objetos de uma aplicao OO para que estes objetos existam em diferentes execues de diferentes aplicaes Problema: Temos um aplicativo OO que precisa interagir com um banco de dados. O padro vigente nas empresas o banco de dados relacional sem perspectivas de mudana
id 1 2 3
semestres 5 5 5
PERSISTNCIA
Persistncia de Objetos Armazenamento consistente de objetos de uma aplicao OO para que estes objetos existam em diferentes execues de diferentes aplicaes Problema: Temos um aplicativo OO que precisa interagir com um banco de dados. O padro vigente nas empresas o banco de dados relacional sem perspectivas de mudana Soluo: Mapeamento Objeto-Relacional (OR)
uma tcnica que consiste em representar o objeto de maneira relacional na gravao e recuperao do banco de dados
PERSISTNCIA
Modelos de Mapeamento Objeto Relacional Data Transfer Objects (DTO): So simples objetos que contm mtodos para gravar e ler dados dele Data Access Objects (DAO): Tem como objetivo abstrair e encapsular todo e qualquer tipo de acesso a fonte de dados. Ele gerencia as conexes com a fonte de dados, lendo e gravando dados nela Java Persistence API (JPA): a persistncia de POJO (Plain Old Java Object) por meio do mapeamento entre objetos Java e um banco de dados relacional. Hibernate implementa JPA
DTO
Curso nome:string semestres:int valor:float public public public public Public Public m1():void m2(int):int incluir(): consultar(): alterar(): excluir(): id 1 2 3 nome GTI ADS Redes semestres 5 5 5 valor 474.81 474.81 474.81
DAO
Curso nome:string semestres:int valor:float public m1():void public m2(int):int CursoDAO public public public public public incluir(Curso): consultar(id): Curso listar(): List<Curso> alterar(Curso): excluir(Curso):
id 1
2 3
nome GTI
ADS Redes
semestres 5
5 5
valor 474.81
474.81 474.81
CRUD
CRUD COM MVC Acrnimo de Create, Retrieve, Update e Delete Quatro operaes bsicas de bancos de dados relacionais
o Create
o Retrieve (Read) o Update o Destroy (Delete)
INSERT
SELECT UPDATE DELETE
http://pt.wikipedia.org/wiki/CRUD
curso.ao:Listagem
curso.ao(excluir):Listagem
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos
curso.ao(salvar):Entrada
ProgramaoLEGENDA: para WEB
} catch (Exception e) { // Cria uma varivel (contexto/requisicao) para o ERRO request.setAttribute("erro", "Erro de conversao"); return Acao.ENTRADA; UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB } // continua no Cursos Tecnolgicos CatlicaTec prximo slide Prof. Edson F. da Fonseca
long getId() { return id; } void setId(long id) { this.id = id; } String getNome() { return nome; } void setNome(String nome) { this.nome = nome; } int getSemestres() { return semestres; } void setSemestres(int semestres) {this.semestres= semestres;} float getValor() { return valor; } void setValor(float valor) { this.valor = valor; }
public static Connection getConnection() throws SQLException { try { Class.forName("com.mysql.jdbc.Driver"); String sql = "jdbc:mysql://localhost/escola"; return DriverManager.getConnection(sql, "root", "root"); } catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); } }
}
entidades\cursoLista.jsp
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> <html> <head><title>Curso</title></head> <body> <h1>Listagem de Cursos</h1> <font color="#FF0000">${erro}</font> <font color="#00FF00">${mensagem}</font> <p/> <table id="gride" border="1" cellpadding="2" cellspacing="0"> <tr> <th width="200" align="center">Nome</th> <th width="70" align="center">Semestres</th> <th width="80" align="center">Valor</th> <th width="60"> </th> </tr> <!-- continua no prximo slide -->
entidades\cursoLista.jsp
<!-- continuao --> <c:forEach var="curso" items="${cursos}"> <tr> <td align="left">${curso.nome}</td> <td align="center">${curso.semestres}</td> <td align="right"> <fmt:formatNumber value="${curso.valor}" type="currency" /> </td> <td align="center"> <a href= "${pageContext.request.contextPath}/curso.acao?acaoInterna=alterar&id=${curso.id}"> <img src="${pageContext.request.contextPath}/img/alterar.png" border=0 width=25> </a> <a href= "${pageContext.request.contextPath}/curso.acao?acaoInterna=excluir&id=${curso.id}"> <img src="${pageContext.request.contextPath}/img/excluir.png" border=0 width=25> </a> </td> </tr> </c:forEach> </table><p/> <a href="${pageContext.request.contextPath}/curso.acao?acaoInterna=incluir"> Incluir Curso</a> UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB </body> CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca </html>
INSTALAO DO JSTL
1. Pegue no Moodle os JARs (JSTL - LIB), descompacte e copie os arquivos para diretrio (pasta) WEB-INF/lib 2. Pegue no Moodle as Tag Libs (JSTL - JSTL), descompacte e copie os arquivos para diretrio (pasta) WEB-INF/tld 3. Adicione a referncia a tag lib no web.xml:
<web-app> ... <jsp-config> <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location> </taglib> UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB </jsp-config> </web-app> CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca
entidades\cursoEntrada.jsp
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <html> <head><title>Curso</title></head> <body> <font color="#FF0000">${erro}</font> <form method="post" action="${pageContext.request.contextPath}/curso.acao"> <fieldset> <legend> <c:if test="${curso.id == null}">Incluisão de Curso</c:if> <c:if test="${curso.id != null}">Alteração de Curso</c:if> </legend> <input type="hidden" name="acaoInterna" value="salvar" /> <input type="hidden" name="id" value="${curso.id}" /> <label>Nome</label><br/> <input type="text" name="nome" value="${curso.nome}" size="50" maxlength="50"/><p/> <label>Semestres (QTD)</label><br/> <input type="text" name="semestres" value="${curso.semestres}" size="2" maxlength="2"/><p/> <label>Valor (R$)</label><br/> <input type="text" name="valor" value="${curso.valor}" size="10" maxlength="10"/> </fieldset><br/> <input type="submit" value="OK"/> </form><p/> UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB <a href="${pageContext.request.contextPath}/curso.acao">Voltar</a> CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca </body></html>
erroControleResultado.html
<html> <head><title>Erro</title></head> <body> ERRO DO CONTROLE<p/> Ação ou Resultado não localizado! </body> </html>
Banco de Dados
Perguntas?
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca
REFERNCIAS BIBLIOGRAFICAS
PASSOS, Antnio. Outras Palavras - Projeto e desenvolvimento de software como tem que ser. Mapeamento objeto-relacional: o problema das tabelas associativas, 2008, http://javafree.uol.com.br/artigo/847654/, acessado em 27/07/2011. SAKURAI, Rafael. Conhecimento Aberto, Novidade Java 5 Enums, 2006, http://rafaelsakurai.blogspot.com/2006/05/novidade-java-5-enums.html, acessado em 27/07/2011. Codemiles.com, Code library, Java codes, Java examples, Java enum example, 2007, http://www.codemiles.com/java-examples/java-enum-example-t3860.html, acessado em 27/07/2011. XAVIER, Denys William. TI Expert, Programao, Java, Enum. http://www.tiexpert.net/programacao/java/enum.php, acessado em 27/07/2011.
GONALVES, Edson. Desenvolvendo Aplicaes Web com JSP, Servlets, JSF, Hibernate, EJB 3, Persistence e Ajax. Rio de Janeiro: Cincia Moderna, 2007. www.java.com/pt_BR/about/ Servlets/JSP, Prof. Msc. Edson Angoti Jnior Criando e Entendendo o Primeiro Servlet, Raphaela Galhardo Fernandes http://www.j2eebrasil.com.br/index
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca
Obrigado!
Exerccio
...e utilizando o exemplo visto, implemente no sistema uma pesquisa de curso por nome, ou parte do nome.
curso.ao(incluir):Entrada curso.ao(alterar):Entrada
curso.ao(salvar):Listagem
curso.ao:Listagem
curso.ao(excluir):Listagem curso.ao(filtrar):Listagem
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos
curso.ao(salvar):Entrada