Desenvolvimento WEB II
Continuação AJAX
Professora: Kelly de Paula Cunha
AJAX
Funções necessárias para estabelecer uma
comunicação com o servidor utilizando o AJAX:
- Envio de requisição:
- POST: Formulário
- GET: Pequenas informações
- Retorno de requisições:
- texto simples
- XML
AJAX
Tanto para enviar uma requisição ao servidor,
quanto para receber o resultado é necessário
criar um objeto da classe:
• XMLHttpRequest: navegadores Firefox,
Mozila, Opera e Safari
• ActiveXObject: Internet Explorer
AJAX
Verificação de qual é o navegador e criação do
objeto adequado para o navegador do usuário:
var req=null;
function criaObj(){
if(window.XMLHttpRequest){
req=new XMLHttpRequest();
}else if(window.ActiveXObject){
req=new ActiveXObject("Microsoft.XMLHTTP");
}
}
AJAX
Envio de requisição pelo método POST e recepção em forma de texto
simples:
function enviar(formulario){
var dados="id=" + formulario.id.value +"&nome=" +
formulario.nome.value + "&renda=" + formulario.renda.value
+ "&indicador=" + formulario.indicador.value;
criaObj();
req.onreadystatechange=resposta;
req.open("POST", "Controle",true);
req.setRequestHeader("Content-Type", "\
application/x-www-form-urlencoded");
req.send(dados);
return false;
}
AJAX
Envio de requisição pelo método POST e recepção em forma
de texto simples:
function resposta(){
if(req.readyState==4){
Possíveis
respostas para o estado do objeto req:
if(req.status==200){
varrespostas
texto=req.responseText;
Possíveis
para req
o STATUS
do objeto
0 - inicializado:
o objeto
foi criado,
mas oreq:
método open ainda não
foi chamado.
alert(texto);
200significa
que o objeto
está
ok
1 - lendo:
o
método
open
foi
chamado,
mas os dados ainda não foram
limparCampos();
404indica erro na recepção dos dados
enviados.
} o pedido foi enviado.
2- lido:
}3 - interativo: uma parte da resposta foi recebida.
4 - completo: todos os dados foram recebidos e a conexão foi fechada.
}
AJAX
Envio de requisição pelo método POST e recepção em forma de texto
simples:
function enviar(formulario){
var dados="id=" + formulario.id.value +"&nome=" +
formulario.nome.value + "&renda=" + formulario.renda.value
+ "&indicador=" + formulario.indicador.value;
criaObj();
req.onreadystatechange=resposta;
req.open("POST", "Controle",true);
req.setRequestHeader("Content-Type",
"\ GET), o nome da
O método open é utilizado para definir o (POST ou
servlet
application/x-www-form-urlencoded");
eDefine
o tipoode
sincronismo.
tipo
de conteúdo do formulário para o servidor.
req.send(dados);
return
false;
O
valor true
indica
enviogramaticalmente
de dados de forma
assíncrona.
É utilizada
para
analisar
os dados
postados pelo POST
}
O valor false, o envio síncrono
AJAX
Envio de dados ao servidor por meio do método GET e
recepção em forma de XML:
Considere o seguinte documento XML
AJAX
O que é o JSTL?
• JavaServer Pages Standard Template Library,
• mecanismo básico de recuperação de dados,
– banco de dados,
– arquivo de contexto e (ou) XML
AJAX
O que é o JSTL?
• JavaServer Pages Standard Template Library,
• mecanismo básico de recuperação de dados,
– banco de dados,
– arquivo de contexto e (ou) XML
AJAX
O que é o XML?
• Extensible Markup Language
• formato para a criação de documentos com dados
organizados de forma hierárquica
• propósito principal é a facilidade de compartilhamento
de informações através da internet.
• não depende das plataformas de hardware ou de
software
AJAX
Para fazer a leitura do documento XML, o AJAX utiliza o
Documento Object Model (DOM)
O DOM define uma maneira-padrão de acessar e
manipular documentos XML apresentando o documento
como uma estrutura em forma de árvore, com elementos,
atributos e seu conteúdo
AJAX
Função resposta da classe :
AJAX
Estrutura do documento XML:
<?xml version=‘1.0’ encoding=‘ISO-8859-1’?>
<clientes>
<cliente>
<id>4</id>
<nome>Pedro Henrique</nome>
<renda>1800.00</renda>
</cliente>
<cliente>
<id>5</id>
<nome>Paulo Silva</nome>
<renda>1005.00</renda>
</cliente>
</clientes>
AJAX
Como faço para capturar o nome do primeiro cliente
registrado no XML?
var nome=
xml.getElementsByTagName("nome")[1].childNodes[0].no
deValue;
AJAX
Classe Conexão.java:
-
Faz conexão com o Bd007
Inclui
Altera
Exclui
Consulta
Desconecta com o Bd007
AJAX
Classe Conexão.java:
ATENÇÃO: Não se esqueça de colocar a senha correta:
con=DriverManager.getConnection("jdbc:mysql://localhos
t:3306/bd007", "root", "12345");
Obs: linha 26, pag:234.
AJAX
Classe servlet Controle.java:
-Gerencia o fluxo de comunicação entre a camada View
(telas) e a camada Model (banco de dados)
-> recebe as requisições dos arquivos JSP por meio dos
métodos doPOST e doGET
AJAX
Classe servlet Controle.java:
Pergunta: Se as requisições que chegam para a classe Controle
podem estar partindo de diversos arquivos JSP, como é possível
identificar a origem da requisição ou a operação desejada?
Parametro indicador:
“pesquisaid”
“consultar”
“pesquisatodos”
“listagem”
“incluir”
“alterar”
“telaalterar”
“excluir”
AJAX
Arquivo TelaIncluir.jsp
- Exibe um valor de id automaticamente assim que a
página é exibida (Busca no BD o maior valor de id e soma
1)
- Para isso:
criaObj();
req.onreadystatechange=retornoId;
var url="Controle?indicador=pesquisaid";
req.open("GET", url, true);
req.send(null);
AJAX
Arquivo TelaIncluir.jsp acessando a classe Controle:
String indicador = request.getParameter("indicador");
if (indicador.equals("pesquisaid")){
sql="select max(id) from cliente";
}
Em seguida faz a conexão com o banco de dados:
Conexão conbd = new Conexão();
conbd.conectar();
AJAX
classe Controle acessando a classe Conexão:
if (conbd.getRetorno()== -1){
out.println("Erro na conexão com o banco de dados");
} else {
if (indicador.equals("pesquisaid")){
ResultSet rs=conbd.consultar(sql);
try{
if(rs.next()){
out.print(rs.getInt(1)+1);
}
} catch (SQLException ex){
out.print(1);
}
AJAX
classe Conexão:
public ResultSet consultar (String sql){
try{
rs=st.executeQuery(sql);
retorno=1;
} catch (SQLException ex){
retorno=-1;
}
return rs;
}
AJAX
Atividade 8
- Continue o desenvolvimento da aplicação Exemplo007
(livro WEB TOTAL, pág.230)
- Botão Incluir funcionando:
-> Busca automática do ID máximo cadastrado
-> Inserção de novo cliente no BD
AJAX
Dicas:
É improvável que a
aplicação funcione
corretamente logo na
primeira vez que é
executada
- Erros em programação
são muito comuns, não se
desespere!!!
AJAX
Procure sempre
entender o que está
fazendo e usando
Em grandes projetos,
ninguém cria 100% do
código, mas é altamente
recomendável saber de
tudo que está usando: o
que é, para que serve,
como funciona e que
situações usar aquilo.
AJAX
Encontrar os próprios
erros faz parte das
tarefas de um
programador
tirar dúvidas é uma
coisa, querer que outra
pessoa resolva todos os
problemas no seu código
é outra
AJAX
Imprimir os valores de dados e variáveis é a forma mais
simples e rápida para um programador inspecionar resultados
Mande mostrar caixas de alertas para verificar o conteúdo das
variáveis nos arquivos JSPs
Ex: alert("clientes" + clientes.length);
AJAX
Depure o código: os
depuradores mostram
a conclusão lógica de
uma parte do programa.
Assim o programador
pode percorrer linha por
linha e inspecionar tudo
como valores de variáveis e
etc.
- Coloque pontos de
interrupção na classe Controle
e na classe Conexão para
verificar se elas estão sendo
acessadas.
AJAX
Se mesmo após estes
testes você não encontrar
o problema, peça para
os colegas testarem.
Tarefas feitas
repetitivamente
tornam-se mecânicas, e
por isso você pode estar
passando por cima de
pequenos erros sem
perceber
AJAX
Finalmente, como última
dica; Seja humilde
Ninguém sabe tudo!
Quando você toma uma
postura como esta, mantém
os braços abertos para
receber novas informações e
aprender mais,
principalmente com aqueles
que sabem algo diferente de
você.
AJAX
Atividade 8
- Continue o desenvolvimento da aplicação Exemplo007
(livro WEB TOTAL, pág.230)
- Botão Incluir funcionando:
-> Busca automática do ID máximo cadastrado
-> Inserção de novo cliente no BD
AJAX
Atividade 9
- Crie uma planilha (no Microsoft Excel) com o nome:
Controle_erros_ Exemplo007_seu_nome
- Preencha a tabela com os erros que aparecerem durante
o desenvolvimento do seu projeto
Local
numero da linha
problema
solução
quem
solucionou
Controle
12
erro de sintaxe
colocar parênteses
eu
configuração do
MySQL
seguir tutorial estabelecendo conexão com banco de
dados
terceiros
Banco de
dados
Download

Aula Desenvolvimento WEB cont_AJAX