Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO DE DADOS Collections & DB & SQL
Persistência/DAO & CRUD (Versão 2011/2)
Prof. Edson F. da Fonseca MBA, MsC, PMP, Cobit
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
COLLECTIONS & DB & SQL
PERSISTÊNCIA/DAO & CRUD
Collections
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Criado a partir da versão 1.2 do JDK
Coleção é um objeto que representa um grupo de objetos
Provê uma arquitetura unificada para representação e
manipulação de coleções
Reduz o esforço de aprendizado, projeto e implementação
Maximiza a interoperabilidade entre APIs
COLLECTIONS FRAMEWORK
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
COLLECTIONS FRAMEWORK
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// Declara uma coleção (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);
COLLECTIONS FRAMEWORK
Exemplo de código
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
DB
SQL
COLLECTIONS & DB & SQL
PERSISTÊNCIA/DAO & CRUD
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO DE DADOS
O que é
Banco de
Dados?
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Visão Rápida:
Banco Dados – MySQL
Ferramenta de administração gráfica
SQL – Structured Query Language
Criação de banco
Criação de tabela
Inserção em tabela
Consulta em tabela
Alteração em tabela
Remoção em tabela
BANCO DE DADOS
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
SQL – Structured Query Language
Criação de banco
Criação de tabela
BANCO DE DADOS
CREATE DATABASE escola;
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)
);
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
SQL – Structured Query Language
Consulta em tabela
Inserção em tabela
BANCO DE DADOS
SELECT * FROM curso;
INSERT INTO curso(nome, semestres, valor)
VALUES ("Gestão de TI", 5, 474.81);
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
SQL – Structured Query Language
Alteração em tabela
Remoção em tabela
BANCO DE DADOS
UPDATE curso SET nome="Computação", semestres=8, valor=890.55
WHERE id=1;
DELETE FROM curso WHERE id=1;
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Biblioteca:
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 diretório (pasta)
WEB-INF/lib
BANCO DE DADOS
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO CONEXÃO
FLUXO NA WEB COM BANCO DE DADOS
CLIENTE WEB SERVIDOR
DB
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO CONEXÃO
FLUXO NA WEB COM BANCO DE DADOS
CLIENTE
SERVIDOR
EJB
SERVIDOR
DB
SERVIDOR
WEB SERVIDOR
CONTAINER WEB
Modelo
Controle
Evento de
Negócio
Forward
Evento
Dados
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO
FLUXO NA WEB COM BANCO DE DADOS
CLIENTE
SERVIDOR
DB
SERVIDOR
WEB + CONTAINER WEB
Modelo
Controle
Evento de
Negócio
Forward
Evento
Dados CONEXÃO
SERVIDOR
EJB
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
try {
// Carrega o Driver JDBC específico para o DB
Class.forName("com.mysql.jdbc.Driver");
// Cria a conexão 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");
}
Exemplo de código
BANCO DE DADOS
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO DE DADOS
Connection
Statement
ResultSet
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Persistência
DAO
COLLECTIONS & DB & SQL
PERSISTÊNCIA/DAO & CRUD
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Consiste no armazenamento confiável e coerente de dados em um
sistema de armazenamento, normalmente um SGBD
SGDB
Grandes quantidades de dados
Acessados por várias aplicações
Longa duração e muito valiosos
Acessados com sofisticado controle de segurança
PERSISTÊNCIA
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Persistência de Objetos
Armazenamento consistente de objetos de uma aplicação OO
para que estes objetos existam em diferentes execuções de
diferentes aplicações
Problema: Temos um aplicativo OO que precisa interagir com um
banco de dados. O padrão vigente nas empresas é o banco de
dados relacional – sem perspectivas de mudança
PERSISTÊNCIA
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
PROBLEMA DA PESISTÊNCIA DE OBJETOS
id nome semestres valor
1 GTI 5 474.81
2 ADS 5 474.81
3 Redes 5 474.81
Curso
nome:string
semestres:int
valor:float
public m1():void
public m2(int):int
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Persistência de Objetos
Armazenamento consistente de objetos de uma aplicação OO
para que estes objetos existam em diferentes execuções de
diferentes aplicações
Problema: Temos um aplicativo OO que precisa interagir com um
banco de dados. O padrão vigente nas empresas é o banco de
dados relacional – sem perspectivas de mudança
Solução: Mapeamento Objeto-Relacional (OR)
É uma técnica que consiste em representar o objeto de maneira
relacional na gravação e recuperação do banco de dados
PERSISTÊNCIA
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Modelos de Mapeamento Objeto Relacional
Data Transfer Objects (DTO): São simples objetos que contêm
métodos 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 conexões com a fonte de dados, lendo e gravando
dados nela
Java Persistence API (JPA): É a persistência de POJO (Plain Old
Java Object) por meio do mapeamento entre objetos Java e um
banco de dados relacional. Hibernate implementa JPA
PERSISTÊNCIA
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
MODELO DE MAPEAMENTO OBJETO RELACIONAL
DTO
id nome semestres valor
1 GTI 5 474.81
2 ADS 5 474.81
3 Redes 5 474.81
Curso
nome:string
semestres:int
valor:float
public m1():void
public m2(int):int
public incluir():
public consultar():
Public alterar():
Public excluir():
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
MODELO DE MAPEAMENTO OBJETO RELACIONAL
DAO
CursoDAO
public incluir(Curso):
public consultar(id): Curso
public listar(): List<Curso>
public alterar(Curso):
public excluir(Curso):
id nome semestres valor
1 GTI 5 474.81
2 ADS 5 474.81
3 Redes 5 474.81
Curso
nome:string
semestres:int
valor:float
public m1():void
public m2(int):int
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
CRUD
COLLECTIONS & DB & SQL
PERSISTÊNCIA/DAO & CRUD
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
http://pt.wikipedia.org/wiki/CRUD
Acrônimo de Create, Retrieve, Update e Delete
Quatro operações básicas de bancos de dados relacionais
o Create INSERT
o Retrieve (Read) SELECT
o Update UPDATE
o Destroy (Delete) DELETE
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
CRUD COM MVC
curso.ação(salvar):Entrada
curso.ação(incluir):Entrada
curso.ação:Listagem
curso.ação(alterar):Entrada
curso.ação(salvar):Listagem
curso.ação(excluir):Listagem
curso.ação:Listagem
LEGENDA:
AÇÃO.ação(AÇÃOINTERNA):RESULTADO
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
<%@ page language="java" contentType="text/html;
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="REFRESH" content="0;
URL=${pageContext.request.contextPath}/curso.acao">
EXEMPLO COM MVC
index.jsp
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
DROP DATABASE escola;
CREATE DATABASE escola;
USE escola;
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)
);
br.ucb.modelo.dao >> banco.sql
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
package br.ucb.controle;
public class Controlador extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletR... {
RequestDispatcher dispatcher;
String acao=request.getServletPath();
String resultado, pagina="/erroControleResultado.html";
try {
// *** index.acao ***********************************************
if (acao.equals("/index.acao"))
pagina = "/entrada.jsp";
// *** calculadora.acao *****************************************
if (acao.equals("/calculadora.acao")) {
CalculadoraAcao obj = new CalculadoraAcao();
resultado = obj.executar(request, response);
if (resultado.equals(Acao.SUCESSO)) pagina = "/resultado.jsp";
if (resultado.equals(Acao.ERRO)) pagina = "/erro.jsp";
if (resultado.equals(Acao.ENTRADA)) pagina = "/entrada.jsp";
}
} catch (Exception e) {
pagina="/erroControleExecucao.html";
}
dispatcher = request.getRequestDispatcher(pagina);
dispatcher.forward(request, response);
}
}
EXEMPLO COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// *** curso.acao *********************************************************
if (acao.equals("/curso.acao")) {
CursoAcao obj = new CursoAcao();
resultado = obj.executar(request, response);
if (resultado.equals("LISTAGEM")) pagina = "/entidades/cursoLista.jsp";
if (resultado.equals(Acao.ENTRADA)) pagina = "/entidades/cursoEntrada.jsp";
}
controlador
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...>
<display-name>MVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Controlador</servlet-name>
<servlet-class>br.ucb.controle.Controlador</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Controlador</servlet-name>
<url-pattern>*.acao</url-pattern>
</servlet-mapping>
</web-app>
EXEMPLO COM MVC
web.xml
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
package br.ucb.modelo.acao;
public interface Acao {
public static String SUCESSO="SUCESSO";
public static String ERRO="ERRO";
public static String ENTRADA="ENTRADA";
public String executar(HttpServletRequest request,
HttpServletResponse response) throws Exception;
}
EXEMPLO COM MVC
Interface da ação
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
EXEMPLO COM MVC package br.ucb.modelo.acao;
public class CalculadoraAcao implements Acao {
public String executar(HttpServletRequest request, HttpServletRes... {
// Instancia o OBJETO DE NEGÓCIO e carrega seus atributos
CalculadoraBean calculadora = new CalculadoraBean();
try {
calculadora.setN1(Float.parseFloat(request.getParameter("n1")));
calculadora.setN2(Float.parseFloat(request.getParameter("n2")));
// Coloca o OBJETO DE NEGÓCIO (contexto/requisicao)
request.setAttribute("calculadora", calculadora);
}
catch (NumberFormatException e) {
// Cria uma variável (contexto/requisicao) para o ERRO
request.setAttribute("erro", "Erro de conversao");
return Acao.ENTRADA;
}
catch (NullPointerException e) {
return Acao.ENTRADA;
}
// Executa regra de negócio (métodos do OBJETO DE NEGÓCIO)
if (request.getParameter("acaoInterna").equals("multiplicar"))
if (!calculadora.multiplicar())
return Acao.ERRO;
return Acao.SUCESSO;
}
}
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
public String executar(HttpServletRequest request, HttpServletResponse... {
CursoDAO cursoDao = new CursoDAO();
CursoBean curso = new CursoBean();
List <CursoBean> cursos;
if (request.getParameter("acaoInterna") == null) {
cursos = cursoDao.listar();
request.setAttribute("cursos", cursos);
return "LISTAGEM";
}
try {
if (request.getParameter("nome") != null)
curso.setNome(request.getParameter("nome"));
if (request.getParameter("semestres") != null)
curso.setSemestres(Integer.parseInt(request.getParameter("semestres")));
if (request.getParameter("valor") != null)
curso.setValor(Float.parseFloat(request.getParameter("valor").replace(',', '.')));
}
catch (Exception e) {
// Cria uma variável (contexto/requisicao) para o ERRO
request.setAttribute("erro", "Erro de conversao");
return Acao.ENTRADA;
}
// continua no próximo slide
CRUD COM MVC CursoAcao.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// continuação
if (request.getParameter("acaoInterna").equals("excluir")) {
curso = cursoDao.consultar(Long.valueOf(request.getParameter("id")));
if (cursoDao.excluir(curso) > 0)
request.setAttribute("mensagem", "Excluído com sucesso");
else
request.setAttribute("erro", "Erro de exclusão");
}
if (request.getParameter("acaoInterna").equals("incluir"))
return Acao.ENTRADA;
if (request.getParameter("acaoInterna").equals("alterar")) {
curso = cursoDao.consultar(Long.valueOf(request.getParameter("id")));
request.setAttribute("curso", curso);
return Acao.ENTRADA;
}
// continua no próximo slide
CRUD COM MVC CursoAcao.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// continuação
if (request.getParameter("acaoInterna").equals("salvar")) {
if (request.getParameter("id").equals("")) { // Incluir
if (cursoDao.incluir(curso) > 0)
request.setAttribute("mensagem", "Incluído com sucesso");
else
request.setAttribute("erro", "Erro de inclusão");
}
else { // Alterar
curso.setId(Long.valueOf(request.getParameter("id")));
if (cursoDao.alterar(curso) > 0)
request.setAttribute("mensagem", "Alterado com sucesso");
else
request.setAttribute("erro", "Erro de alteração");
}
}
cursos = cursoDao.listar();
request.setAttribute("cursos", cursos);
return "LISTAGEM";
}
CRUD COM MVC CursoAcao.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
package br.ucb.modelo.bean;
public class CursoBean implements Serializable {
private long id;
private String nome;
private int semestres;
private float valor;
public CursoBean() { }
public final long getId() { return id; }
public final void setId(long id) { this.id = id; }
public final String getNome() { return nome; }
public final void setNome(String nome) { this.nome = nome; }
public final int getSemestres() { return semestres; }
public final void setSemestres(int semestres) {this.semestres= semestres;}
public final float getValor() { return valor; }
public final void setValor(float valor) { this.valor = valor; }
}
CRUD COM MVC
CursoBean.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
package br.ucb.modelo.dao;
public class CursoDAO {
private Connection con;
public CursoDAO() throws SQLException {
this.con = ConnectionFactory.getConnection();
}
public int incluir(CursoBean curso) throws SQLException {
if (curso == null) return 0;
String sql="INSERT INTO curso (nome, semestres, valor) values (?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, curso.getNome());
stmt.setInt(2, curso.getSemestres());
stmt.setFloat(3, curso.getValor());
int retorno = stmt.executeUpdate();
stmt.close();
return retorno;
}
// continua no próximo slide
CRUD COM MVC
CursoDAO.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// continuação
public CursoBean consultar(Long id) throws SQLException {
String sql = "SELECT * FROM curso WHERE id=?";
PreparedStatement stmt = this.con.prepareStatement(sql);
stmt.setLong(1, id);
ResultSet rs = stmt.executeQuery();
CursoBean curso = null;
if (rs.next()) {
curso = new CursoBean();
curso.setId(rs.getLong("id"));
curso.setNome(rs.getString("nome"));
curso.setSemestres(rs.getInt("semestres"));
curso.setValor(rs.getFloat("valor"));
}
rs.close();
stmt.close();
return curso;
}
// continua no próximo slide
CRUD COM MVC
CursoDAO.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// continuação
public List<CursoBean> listar() throws SQLException {
String sql = "SELECT * FROM curso";
PreparedStatement stmt = this.con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<CursoBean> cursos = new ArrayList<CursoBean>();
while (rs.next()) {
CursoBean curso = new CursoBean();
curso.setId(rs.getLong("id"));
curso.setNome(rs.getString("nome"));
curso.setSemestres(rs.getInt("semestres"));
curso.setValor(rs.getFloat("valor"));
cursos.add(curso);
}
rs.close();
stmt.close();
return cursos;
}
// continua no próximo slide
CRUD COM MVC
CursoDAO.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
// continuação
public int alterar(CursoBean curso) throws SQLException {
if (curso == null) return 0;
String sql="UPDATE curso SET nome=?, semestres=?, valor=? WHERE id=?";
PreparedStatement stmt = this.con.prepareStatement(sql);
stmt.setString(1, curso.getNome());
stmt.setInt(2, curso.getSemestres());
stmt.setFloat(3, curso.getValor());
stmt.setLong(4, curso.getId());
int retorno = stmt.executeUpdate();
stmt.close();
return retorno;
}
public int excluir(CursoBean curso) throws SQLException {
if (curso == null) return 0;
String sql = "DELETE FROM curso WHERE id=?";
PreparedStatement stmt = this.con.prepareStatement(sql);
stmt.setLong(1, curso.getId());
int retorno = stmt.executeUpdate();
stmt.close();
return retorno;
}
}
CRUD COM MVC CursoDAO.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
package br.ucb.modelo.dao;
public class ConnectionFactory {
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());
}
}
}
CRUD COM MVC
ConnectionFactory.java
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
<%@ 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 próximo slide -->
entidades\cursoLista.jsp
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
<!-- continuação -->
<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>
</body>
</html>
entidades\cursoLista.jsp
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
1. Pegue no Moodle os JARs (JSTL - LIB), descompacte e copie os
arquivos para diretório (pasta) WEB-INF/lib
2. Pegue no Moodle as Tag Libs (JSTL - JSTL), descompacte e copie os
arquivos para diretório (pasta) WEB-INF/tld
3. Adicione a referência a tag lib no web.xml:
INSTALAÇÃO DO JSTL
<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>
</jsp-config>
</web-app>
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Inclusão das imagens no projeto
1. Pegue no Moodle as imagens (img - crud), descompacte e
copie os arquivos para diretório (pasta) WebContent/img
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
<%@ 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/>
<a href="${pageContext.request.contextPath}/curso.acao">Voltar</a>
</body></html>
entidades\cursoEntrada.jsp
CRUD COM MVC
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
EXEMPLO COM MVC
<html>
<head><title>Erro</title></head>
<body>
ERRO DE EXECUÇÃO DO CONTROLE
</body>
</html>
erroControleExecucao.html
<html>
<head><title>Erro</title></head>
<body>
ERRO DO CONTROLE<p/>
Ação ou Resultado não localizado!
</body>
</html>
erroControleResultado.html
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Banco de Dados
Perguntas?
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
PASSOS, Antônio. 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, Programação, Java, Enum.
http://www.tiexpert.net/programacao/java/enum.php, acessado em 27/07/2011.
GONÇALVES, Edson. Desenvolvendo Aplicações Web com JSP, Servlets, JSF,
Hibernate, EJB 3, Persistence e Ajax. Rio de Janeiro: Ciência Moderna, 2007.
www.java.com/pt_BR/about/
Servlets/JSP, Prof. Msc. Edson Angoti Júnior
Criando e Entendendo o Primeiro Servlet, Raphaela Galhardo Fernandes
http://www.j2eebrasil.com.br/index
REFERÊNCIAS BIBLIOGRAFICAS
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
Obrigado!
Prof. Edson F. da Fonseca
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
BANCO DE DADOS – EXERCÍCIO
Exercício
Considerando a instrução like do
SQL...
...e utilizando o exemplo visto,
implemente no sistema uma
pesquisa de curso por nome, ou
parte do nome.
SELECT * FROM curso
WHERE nome like "a%";
Programação para WEB
Prof. Edson F. da Fonseca
UNIVERSIDADE CATÓLICA DE BRASÍLIA
CatólicaTec – Cursos Tecnológicos
curso.ação(salvar):Entrada
curso.ação(incluir):Entrada
curso.ação:Listagem
curso.ação(alterar):Entrada
curso.ação(salvar):Listagem
curso.ação(excluir):Listagem
curso.ação(filtrar):Listagem
curso.ação:Listagem
LEGENDA:
AÇÃO.ação(AÇÃOINTERNA):RESULTADO
BANCO DE DADOS – EXERCÍCIO
Top Related