Material Java PDF
Material Java PDF
Conteúdo Programático:
UNIDADE I:
o Conhecendo a família Java
o Apresentação da IDE Eclipse para desenvolvimento Java
o Lingugem Java – Apresentação da linguagem e orientação objeto
básica (Classe, Objeto, atributos de acesso e ArrayList ).
o Classe e Objetos e atributos de acesso
o ArrayList
o Polimorfismo e herança.
o Controle de Erro
UNIDADE II:
o JDBC - java.sql - acesso a banco de dados (MYSQL)
o Conceitos básicos sobre Java EE
o Servlet Containers e o Apache Tomcat
o Configurando o Eclipse Europa para desenvolvimento WEB
o Principais TAGs HTML
o JSP – Java Server Pages
o Padrão DAO – Data Access Object
o Construindo um projeto web passo a passo utilizando JSP, DAO
e MYSQL
o Conhecendo alguns frameworks – Hibernate e JFS.
o Apresentação de outras linguagens de programação para web –
DotNet, PHP, Ruby.
Bibliografia Básica:
1. Kurniawan, Bubi. Java para Web com Servlest, JSP e EJB. Ciência Moderna, 2002.
2. Basha, Jeelani. Professional Java Web services. Wrox Press, 2002.
3. Deitel. Java TM : como programar. 6º Ed. Pearson Prentice Hall, 2007.
Bibliografia complementar:
Nessa unidade iremos conhecer um pouco sobre a família Java, suas funções e
áreas de atuação de um desenvolvedor. Vamos estudar a linguagem de programação
Java, nos aperfeiçoando no paradigma Orientação Objeto – Classes, objetos, atributos
de acesso e ArrayList (vetores de objetos), e manipular uma IDE de programação
muito utilizada no mercado, que é o Eclipse.
Ao finalizar essa unidade, vamos conhecer as áreas de programação da família
Java, estando aptos para discutir sobre qual caminho devemos seguir nessa
tecnologia. De igual forma, poderemos desenvolver pequenas aplicações utilizando a
linguagem Java e a IDE Eclipse.
Quando acessamos o eclipse, aparece uma tela de bem vindo, que é chamada
de view Welcome. Quando fechamos essa tela, estamos no WorkBench, que é a
interface onde vamos criar nossos projetos Java no eclipse.
O eclipse é dividido em várias partes: Barra de título, ferramentas,
perspectiva, menu, status, painel do editor e views.
• Barra de título: Exibe a perspectiva atual.
• Barra de Ferramenta: É a barra onde encontraremos vários plugins e
funcionalidades do eclipse.
• Barra de perspectiva: Exibirá qual ambiente o usuário está no
momento.
• Barra de menu: Barra geral do Eclipse, em que podemos encontrar
todas as tarefas do eclipse.
• Barra de status: Exibe informações do item que estiver selecionado
no momento.
• Painel do editor: Ambiente onde podemos editar e construir nossos
códigos fontes.
• Views: Exibe os grupos de objetos selecionados e existentes nos
nossos projetos.
Para certificar que o Eclipse esteja funcionado de maneira correta, vamos
criar um projeto chamado “HelloWorld”, seguido os passos a seguir:
• Clique em File – New – Project – JavaProject
• Crie o projeto Java, o mesmo ficará no diretório do workspace criado
anteriormente.
• Clique em Finish
• O projeto deve ficar igual à imagem abaixo
• Clique com o botão direto do mouse e escolha a opção new – class
Entre as chaves que iremos iniciar com os códigos Java, a primeira ({) indica
o início do método e a segunda (}) o fim.
Depois da maioria das instruções Java, deve ser colocado ponto-e-vírgula
para informar a finalização de uma linha de código.
System.out.println(“Hello World”);
Também pode ser feito comentário em Java através das formas:
// Comentário em Java
/* Comentário em Java 1
Comentário em Java 2
Comentário em Java 3 */
TipoDaVaríavel NomeDaVariável;
Lembrar que Java é uma linguagem Case Sensitive, isto é, a variável deverá
ser chamada exatamente da mesma forma que foi escrita. Caso seja declarada uma
variável com letra maiúscula, essa variável deverá ser chamada com letra maiúscula.
3.3. Operadores
Operadores Significado
== Igualdade
!= Diferente
> Maior que
>= Maior ou igual
< Menor
<= Menor ou igual
Tabela 3.2 – Ilustra os operadores relacionais
Operadores Significado
&& E lógico (and)
! Não (negação)
|| Ou Lógico (or)
Tabela 3.3 – Ilustra os operadores Lógicos
3.4.Controles condicionais
if (condição){
código
}
Existe a estrutura switch, que é também conhecida como case. É muito utilizada
em seqüências de testes:
switch (key) {
case value:
break;
default:
break;
}
switch (num) {
case 5:
System.out.println("Num é igual a cinco");
break;
case 1:
System.out.println("Num é igual a um");
break;
case 100:
System.out.println("Num é igual a cem");
break;
case 11:
System.out.println("Num é igual a onze");
break;
default:
System.out.println("Num é diferente de todos " +
"valores anteriores");
break;
}
}
}
3.5.Instruções de Laços
Os Laços mais utilizados em Java são o For e While, sendo que o
funcionamento é o mesmo das outras linguagens que conhecemos, a sintaxe,
contudo, muda um pouco:
No caso do For.
for (inicialização;condição;incremento) {
código
}
}
}
No caso do While.
while (condição) {
código
}
3.6. Método
void primeiroMetodo() {
System.out.println("Método sem parâmetro e sem retorno");
}
String segundoMetodo() {
System.out.println("Método sem parâmetro e com retorno");
return "fabio";
}
3.7. TypeCast
int x = 523;
//Transformando de inteiro para String
String y = String.valueOf(x);
}
Exercícios de fixação
• Escreva um programa que leia dois números e calcule a soma e o produto
entre eles, a subtração e a divisão do primeiro valor com o segundo.
Marca
Cor
Ano
KM
Carro do Carro do Carro da
Fábio Joao Maria
carJoao.mostreAtributos();
carMaria.mostreAtributos();
carFabio.mostreAtributos();
}
}
carFabio.setDono("Fábio");
carFabio.setModelo("fiesta") ;
carFabio.setCor("preto");
carFabio.setMotorLigado(false);
Exercício de fixação
• Crie uma classe chamada Aluno como ilustra a tabela.
Atributos Métodos
Nome Todos os gets e stes
Sexo mostreAtributos()
Idade
Curso
Numero da Matícula
• Crie uma classe com o método principal, instancie três alunos e faça
chamado do seu método mostreAtributos().
import javax.swing.JOptionPane;
}
}
5. Herança.
Classe A
Classe B
Motorizado N_Motorizado
/**
* Exibe todas as características do veiculo motorizado
*/
public void mostreAtributos() {
//Faz chamada do método mostreAtributos da classe Pai
super.mostreAtributos();
if (motorLigado) {
System.out.println("Seu motor está ligado");
} else {
System.out.println("Seu motor está desligado");
}
}
}
Obs.: A classe motorizado é uma extensão de veículo. Ela é um veículo com mais uma
característica, que é o motorLigado. Como motorizado herda de veículo, a classe
motorizado pode acessar todos os métodos públicos de veículo.
• Crie uma classe carro que herda de motorizado
• Utilize o atributo reEngatada do tipo boolean e gere seu get e set
• Crie uma método mostreAtributos, que exibe todas as características
do Objeto do tipo carro(inclusive sua herança). Se a ré estiver
engatada deverá aparecer no console “ré engatada”, se não, “normal”.
public class Carro extends motorizado {
private boolean reEngatada;
import java.util.ArrayList;
Exercício de aprendizado
• Vamos seguir os passos para desenvolvermos um mini-sistema utilizando
ArrayList.
• Defina uma superclasse pessoa, que herdam dela duas subclasses: aluno,
professor. Siga os atributos e operações a seguir e construa suas classes com seus
respectivos métodos.
Pessoa
Atributos Operações
Nome Listar
Sexo
Idade
Estado Civil
Número da matrícula
Aluno (Pessoa)
Atributos Operações
Ano de Entrada Listar
Ano previsto para saída
Bolsista (percentual da bolsa)
Professor (Pessoa)
Atributos Operações
Quantidade de horas de trabalho na Listar - Mostrar no console o salário do
instituição professor
Quanto ganha por hora aula
Aplicação – AppPessoa
Atributos Operações
Alunos (ArrayList) Cadastrar “N” alunos. (usar ArrayList).
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AppPessoa pessoa = new AppPessoa();
pessoa.alunos = new ArrayList();
pessoa.professores = new ArrayList();
String op = JOptionPane
.showInputDialog("Deseja cadastrar outro aluno s/n");
/*
* Comprar String utilize o método equals. Se for igual
* retorna true senão flase
*/
while (op.equals("s")) {
/*
* Faz chamada do método que retorna um Objeto aluno
* e o adiciona no ArrayList
*/
pessoa.alunos.add(pessoa.cadastrarAluno());
/* Pergunta se o usúario deseja cadastrar outro aluno */
op = JOptionPane
.showInputDialog("Deseja cadastrar "+
"outro aluno s/n");
}
pessoa.listarAluno();
/**
* Lista todos os alunos do ArrayList
*/
private void listarAluno() {
for (int i = 0; i < alunos.size(); i++) {
/*
* O método get retorna um objeto aluno na posição
* "i", com isso chamamos o método listar desse
* objeto /
alunos.get(i).listar();
}
}
/**
* Fazer edição dos Alunos (1º faz a pesquisa de um determinado
* aluno e depois edita o mesmo)
*
*/
private void editarAluno() {
aluno.setAnoDeEntrada(JOptionPane.showInputDialog(
"Entre com o ano de entrada",
aluno.getAnoDeEntrada()));
aluno.setAnoSaida(JOptionPane.showInputDialog("Ano Saida",
aluno.getAnoSaida()));
aluno.setBolsista(Double.parseDouble(JOptionPane
.showInputDialog("Bolsista",
aluno.getBolsista())));
aluno.setEstadoCivil(JOptionPane.showInputDialog(
"Entre com o Estado Civil",
aluno.getEstadoCivil()));
/* Necesário fazer o typeCast, pois o atributo
é do tipo inteiro */
aluno.setIdade(Integer.parseInt(JOptionPane.showInputDialog(
"Entre com a idade",
aluno.getIdade())));
aluno.setNum_mat(Integer.parseInt(JOptionPane.showInputDialog(
"Entre com a matrícula",
aluno.getNum_mat())));
}
}
}
/**
* Cadastrar um aluno
*
* @return Retorna um aluno
*/
private Aluno cadastrarAluno() {
Aluno aluno = null;
// Instancia o aluno
aluno = new Aluno();
// Setar seus Atributos
aluno.setAnoDeEntrada(JOptionPane
.showInputDialog("Entre com o ano de "+
"entrada"));
aluno.setNome(JOptionPane.showInputDialog("Entre com o "+
"nome"));
aluno.setAnoSaida(JOptionPane.showInputDialog("Ano "+
"Saida"));
aluno.setBolsista(Double.parseDouble(JOptionPane
.showInputDialog("Bolsista")));
aluno.setEstadoCivil(JOptionPane
.showInputDialog("Entre com o Estado Civil"));
/* Necessário fazer o typeCast, pois o atributo é do tipo
inteiro*/
aluno.setIdade(Integer.parseInt(JOptionPane
.showInputDialog("Entre com a idade")));
aluno.setNum_mat(Integer.parseInt(JOptionPane
.showInputDialog("Entre com a matrícula")));
return aluno;
}
}
7. Controle de Erro
Pessoa
Atributos Operações
String nome Listar
String sexo
Int Codigo
*Cada pessoa deverá possuir um único código.
Cliente (Pessoa)
Atributos Operações
String Profissao Listar
Float Descontos
String tipoPessoa
* O cliente só terá desconto caso o tipoPessoa for “Jurídica”
Funcionário (Pessoa)
Atributos Operações
String cargo Listar
float salario
Produto
Atributos Operações
Integer codigo showProduto(exibe os valores dos
atributos da classe)
float preço
String descricao
String Marca
*Descrição: o nome do produto. Por Exemplo: descrição: = ‘Televisão’;
*Cada produto deverá possuir um único código.
Compra
Atributos Operações
Funcionário funcionário; showCompa (exibe o funcionário que
efetuou a compra, o cliente que comprou o
produto, os produtos que foram vendidos
e o preço total da compra com desconto)
Cliente cliente;
ArrayList<Produto> Produtos;
*Caso o cliente tenha algum desconto, exibir no showCompra o preço total com
desconto.
*Produtos: conterá todos os produtos que forem vendidos por um determinado
funcionário e comprados por um determinado cliente.
Aplicação
Atributos Operações
ArrayList <Funcionario> funcionarios = Cadastrar “N” funcionário
new ArrayList ()
ArrayList <Cliente> Cadastrar “N” Cliente
clientes = new ArrayList
ArrayList <Produto> Cadastrar “N” Compra
produtos = new ArrayList ()
ArrayList <Compra> Cadastre “N” Produtos
compras= new ArrayList()
Listar o funcionário que possua mais
venda (fazer busca pelo código)
Listar todos os produtos que foram
vendidos por um determinado funcionário
e essa venda tenha sido efetuada com
desconto.
Listar todos os produtos de uma
determinada marca.
Dica:
• Ao cadastrar uma compra faça pesquisa na lista de funcionários (funcionário
que irá fazer a venda) pelo código e a mesma coisa para o cliente.
• Ao cadastrar os produtos de um cliente siga os seguintes passos:
1. Crie um método “escolheProduto” que retorne uma lista de produtos;
2. Dentro do método busque o produto que o cliente deseja pelo seu
código;
3. Lembre que só poderão ser cadastrados os produtos que estiverem na
lista de produtos.
• Lembre que será inserido o objeto Cliente, Funcionário e uma lista de objetos
do tipo produto na classe Compra.
UNIDADE II:
O J2EE é uma tecnologia que foi criada no fim dos anos noventa (com o
lançamento do JDK 1.2) e tem finalidade de desenvolver aplicações Web integradas
corporativamente.
Essa parte da família Java traz um conjunto de APIs e serviços para facilitar
o desenvolvimento dessas aplicações. As APIs a seguir são disponibilizadas pelo
Java Enterprise Edition através de sua especificação:
• Javax.transaction: controle de transação para qualquer recurso;
• Javax.activation: gerência do uso de recursos e de memória;
• Javax.sql: mecanismos de persistência de objetos;
• Javax.rmi: conexão para sistemas distribuídos;
• Javax.ejb: componentes de negócios distribuídos;
• Javax.security: implementação de segurança e controle de acesso de
usuários;
• Javax.servlet.jsp: desenvolvimento de componentes de controle para
aplicações Web;
• Javax.mail: desenvolvimento para acesso de e-mails;
• Javax.xml: desenvolvimento para controle de arquivos XML (Padrão
para criação de documentos com dados organizados de forma
hierárquica);
9. Servlet Containers e o Apache Tomcat
<html>
<head>
<title>título do documento</title>
</head>
<body>
Corpo da mensagem (imagens, textos, links,..)
</body>
</html>
JSP é uma página html comum que contém código Java e possui extensão
jsp.
Vamos criar um jsp. Com a declaração de uma variável do tipo String.
<html>
<body>
<%
String mensagem = "Bem vindo!";
%>
</body>
</html>
Para escrever código Java nas páginas, basta escrever entre as tags: <% e
%>. Esse código é chamado de scriptlet.
Para escrever algo na tela, podemos fazer de duas formas diferentes:
<html>
<body>
<%
String mensagem = "Bem vindo!";
%>
Duas formas diferente na hora de imprimir:<br>
<%
out.println(mensagem);
%><br>
<%=mensagem %><br>
<%
System.out.println("Tudo foi executado!");
%>
</body>
</html>
cabecalho.jsp
<%@ page session="false" buffer="1kb" %>
<head>
<title>
Meu Web Site
</title>
</head>
banner.jsp
<%@ page session="false" buffer="1kb"%>
<h1> <%= request.getParameter("mensagem") %> </h1>
rodape.jsp
<%@ page session="false" buffer="1kb" %>
<%@ page import="java.util.Date" %>
Hora atual : <%= new Date().toString() %><br>
<h6> Tecnologia JSP </h6>
controle.jsp
<%@ page info="controle" session="false" buffer="1kb" %>
<% String acao = request.getParameter("pagina");
if (acao.equalsIgnoreCase("cadastro")){ %>
<jsp:forward page="cadastro.jsp" />
<% } else if(acao.equalsIgnoreCase("consulta")){ %>
<jsp:forward page="consulta.jsp" />
<% } else { %>
<jsp:forward page="menu.jsp" />
<% } %>
cadastro.jsp
<%@ page info="menu" session="false" buffer="1kb" %>
<html>
<head>
<title>
Cadastro
</title>
</head>
<body>
CADASTRO DO MEU SITE
<br><br>
<A href="menu.jsp"> Menu </A> <br>
</body>
</html>
consulta.jsp
<%@ page info="menu" session="false" buffer="1kb" %>
<html>
<head>
<title>
Consulta
</title>
</head>
<body>
Consulta DO MEU SITE
<br><br>
<A href="menu.jsp"> Menu </A> <br>
</body>
</html>
No JSP podemos recuperar um parâmetro enviado por formulários ou URLs.
Esse objeto é o request.
<% string valor = request.getParameter(“parametro”) %>
conversor.jsp
<%@ page info="menu" session="false" buffer="2kb" errorPage="erro.jsp"
%>
<html>
<head>
<title>
Conversor de moedas Utilizando Scriplet
</title>
</head>
<body>
<%
double calculo = 0 ;
if(request.getParameter("calcular") != null){
String valor = request.getParameter("valor");
String taxa = request.getParameter("taxa");
if (valor != null && taxa != null){
out.println("Valor: "+valor);
out.println("<br>Taxa: "+taxa);
double val = Double.parseDouble(valor);
double tax = Double.parseDouble(taxa);
calculo = val * tax;
out.println("<br> Valor Convertido: "+calculo);
}
}
%>
<form name = "CALCULADORA" ACTION="conversor.jsp"
METHOD="POST">
valor: <input type="TEXT" name="valor"><br>
Taxa: <input type="TEXT" name="taxa"><br>
<input type="Submit" name="calcular" value="Calcular">
</form>
</body>
</html>
JDBC
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
Existem duas classes que podem ser utilizadas para realizar consultas:
– Java.sql.Statement
• Sentenças simples que não possuem parâmetros;
• Ex: select * from usuario;
– Java.sql.PreparedStatement
• São sentenças que permitem passagem de parâmetros para o
comando sql;
• Permite agilizar o processo de execução através de um recurso que
deixa o comando sql pré-compilado.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
}
}
Para exibir os dados, a consulta pode retornar várias linhas, logo, é suficiente
trocar o if pelo while, que exibirá as informações de todas as linhas.
Ex:
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("nome"));
}
Insert into TABELA (campo1, campo2, ...) values (valor1, valor2, ...)
executeUpdate();
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
}
}
executeUpdate();
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
executeUpdate();
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
16. Click em NewTable para criar uma tabela na base de dados e entre com os
seguintes dados:
17. Depois de criada a tabela, clique em DataBase - DataBase synchronisation.
18. Volte para o eclipse e dentro de src, crie uma package chamada:
br.com.NomeDoProjeto.Modelo.
19. Dentro da package modelo, crie uma classe chamada Aluno, como abaixo.
import java.sql.Connection;
import java.sql.SQLException;
import br.com.NomeDoProjeto.JDBC.ConnectionFactory;
// seta os valores
stmt.setString(1, aluno.getNome());
stmt.setString(2, aluno.getSexo());
stmt.setInt(3, aluno.getIdade());
stmt.setString(4,aluno.getCurso() );
// executa
stmt.execute();
stmt.close();
rs.close();
stmt.close();
return list;
}
23. Dentro da pasta WebContent, crie um arquivo chamado testando.jsp. (No código
abaixo cuidado com a nomenclatura dos imports, pois nele estarão as nomes das
Package que criaremos e outras bibliotecas que a aplicação utiliza)
<html>
<%
// Adicionando um aluno
Aluno aluno = new Aluno();
aluno.setNome("fabio");
aluno.setIdade(20);
aluno.setSexo("m");
aluno.setCurso("web");
AlunoDao dao = new AlunoDao();
dao.cadastraAluno(aluno);
// criando uma lista de aluno
List<Aluno> lista;
// Recebendo uma lista de aluno
lista = dao.listaAluno();
// Exibindo no console o nome de todos os aluno
for (int i = 0; i < lista.size(); i++) {
%>
<li><%=lista.get(i).getNome()%></li>
<%}%>
</html>
24. Execute o projeto – Clique com o botão direito do mouse no jsp e depois clique
em Run As - Run on Server.
25. Escolha a opção tomcat 6 e depois clique em finish.
Exercício de fixação
1. Desenvolva uma aplicação web que resolva o seguinte problema:
package br.com.WebJsp.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
package br.com.WebJsp.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 br.com.WebJsp.JDBC.ConnectionFactory;
import br.com.WebJsp.Modelo.Aluno;
/**
* Cadastra um aluno no banco
*
* @param aluno -
* Aluno passado por Parâmetro
* @throws Exception
*/
public void cadastraAluno(Aluno aluno) throws Exception {
// prepared statement para inserção
PreparedStatement stmt = this.connection
.prepareStatement("insert into
aluno(nome,sexo,idade,curso) values (?, ?, ?, ?)");
// seta os valores
stmt.setString(1, aluno.getNome());
stmt.setString(2, aluno.getSexo());
stmt.setInt(3, aluno.getIdade());
stmt.setString(4, aluno.getCurso());
// executa
stmt.execute();
stmt.close();
/**
* Altera um aluno passado por Parâmetro
*
* @param aluno -
* Aluno passado por Parâmetro
* @throws Exception
*/
public void alteraAluno(Aluno aluno) throws Exception {
// prepared statement para inserção
PreparedStatement stmt = this.connection
.prepareStatement("update aluno set
nome=?,sexo=?,idade=?,curso=? where codAluno=?");
// seta os valores
stmt.setString(1, aluno.getNome());
stmt.setString(2, aluno.getSexo());
stmt.setInt(3, aluno.getIdade());
stmt.setString(4, aluno.getCurso());
stmt.setInt(5, aluno.getCodigo());
// executa
stmt.executeUpdate();
stmt.close();
/**
* Retorna uma lista de todos os alunos contidos no banco
*
* @return
* @throws SQLException
*/
public List<Aluno> listaAluno() throws SQLException {
String sql = "select * from aluno";
PreparedStatement stmt =
this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
// Criando uma lista de aluno
List<Aluno> list = new ArrayList<Aluno>();
// Fazendo uma laço para setar os atributos de aluno
while (rs.next()) {
// Criando um aluno
Aluno aluno = new Aluno();
aluno.setCodigo(rs.getInt("codAluno"));
aluno.setNome(rs.getString("nome"));
aluno.setIdade(rs.getInt("idade"));
aluno.setSexo(rs.getString("sexo"));
aluno.setCurso(rs.getString("curso"));
rs.close();
stmt.close();
return list;
}
/**
* Retorna um aluno cujo código foi passado por parâmetro
*
* @param cod -
* codigo do aluno passado por Parâmetro
* @return
* @throws SQLException
*/
public Aluno getAluno(int cod) throws SQLException {
rs.next();
aluno.setNome(rs.getString("nome"));
aluno.setIdade(rs.getInt("idade"));
aluno.setSexo(rs.getString("sexo"));
aluno.setCurso(rs.getString("curso"));
aluno.setCodigo(rs.getInt("codAluno"));
rs.close();
stmt.close();
return aluno;
}
/**
* Retorna uma coleção de alunos cujo nome foi passado por
*parâmetro
* @param cod -
* código do aluno passado por Parâmetro
* @return
* @throws SQLException
*/
public List<Aluno> getAluno(String nome) throws SQLException {
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// Criando um aluno
Aluno aluno = new Aluno();
aluno.setCodigo(rs.getInt("codAluno"));
aluno.setNome(rs.getString("nome"));
aluno.setIdade(rs.getInt("idade"));
aluno.setSexo(rs.getString("sexo"));
aluno.setCurso(rs.getString("curso"));
rs.close();
stmt.close();
return list;
}
/**
* Deleta um aluno cujo código foi passado por Parâmetro
*
* @param cod -
* código do aluno passado por Parâmetro
* @throws Exception
*/
public void deleteAluno(int cod) throws Exception {
// prepared statement para exclusão
PreparedStatement stmt = this.connection
.prepareStatement("delete from aluno where
aluno.codAluno="
+ cod);
// executa
stmt.execute();
stmt.close();
}
}
<html>
<head>
<title>
Adicionando e Consultando no Banco Utilizando Scriplet
</title>
</head>
<body>
<%
AlunoDao dao = new AlunoDao();
if(request.getParameter("add") != null){
// Adicionando um aluno
Aluno aluno = new Aluno();
aluno.setNome(request.getParameter("nome"));
aluno.setIdade(Integer.parseInt(request.getParameter("idade")));
aluno.setSexo(request.getParameter("sexo"));
aluno.setCurso(request.getParameter("curso"));
dao.cadastraAluno(aluno);
}
%>
<form name = "Add" ACTION="addAluno.jsp" METHOD="POST">
<html>
<head>
<title>
Consulta
</title>
</head>
<body>
Consulta
<%
// Caso o usário clique no botão remover
if(request.getParameter("remove") != null){
//Cria a instância de uma AlunoDao
AlunoDao dao = new AlunoDao();
//Caso tenha algum checkBox selecionado
if(request.getParameterValues("alunos") != null){
//O vetor de alunos recebe todos os códigos dos alunos selecionados
String alunos[] =
request.getParameterValues("alunos");
//É feito um laço com todos os alunos selecionados
for (int i = 0; i < alunos.length; i++) {
//Cada código é passado por parâmetro para ser deletado
dao.deleteAluno(Integer.parseInt(alunos[i]));
}
}
}
%>
<br><br>
<form name = "consulta" ACTION="consulta.jsp" METHOD="POST">
<%
AlunoDao dao = new AlunoDao();
// criando uma lista de aluno
List<Aluno> lista;
// Recebendo uma lista de aluno
lista = dao.listaAluno();
// Exibindo no console o nome de todos os aluno
for (int i = 0; i < lista.size(); i++) {
//CheckBox que possui o código do aluno no seu value
%>
<%}%>
<br> <br>
<input type="Submit" name="remove" value="Delete">
</form>
<br><br>
<A href="index.jsp"> Menu </A> <br>
</body>
</html>
• Nessa página, iremos alterar os dados do aluno, lembrando que esse JSP
recebe um parâmetro (código do aluno) de consulta.jsp; através dele,
podemos alterar os dados por meio de um UpDate, o qual se encontra no
método alteraAluno da classe AlunoDao.
alteraAluno.jsp
<%@ page import="java.util.List"%>
<%@ page import="br.com.WebJsp.dao.*"%>
<%@ page import="br.com.WebJsp.Modelo.*"%>
<%@ page import="br.com.WebJsp.JDBC.*"%>
<html>
<head>
<title>
Adicionando e Consultando no Banco Utilizando Scriplet
</title>
</head>
<body>
<%
//É acionado quando o usuário clica no botão alterar
if(request.getParameter("alterar") != null){
//Instância do AlunoDao
AlunoDao dao = new AlunoDao();
// Instância de um aluno
Aluno aluno = new Aluno();
//Setando as novas informações do aluno
aluno.setNome(request.getParameter("nome"));
aluno.setIdade(Integer.parseInt(request.getParameter("idade")));
aluno.setSexo(request.getParameter("sexo"));
aluno.setCurso(request.getParameter("curso"));
aluno.setCodigo(Integer.parseInt(request.getParameter("codigo"))
);
//Faz chamado do método alteraAluno na classe AlunoDao
dao.alteraAluno(aluno);
%>
<!-- redirecionando a página-->
<jsp:forward page="consulta.jsp" />
<%
}
%>
<%
// Setando o aluno pelo código
int cod =
Integer.parseInt(request.getParameter("cod"));
AlunoDao dao = new AlunoDao();
Aluno aluno;
// O objeto aluno irá receber os dados do aluno
// cujo código foi passado como parâmetro
aluno = dao.getAluno(cod);
%>
<!-- Dados do aluno cujo código foi passado por parâmetro -->
<input type="hidden" name="codigo" value="<%=
aluno.getCodigo() %>">
nome: <input type="TEXT" name="nome" value="<%=
aluno.getNome() %>"><br>
</form>
<br><br>
<A href="index.jsp"> Menu </A> <br>
</body>
</html>
• Por fim, vamos desenvolver um JSP que faça pesquisa por nome de aluno.
pesquisa.jsp
<%@ page info="menu" session="false" buffer="1kb" %>
<%@ page import="java.util.List"%>
<%@ page import="br.com.WebJsp.dao.*"%>
<%@ page import="br.com.WebJsp.Modelo.*"%>
<%@ page import="br.com.WebJsp.JDBC.*"%>
<html>
<head>
<title>
Pesquisa
</title>
</head>
<body>
Pesquisa
<br><br>
<form name = "consulta" ACTION="pesquisa.jsp" METHOD="POST">
<!-- Nome a ser pesquisado -->
nome: <input type="TEXT" name="nome">
<input type="Submit" name="pesquisa" value="Pesquisa">
<br> <br>
<%
// Caso o usuário clique no botão pesquisa
if(request.getParameter("pesquisa") != null){
AlunoDao dao = new AlunoDao();
// criando uma lista de aluno
List<Aluno> lista;
//Recebe o nome que foi entrado no compo nome do html
String nome = request.getParameter("nome");
// Recebendo uma lista de aluno que tenha o nome que foi
passado por parâmetro
lista = dao.getAluno(nome);
// A mesma lógica do consulta.jsp(faz chamada para
deletar e alterar aluno)
for (int i = 0; i < lista.size(); i++) {
%>
<input type="checkbox" name="alunos" value=
"<%=lista.get(i).getCodigo()%>" />
<A href=
"alteraAluno.jsp?cod=<%=lista.get(i).getCodigo()%>">
<%=lista.get(i).getNome()%> </A> <br>
<%}
}
if(request.getParameter("remove") != null){
AlunoDao dao = new AlunoDao();
if(request.getParameterValues("alunos") != null){
String alunos[] =
request.getParameterValues("alunos");
for (int i = 0; i < alunos.length; i++) {
dao.deleteAluno(Integer.parseInt(alunos[i]));
}
}
}
%>
<br>
<input type="Submit" name="remove" value="Delete">
</form>
<br><br>
<A href="index.jsp"> Menu </A> <br>
</body>
</html>
• Agora é só executar a aplicação no servidor.
Exercício proposto para Atividade Extra
Desenvolva a aplicação abaixo seguindo o exemplo do Aluno.
17. Apresentação de outras linguagens de programação para web – DotNet, PHP, Ruby.