Lista de exercícios I - RESPOSTAS Servlets e banco - UEG

Propaganda
Home Page: http://www.posse.ueg.br/index.php/conexao-ueg/meuperfil/userprofile/ronaldo
www.posse.ueg.br
Lista de exercícios I - RESPOSTAS
Servlets e banco de dados
Dado o diagrama de classe abaixo:
1. Crie um banco de dados e as tabelas para armazenar as classes acima.
CREATE TABLE `cliente` (
`id` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(70) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`documento` VARCHAR(30) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`ativo` ENUM('S','N') COLLATE latin1_swedish_ci DEFAULT 'S',
PRIMARY KEY USING BTREE (`id`)
) ENGINE=InnoDB
AUTO_INCREMENT=1 CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
COMMENT='InnoDB free: 7168 Kb;
CREATE TABLE `pedido` (
`id` INTEGER(11) NOT NULL,
`data` DATE NOT NULL,
`id_cliente` INTEGER(11) NOT NULL,
`valor` DOUBLE(10,2) DEFAULT NULL,
PRIMARY KEY USING BTREE (`id`),
KEY `id_cliente` USING BTREE (`id_cliente`),
CONSTRAINT `pedido_fk1` FOREIGN KEY (`id_cliente`) REFERENCES `cliente`
(`id`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB
CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
COMMENT='InnoDB free: 7168 kB; (`id_cliente`) REFER `venda/cliente`(`id`) ON
DELETE NO AC';
2. Utilizando o padrão Connection Factory crie uma classe para conectar ao banco dados
conforme os dados abaixo:
a. Servidor: localhost
b. Nome: venda
c. Usuário: <<conforme configuração do banco>>
d. Senha: <<conforme configuração do banco>>
package br.ueg.posse.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
public static Connection getConexao() throws SQLException{
try {
Class.forName("com.mysql.jdbc.Driver");
return
DriverManager.getConnection("jdbc:mysql://localhost:3306/venda?user=root&password=");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
}
3. Utilizando a linguagem Java, crie o modelo para representar a classe Cliente.
package br.ueg.posse.modelo;
public class Cliente {
private Integer id;
private String nome;
private String documento;
private Double saldo;
private Ativo ativo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDocumento() {
return documento;
}
public void setDocumento(String documento) {
this.documento = documento;
}
public Double getSaldo() {
return saldo;
}
public void setSaldo(Double saldo) {
this.saldo = saldo;
}
public Ativo getAtivo() {
return ativo;
}
public void setAtivo(Ativo ativo) {
this.ativo = ativo;
}
}
4. Utilizando a linguagem Java, e o padrão DAO (Data Access Object), crie uma classe
com os métodos descritos no diagrama de classes Cliente.
package br.ueg.posse.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.ueg.posse.db.Database;
import br.ueg.posse.modelo.Cliente;
public class ClienteDAO {
private Connection conexao;
public ClienteDAO() throws SQLException {
conexao = Database.getConexao();
}
public void incluir(Cliente cliente) throws SQLException{
String sql = "INSERT INTO cliente (nome,documento,saldo,ativo)"
+ "values(?,?,?,?)";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setString(1, cliente.getNome());
stmt.setString(2, cliente.getDocumento());
stmt.setDouble(3, cliente.getSaldo());
stmt.setString(4, cliente.getAtivo().name());
stmt.execute();
}
public void excluir(Cliente cliente) throws SQLException{
String sql = "DELETE cliente WHERE id=?";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setInt(1, cliente.getId());
stmt.execute();
}
public void alterar(Cliente cliente) throws SQLException{
String sql = "UPDATE cliente SET (nome=?, documento=?, saldo=?, ativo=?)
WHERE id=?";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setString(1, cliente.getNome());
stmt.setString(2, cliente.getDocumento());
stmt.setDouble(3, cliente.getSaldo());
stmt.setString(4, cliente.getAtivo().name());
stmt.setInt(5, cliente.getId());
stmt.execute();
}
}
5. Crie um formulário HTML que possibilite ao usuário informar os dados do Cliente,
conforme representação no diagrama de classes
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Cadastro de Clientes</title>
</head>
<body>
<form action="ClienteServlet" method="get">
<label>Nome:</label>
<input type="text" name="nome" id="nome"/><br>
<label>Documento:</label>
<input type="text" name="documento" id="documento"/><br>
<label>Saldo:</label>
<input type="text" nama="saldo" id="saldo"/><br>
<label>Ativo?:</label>
<select name="ativo" id="ativo">
<option value="S">Sim</option>
<option value="N">Não</option>
</select>
<br>
<input type="submit" value="Gravar dados"/>
</form>
</body>
</html>
6. Crie um servlet que possibilite a inserção dos dados do formulário na tabela do banco
de dados.
package br.ueg.posse.servlet;
import java.io.IOException;
import java.sql.SQLException;
import
import
import
import
import
javax.servlet.ServletException;
javax.servlet.annotation.WebServlet;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import br.ueg.posse.dao.ClienteDAO;
import br.ueg.posse.modelo.Ativo;
import br.ueg.posse.modelo.Cliente;
@WebServlet("/ClienteServlet")
public class ClienteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String nome = request.getParameter("nome");
String documento = request.getParameter("documento");
String saldo = request.getParameter("saldo");
String ativo = request.getParameter("ativo");
Cliente cliente = new Cliente();
cliente.setNome(nome);
cliente.setDocumento(documento);
cliente.setSaldo(Double.parseDouble(saldo));
if (ativo.equals("S")){
cliente.setAtivo(Ativo.valueOf("S"));
}else{
cliente.setAtivo(Ativo.valueOf("N"));
}
try {
ClienteDAO dao = new ClienteDAO();
dao.incluir(cliente);
} catch (SQLException e) {
System.out.println("Erro ao inserir o registro no banco de dados:
"+e.getMessage());
e.printStackTrace();
}
}
}
Download