Buscar

atividade-pratica-Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Manual de Laboratório para Desenvolvimento de Sistema Web 
 
Disciplina: Seminário Interdisciplinar: Implementação de uma Aplicação Web (ADS102) 
Proposta: Desenvolver um Pequeno Sistema Web para Funcionário 
 
 
Introdução 
 
Existem várias linguagens de programação que permitem o desenvolvimento de sistemas web, porém, 
dependendo do contexto, uma é mais vantajosa que a outra. Além disso, existem vários outros 
recursos como o JavaScript, HTML (Linguagem de Marcação) e estilos (CSS), os quais podem ou 
devem ser utilizados no desenvolvimento de uma aplicação web, dependendo do contexto. Neste 
sentido, além de programar as regras de negócios e funcionalidades na linguagem de programação, 
normalmente é necessário programar funções JavaScript para controles das páginas, como validações 
de formulários por exemplo, assim como códigos de estilos (CSS) para as páginas. Isso acontece tanto 
em ASP, PHP, Java, dentre outras linguagens de programação web. Neste contexto, o Java possui um 
framework chamado JSF, o qual possibilita o desenvolvimento de sistemas web sem a implementação 
de códigos-fonte JavaScript, tornando menos trabalhoso o desenvolvimento das páginas. 
Dentro deste contexto, esta atividade de prática possui o objetivo de complementar o 
aprendizado, aplicando as principais tecnologias estudadas, para o desenvolvimento de um pequeno 
sistema web. Através deste sistema web desenvolvido, você poderá desenvolver o paper da disciplina, 
no qual devem ser realizadas pesquisas bibliográficas para descrever as tecnologias na implementação 
do sistema. Alguns pequenos trechos de códigos fonte principais, devem ser apresentados no paper, 
os quais devem ser explicados com ao menos um parágrafo. 
 
 
Objetivos 
 Aplicar ou aprimorar os conhecimentos obtidos para configuração do ambiente para 
desenvolvimento de um sistema web; 
 Criar um sistema web para gravação de funcionários; 
 Através do desenvolvimento do sistema web, exercitar e aprofundar os conhecimentos 
obtidos na linguagem de programação Java. 
 
 
Atividade e Procedimentos 
 
Desenvolver um sistema web para cadastro de funcionários. Neste sistema, deve ter uma 
página principal, com um link para a página onde existe o formulário para cadastrar funcionários. 
Seguem passos para o desenvolvimento: 
 Criar um banco de dados chamado “Uniasselvi” no MySQL; 
 Criar uma tabela chamada “Funcionario” com os campos “codigo”, “nome”, “cargo”, 
“descricaocargo”, “setor” e “salario (o comando SQL está descrito abaixo); 
 Criar uma página inicial HTML com um link para a segunda página que terá o 
formulário para cadastro; 
 
 
 
 
 
 
 Criar uma segunda página HTML, contendo o formulário de cadastro, onde no botão 
gravar será feita a requisição para cadastro do funcionário. 
 
 
 
Desenvolvimento do Software em Java (Servlet) 
 
Criar e configurar o projeto da aplicação web na IDE Eclipse 
1º Dentro do ambiente de desenvolvimento Eclipse, clique com o botão direito do mouse sobre a área 
de projetos, e selecione a opção “New” e então “Dynamic Web Project”, conforme figura a seguir. 
 
 
 
 
 
 
 
 
2º Na janela que abrir, informe o nome do projeto, conforme próxima figura. 
 
 
 
 
 
 
 
 
 
 
3º Clique no botão “Finish”. 
 
 
 
4º Sobre a pasta “src” do projeto, clique com o botão direito do mouse e selecione a opção “New” e 
então “Servlet”, conforme sendo apresentado na tela a seguir. 
 
 
 
 
 
 
 
 
 
 
 
5º Na tela que abrir, informe “servlet” no campo “Java package” e “Cadastro” no campo “Class 
name”, conforme figura a seguir. 
 
 
 
 
 
 
 
 
 
 
 
6º Será criado um código fonte da classe “Cadastro”, conforme a seguir, a qual se refere a um Servlet. 
 
 
 
 
7º Novamente, sobre a pasta “src” do projeto, clique com o botão direito do mouse e selecione a 
opção “New” e então “Package”, para que possa ser criado um pacote de classes separado. 
 
 
 
 
 
 
 
 
 
 
 
 
8º Com o passo anterior, será apresentada a tela a seguir, bastando informar o nome do pacote que se 
deseja. Informe “entity”, e então pressione “Finish”. Faça o mesmo procedimento para criar outro 
pacote, chamando-o de “dao”. 
 
 
 
 
 
