Sei sulla pagina 1di 56

BANCO DE DADOS

Collections & DB & SQL Persistncia/DAO & CRUD


(Verso 2011/2)

Prof. Edson F. da Fonseca


MBA, MsC, PMP, Cobit

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

COLLECTIONS & DB & SQL PERSISTNCIA/DAO & CRUD

Collections

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

COLLECTIONS FRAMEWORK

Criado a partir da verso 1.2 do JDK


Coleo um objeto que representa um grupo de objetos Prov uma arquitetura unificada para representao e manipulao de colees Reduz o esforo de aprendizado, projeto e implementao

Maximiza a interoperabilidade entre APIs

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

COLLECTIONS FRAMEWORK

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

COLLECTIONS & DB & SQL PERSISTNCIA/DAO & CRUD

DB SQL

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS O que Banco de Dados?

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS

Viso Rpida:
Banco Dados MySQL Ferramenta de administrao grfica

SQL Structured Query Language


Criao de banco Criao de tabela Insero em tabela Consulta em tabela

Alterao em tabela
Remoo em tabela
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS SQL Structured Query Language Criao de banco


CREATE DATABASE escola;

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS SQL Structured Query Language Consulta em tabela


SELECT * FROM curso;

Insero em tabela
INSERT INTO curso(nome, semestres, valor) VALUES ("Gesto de TI", 5, 474.81);

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS SQL Structured Query Language Alterao em tabela


UPDATE curso SET nome="Computao", semestres=8, valor=890.55 WHERE id=1;

Remoo em tabela
DELETE FROM curso WHERE id=1;

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS 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 diretrio (pasta) WEB-INF/lib

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

FLUXO NA WEB COM BANCO DE DADOS

CONEXO

BANCO

CLIENTE

WEB

SERVIDOR DB

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

FLUXO NA WEB COM BANCO DE DADOS

CLIENTE

Controle
Forward Evento Evento de Negcio

Modelo

CONEXO

SERVIDOR WEB

Dados

BANCO

SERVIDOR CONTAINER WEB

SERVIDOR EJB

SERVIDOR DB
Programao para WEB

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Prof. Edson F. da Fonseca

FLUXO NA WEB COM BANCO DE DADOS

Controle
Forward Evento Evento de Negcio

CLIENTE

Modelo
Dados

CONEXO

BANCO

SERVIDOR WEB + CONTAINER WEB

SERVIDOR DB

SERVIDOR EJB

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

COLLECTIONS & DB & SQL PERSISTNCIA/DAO & CRUD

Persistncia DAO

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

PROBLEMA DA PESISTNCIA DE OBJETOS

Curso nome:string semestres:int valor:float public m1():void public m2(int):int

id 1 2 3

nome GTI ADS Redes

semestres 5 5 5

valor 474.81 474.81 474.81

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

MODELO DE MAPEAMENTO OBJETO RELACIONAL

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

MODELO DE MAPEAMENTO OBJETO RELACIONAL

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

COLLECTIONS & DB & SQL PERSISTNCIA/DAO & CRUD

CRUD

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC

curso.ao:Listagem

curso.ao(incluir):Entrada curso.ao(alterar):Entrada curso.ao(salvar):Listagem curso.ao:Listagem

curso.ao(excluir):Listagem
UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

curso.ao(salvar):Entrada
ProgramaoLEGENDA: para WEB

AO.ao(AOINTERNA):RESULTADO Prof. Edson F. da Fonseca

EXEMPLO COM MVC


index.jsp
<%@ 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">

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


br.ucb.modelo.dao >> banco.sql
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) );

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

EXEMPLO COM MVC


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); UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB } CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca }

CRUD COM MVC


controlador
// *** 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"; }

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

EXEMPLO COM MVC


web.xml
<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>

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

EXEMPLO COM MVC


Interface da ao
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; }

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

EXEMPLO COM MVC


