56
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

Slide JSP e Banco de Dados

  • Upload
    thepheu

  • View
    41

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Slide JSP e 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 Collections & DB & SQL

Persistência/DAO & CRUD (Versão 2011/2)

Prof. Edson F. da Fonseca MBA, MsC, PMP, Cobit

Page 2: Slide JSP e Banco de Dados

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

Page 3: Slide JSP e Banco de Dados

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

Page 4: Slide JSP e Banco de Dados

Programação para WEB

Prof. Edson F. da Fonseca

UNIVERSIDADE CATÓLICA DE BRASÍLIA

CatólicaTec – Cursos Tecnológicos

COLLECTIONS FRAMEWORK

Page 5: Slide JSP e Banco de Dados

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

Page 6: Slide JSP e Banco de Dados

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

Page 7: Slide JSP e 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

O que é

Banco de

Dados?

Page 8: Slide JSP e Banco de Dados

Programação para WEB

Prof. Edson F. da Fonseca

UNIVERSIDADE CATÓLICA DE BRASÍLIA

CatólicaTec – Cursos Tecnológicos

Page 9: Slide JSP e Banco de Dados

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

Page 10: Slide JSP e 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)

);

Page 11: Slide JSP e 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

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

Page 12: Slide JSP e 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

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;

Page 13: Slide JSP e Banco de Dados

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

Page 14: Slide JSP e 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

Page 15: Slide JSP e 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

SERVIDOR

EJB

SERVIDOR

DB

SERVIDOR

WEB SERVIDOR

CONTAINER WEB

Modelo

Controle

Evento de

Negócio

Forward

Evento

Dados

Page 16: Slide JSP e Banco de 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

Page 17: Slide JSP e Banco de Dados

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

Page 18: Slide JSP e 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

Page 19: Slide JSP e Banco de Dados

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

Page 20: Slide JSP e Banco de Dados

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

Page 21: Slide JSP e Banco de Dados

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

Page 22: Slide JSP e Banco de Dados

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

Page 23: Slide JSP e Banco de Dados

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

Page 24: Slide JSP e Banco de Dados

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

Page 25: Slide JSP e Banco de Dados

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

Page 26: Slide JSP e Banco de Dados

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

Page 27: Slide JSP e Banco de Dados

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

Page 28: Slide JSP e Banco de Dados

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

Page 29: Slide JSP e Banco de Dados

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

Page 30: Slide JSP e Banco de Dados

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

Page 31: Slide JSP e Banco de Dados

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

Page 32: Slide JSP e Banco de Dados

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

Page 33: Slide JSP e Banco de Dados

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

Page 34: Slide JSP e Banco de Dados

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

Page 35: Slide JSP e Banco de Dados

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

Page 36: Slide JSP e Banco de Dados

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;

}

}

Page 37: Slide JSP e Banco de Dados

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

Page 38: Slide JSP e Banco de Dados

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

Page 39: Slide JSP e Banco de Dados

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

Page 40: Slide JSP e Banco de Dados

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

Page 41: Slide JSP e Banco de Dados

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

Page 42: Slide JSP e Banco de Dados

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

Page 43: Slide JSP e Banco de Dados

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

Page 44: Slide JSP e Banco de Dados

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

Page 45: Slide JSP e Banco de Dados

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

Page 46: Slide JSP e Banco de Dados

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">&nbsp;</th>

</tr>

<!-- continua no próximo slide -->

entidades\cursoLista.jsp

CRUD COM MVC

Page 47: Slide JSP e Banco de Dados

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

</body>

</html>

entidades\cursoLista.jsp

CRUD COM MVC

Page 48: Slide JSP e Banco de Dados

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>

Page 49: Slide JSP e Banco de Dados

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

Page 50: Slide JSP e Banco de Dados

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

<a href="${pageContext.request.contextPath}/curso.acao">Voltar</a>

</body></html>

entidades\cursoEntrada.jsp

CRUD COM MVC

Page 51: Slide JSP e Banco de Dados

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&Ccedil;&Atilde;O DO CONTROLE

</body>

</html>

erroControleExecucao.html

<html>

<head><title>Erro</title></head>

<body>

ERRO DO CONTROLE<p/>

A&ccedil;&atilde;o ou Resultado n&atilde;o localizado!

</body>

</html>

erroControleResultado.html

Page 52: Slide JSP e 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

Perguntas?

Page 53: Slide JSP e Banco de Dados

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

Page 54: Slide JSP e Banco de Dados

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

[email protected]

Page 55: Slide JSP e 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 – 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%";

Page 56: Slide JSP e Banco de Dados

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