8º A estrutura do projeto deve estar conforme a figura a seguir. 
 
 
 
 
9º Sobre a package “entity”, criada anteriormente, clique com o botão direito do mouse e selecione a 
opção “New” e então “Class”, conforme ilustrado na figura a seguir, para que seja criada uma classe 
dentro deste pacote. 
 
 
 
 
 
 
 
 
 
 
10º Na tela que abrir, informe apenas o campo “Name”, digitando “Funcionario”, conforme figura a 
seguir, e pressione a opção “Finish”. Com este passo, será criada a classe dentro do pacote “entity”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
11º Na classe “Funcionario”, criada, implemente o código fonte sendo apresentado a seguir. Este é o 
código da classe de entidade, que representa a tabela “Funcionario” do banco de dados, a qual 
criaremos no decorrer deste documento. 
 
package entity; 
 
public class Funcionario { 
 private int codigo; 
 private String nome; 
 private int cargo; 
 private String descricaoCargo; 
 private int setor; 
 private double salario; 
 
 public Funcionario() { 
 super(); 
 // TODO Auto-generated constructor stub 
 } 
 
 
 public int getCodigo() { 
 return codigo; 
 } 
 
 
 public void setCodigo(int codigo) { 
 this.codigo = codigo; 
 } 
 
 
 public String getNome() { 
 return nome; 
 } 
 
 public void setNome(String nome) { 
 this.nome = nome; 
 } 
 
 public int getCargo() { 
 return cargo; 
 } 
 
 public void setCargo(int cargo) { 
 this.cargo = cargo; 
 } 
 
 public String getDescricaoCargo() { 
 return descricaoCargo; 
 } 
 
 public void setDescricaoCargo(String descricaoCargo) { 
 this.descricaoCargo = descricaoCargo; 
 } 
 
 public int getSetor() { 
 
 
 
 
 
 
 return setor; 
 } 
 
 public void setSetor(int setor) { 
 this.setor = setor; 
 } 
 
 
 public double getSalario() { 
 return salario; 
 } 
 
 
 public void setSalario(double salario) { 
 this.salario = salario; 
 } 
} 
 
 
 
12º No pacote “dao” crie duas classes, nomeando elas por “ConexaoBD” e “FuncionarioDAO”, 
respectivamente. Implemente os códigos fonte a seguir em cada uma delas. 
 
A classe “ConexaoBD”, implementada abaixo, serve para retornar um objeto do tipo Connection, o 
qual possui a conexão com o banco de dados, sendo este utilizado na classe do padrão DAO. 
 
package dao; 
 
import java.sql.Connection; 
import java.sql.DriverManager; 
 
public class ConexaoBD { 
 static String status=""; 
 
 public static Connection getConnection(){ 
 Connection conn = null; 
 
 try { 
 Class.forName("com.mysql.jdbc.Driver").newInstance(); 
 conn = DriverManager.getConnection("jdbc:mysql:///uniasselvi", "root", "root"); 
 
 if (conn == null){ 
 System.out.println("3333333333333 ----> conn está null"); 
 } 
 
 } catch(Exception e) { 
 e.printStackTrace(); 
 System.err.println("Class Conexao - Exception: " + e.getMessage()); 
 } finally { 
 } 
 return conn; 
 
 
 
 
 
 
 } 
} 
 
A classe “FuncionarioDAO”, implementada abaixo, serve para inserir um funcionário novo no 
cadastro, assim como retornar uma lista de objetos do tipo “Funcionario”, os quais referenciam 
registros da tabela “funcionario”. 
 
package dao; 
 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 
 
import entity.Funcionario; 
 
public class FuncionarioDAO { 
 