package br.ucb.modelo.acao; public class CalculadoraAcao implements Acao { public String executar(HttpServletRequest request, HttpServletRes... { // Instancia o OBJETO DE NEGCIO 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 NEGCIO (contexto/requisicao) request.setAttribute("calculadora", calculadora); } catch (NumberFormatException e) { // Cria uma varivel (contexto/requisicao) para o ERRO request.setAttribute("erro", "Erro de conversao"); return Acao.ENTRADA; } catch (NullPointerException e) { return Acao.ENTRADA; } // Executa regra de negcio (mtodos do OBJETO DE NEGCIO) if (request.getParameter("acaoInterna").equals("multiplicar")) if (!calculadora.multiplicar()) return Acao.ERRO; return Acao.SUCESSO; UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB } CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca }

CRUD COM MVC


CursoAcao.java
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 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

CRUD COM MVC


CursoAcao.java
// continuao if (request.getParameter("acaoInterna").equals("excluir")) { curso = cursoDao.consultar(Long.valueOf(request.getParameter("id"))); if (cursoDao.excluir(curso) > 0) request.setAttribute("mensagem", "Excludo com sucesso"); else request.setAttribute("erro", "Erro de excluso"); } 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 prximo slide

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


CursoAcao.java
// continuao if (request.getParameter("acaoInterna").equals("salvar")) { if (request.getParameter("id").equals("")) { // Incluir if (cursoDao.incluir(curso) > 0) request.setAttribute("mensagem", "Includo com sucesso"); else request.setAttribute("erro", "Erro de incluso"); } 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 alterao"); } } cursos = cursoDao.listar(); request.setAttribute("cursos", cursos); return "LISTAGEM"; }

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


CursoBean.java
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 public public public public public public public


}

final final final final final final final final

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

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


CursoDAO.java
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; }
UNIVERSIDADE CATLICA DE BRASLIA Programao para WEB Prof. Edson F. da Fonseca

// continua no prximo slide CatlicaTec Cursos Tecnolgicos

CRUD COM MVC


CursoDAO.java
// continuao 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; }
UNIVERSIDADE CATLICA DE BRASLIA // continua no prximo slide CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


CursoDAO.java
// continuao 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; }
UNIVERSIDADE CATLICA DE BRASLIA // continua no prximo slide CatlicaTec Cursos Tecnolgicos Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC


CursoDAO.java
// continuao 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; CATLICA DE BRASLIA UNIVERSIDADE Programao para WEB } CatlicaTec Cursos Tecnolgicos Prof. Edson F. da Fonseca

CRUD COM MVC


ConnectionFactory.java
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()); } }
}

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC

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">&nbsp;</th> </tr> <!-- continua no prximo slide -->

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC

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>&nbsp;<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

CRUD COM MVC Incluso das imagens no projeto

1. Pegue no Moodle as imagens (img - crud), descompacte e


copie os arquivos para diretrio (pasta) WebContent/img

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

CRUD COM MVC

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&atilde;o de Curso</c:if> <c:if test="${curso.id != null}">Altera&ccedil;&atilde;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>

EXEMPLO COM MVC


erroControleExecucao.html
<html> <head><title>Erro</title></head> <body> ERRO DE EXECU&Ccedil;&Atilde;O DO CONTROLE </body> </html>

erroControleResultado.html
<html> <head><title>Erro</title></head> <body> ERRO DO CONTROLE<p/> A&ccedil;&atilde;o ou Resultado n&atilde;o localizado! </body> </html>

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

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!

Prof. Edson F. da Fonseca edsonf@ucb.br

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS EXERCCIO


Considerando a instruo like do SQL...
SELECT * FROM curso WHERE nome like "a%";

Exerccio

...e utilizando o exemplo visto, implemente no sistema uma pesquisa de curso por nome, ou parte do nome.

UNIVERSIDADE CATLICA DE BRASLIA CatlicaTec Cursos Tecnolgicos

Programao para WEB Prof. Edson F. da Fonseca

BANCO DE DADOS EXERCCIO


curso.ao:Listagem

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

ProgramaoLEGENDA: para WEB

AO.ao(AOINTERNA):RESULTADO Prof. Edson F. da Fonseca