 public List<Funcionario> listarFuncionarios(Connection conn) throws SQLException{ 
 StringBuffer sql = new StringBuffer(); 
 PreparedStatement ps = null; 
 ResultSet rs = null; 
 Funcionario func = null; 
 List<Funcionario> lista = new ArrayList<Funcionario>(); 
 try{ 
 sql.append("SELECT * FROM FUNCIONARIO "); 
 sql.append("ORDER BY CODIGO"); 
 ps = conn.prepareStatement(sql.toString()); 
 rs = ps.executeQuery(); 
 while (rs.next()){ 
 func = new Funcionario(); 
 func.setCodigo(rs.getInt("CODIGO")); 
 func.setNome(rs.getString("NOME").trim()); 
 func.setCargo(rs.getInt("CARGO")); 
 func.setDescricaoCargo(rs.getString("DESCRICAOCARGO")); 
 func.setSetor(rs.getInt("SETOR")); 
 func.setSalario(rs.getDouble("SALARIO")); 
 lista.add(func); 
 } 
 }catch (Exception e) { 
 e.printStackTrace(); 
 System.out.println("(listarFuncionarios) - Erro: " + e.getMessage()); 
 }finally{ 
 try{ps.close();}catch(SQLException e){} 
 if (rs != null){ 
 try{rs.close();}catch(SQLException e){} 
 } 
 
 
 
 
 
 
 ps = null; 
 rs = null; 
 sql = null; 
 } 
 return lista; 
 } 
 
 
 public void inserir(Connection conn, Funcionario funcionario) throws SQLException{ 
 StringBuffer sql = new StringBuffer(); 
 PreparedStatement ps = null; 
 try{ 
 int qtdeGravados = listarFuncionarios(conn).size(); // <<<<------- 
 qtdeGravados++; 
 
 sql.delete(0, sql.length()); 
 sql.append("INSERT INTO FUNCIONARIO (CODIGO, NOME, CARGO, 
DESCRICAOCARGO, SETOR, SALARIO) "); 
 sql.append(" VALUES (?, ?, ?, ?, ?, ?) "); 
 ps = conn.prepareStatement(sql.toString()); 
 ps.setInt(1, qtdeGravados); 
 ps.setString(2, funcionario.getNome()); 
 ps.setInt(3, funcionario.getCargo()); 
 ps.setString(4, funcionario.getDescricaoCargo()); 
 
 ps.setInt(5, funcionario.getSetor()); 
 ps.setDouble(6, funcionario.getSalario()); 
 ps.executeUpdate(); 
 
 }finally{ 
 try{ps.close();ps = null;}catch(SQLException e){} 
 ps = null; 
 sql = null; 
 } 
 } 
 
 public void alterar(List<Funcionario> lista, Funcionario funcionario){ 
 for (int liX = lista.size()-1; liX >= 0; liX--){ 
 if (lista.get(liX).getCodigo() == funcionario.getCodigo()){ 
 lista.get(liX).setNome(funcionario.getNome()); 
 lista.get(liX).setCargo(funcionario.getCargo()); 
 lista.get(liX).setDescricaoCargo(funcionario.getDescricaoCargo()); 
 lista.get(liX).setSetor(funcionario.getSetor()); 
 lista.get(liX).setSalario(funcionario.getSalario()); 
 } 
 } 
 funcionario = null; 
 funcionario = new Funcionario(); 
 } 
 
 
 
 
 
 
 
 public void excluir(List<Funcionario> lista, Funcionario funcionario){ 
 for (int liX = lista.size()-1; liX >= 0; liX--){ 
 if (lista.get(liX).getCodigo() == funcionario.getCodigo()){ 
 lista.remove(liX); 
 } 
 } 
 funcionario = null; 
 funcionario = new Funcionario(); 
 } 
 
} 
 
 
14º Por último, na camada de servidor, altere o código fonte do servlet para conforme apresentado 
abaixo. Note neste código fonte que no método que recebe requisições do tipo POST, está sendo 
realizada a lógica de gravação do cadastro de funcionário. Nesta classe, é invocado o método “inserir” 
da classe FuncionarioDAO. 
 
package servlet; 
 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.SQLException; 
 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import dao.ConexaoBD; 
import dao.FuncionarioDAO; 
import entity.Funcionario; 
 
 
@WebServlet("/CadastroFuncionario") 
public class Cadastro extends HttpServlet { 
 private static final long serialVersionUID = 1L; 
 
 
 public Cadastro() { 
 super(); 
 } 
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) 
 throws 
ServletException, IOException { 
 
 System.out.println("Efetuado método GET"); 
 
 } 
 
 
 
 
 
 
 
 protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
 System.out.println("Passando pelo método POST"); 
 Connection conn = ConexaoBD.getConnection(); 
 FuncionarioDAO funcDao = new FuncionarioDAO(); 
 try { 
 Funcionario func = new Funcionario(); 
 func.setCodigo(funcDao.listarFuncionarios(conn).size()+1); 
 func.setNome(request.getParameter("nome")); 
 func.setDescricaoCargo(request.getParameter("descCargo")); 
 /* 
 * campos abaixo foram deixados fixos pois é necessário colocar 
 * uma função nos campos numéricos para apenas permitir digitar 
números 
 * 
 */ 
 func.setCargo(9); 
 func.setSetor(1010); 
 func.setSalario(5800); 
 
 funcDao.inserir(conn, func); 
 
 request.setAttribute("listaFuncionarios", 
funcDao.listarFuncionarios(conn)); 
 
 } catch (SQLException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } finally { 
 try { 
 conn.close(); 
 } catch (SQLException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } 
 conn = null; 
 
 } 
 RequestDispatcher rd = 
request.getServletContext().getRequestDispatcher("/index.jsp"); 
 rd.forward(request, response); 
 
 } 
 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15º Na pasta “lib” do projeto, coloque o conector do MySQL, para que seja possível a conexão com 
o banco de dados. Este conector, você encontra facilmente para download, mas utilize a mesma versão 
do MySQL que vocÊ possui instalado. 
 
 
 
 
 
16º Basta criar os arquivos HTML para a aplicação funcionar. Para isso, sobre a pasta do projeto 
“WebContent”, clique com o botão direito do mouse e selecione a opção “New”, e então “HTML 
File”. Informe o nome do arquivo e clique em “Finish”. Crie dois arquivos, um com o nome 
“index.html” e outro com o nome “cadastroFuncionario.html”. Ambos os códigos estão apresentados 
a seguir. 
 
A página “index” possui apenas um link para a página de cadastro. 
 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
 
 <br><br> 
 <a href="cadastroFuncionario.html">Cadastro Funcionário</a> 
 <br><br> 
 
</body> 
</html> 
 
 
A página “cadastroFuncionario”, por sua vez, possui o formulário HTML, o qual invoca o servlet 
através do action do form “CadastroFuncionario”. 
 
<!DOCTYPE html> 
<html> 
<head> 
 
 
 
 
 
 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
 
 <form method="POST" action="CadastroFuncionario"> 
 <table> 
 <tr> 
 <td colspan="2">Cadastro de Funcionário</td> 
 </tr> 
 <tr> 
 <td>Nome:</td> 
 <td><input type="text" name="nome"></td> 
 </tr> 
 <tr> 
 <td>Cargo:</td> 
 <td><input type="text" name="cargo"></td> 
 </tr> 
 <tr> 
 <td>Descrição cargo:</td> 
 <td><textarea name="descCargo" cols="15" 
rows="15"></textarea></td> 
 </tr> 
 
 <tr> 
 <td>Setor:</td> 
 <td><input type="text" name="setor"></td> 
 </tr> 
 <tr> 
 <td>Salario:</td> 
 <td><input type="text" name="salario"></td> 
 </tr> 
 
 </table> 
 <br><br> 
 <input type="submit" name="Gravar"> 
 </form> 
 
</body> 
</html> 
 
 
 
Preparar o banco de dados no SGBD MySQL 
Vamos criar agora nosso banco de dados e suas tabelas, necessárias para nossa aplicação web. Acesse 
a linha de comando do MySQL, atalho sendo apresentado na figura abaixo. 
 
 
 
Será aberta a tela, conforme ilustrada na figura a seguir. Informe a senha “root”, caso você manteve 
esta senha durante a instalação do MySQL, e então pressione ENTER. 
 
 
 
 
 
 
 
 
 
 
Crie o banco de dados, através do comando “create database uniasselvi;”, conforme apresentado 
abaixo. Neste caso, o nome de nosso banco de dados será “Uniasselvi”. 
 
 
 
 
Conecte no banco de dados “Uniasselvi”, através do comando “connect uniasselvi;”, para então serem 
criadas, neste, as tabelas necessárias para nossa aplicação web. Tente utilizar a mesma nomenclatura 
descritas neste manual para o banco de dados e tabelas. 
 
 
 
 
Agora, crie a tabela “Funcionario” no banco de dados “Uniasselvi”, criado acima. Segue comando 
SQL. 
 
CREATE TABLE FUNCIONARIO( 
 CODIGO INT(9) NOT NULL, 
 NOME VARCHAR(30) NOT NULL, 
 CARGO INT(9) NOT NULL, 
 DESCRICAOCARGO VARCHAR(30) NOT NULL, 
 SETOR INT(9) NOT NULL, 
 SALARIO DOUBLE(6, 2) NOT NULL 
) 
 
 
 
 
 
 
 
 
Execução da Aplicação Servlet 
 
Para executar a aplicação, basta adiciona-la ao servidor de aplicação, como o Jboss, WildFly ou 
Tomcat, por exemplo. No navegador, se você não alterou a configuração original da porta a ser 
executada, acesse a aplicação pela URL http://localhost:8080/Funcionario/ , conforme figura abaixo. 
 
 
Após clicar no link “Cadastro Funcionário” da página inicial da aplicação, é apresentado o formulário 
desenvolvido. Basta informar os valores nos campos e pressionar o botão para gravar um novo 
funcionário no banco de dados. 
 
 
 
http://localhost:8080/Funcionario/

Outros materiais