me>Curso
Desenvolvimento Ajax com Java Parte 1:
O Objeto XML http Request
O desenvolvimento na web já não é mais o mesmo; tornou
Este mini
No dia
Esta primeira parte é focada no uso do objeto XMLHttpRequest para implementar várias modalidades de transferência de informações entre um back
As próximas partes irão focar nas demais tecnologias essenciais para aplicações Ajax – DHTML, JavaScript e XML – mas sempre sob a perspectiva de um desenvolvedor Java EE. Também não deixaremos de expor ao longo da série outras tecnologias que foram se tornando populares com a evolução do Ajax, por exemplo o JSON (JavaScript Object Notation) e a arquitetura REST (Representational State Transfer).
Conceituando o Ajax
O Ajax representa uma ruptura com o funcionamento padrão tradicional das aplicações web, no qual toda e qualquer interação com o servidor envolve a carga de uma nova página e o descarte completo da página anterior. A idéia é fazer com que uma aplicação web se pareça menos com uma coleção de páginas (um site web) e mais com uma aplicação gráfica desktop, em que pequenas partes das telas são atualizadas pontualmente em resposta às ações do usuário.
A idéia de se construir aplicações web “mais interativas” não é nova, e nos últimos anos houve várias tentativas de se obter este resultado utilizando tecnologias como frames HTML (incluindo os iFrames) e DHTML1. Mas todas elas, quando usadas de maneira isolada, ou esbarravam em alguma limitação do próprio navegador, ou criavam sua própria cota de problemas, limitando sua aplicabilidade efetiva
Nota1: DHTML é nada mais do que a capacidade de se modificar a estrutura de tags HTML de uma página programaticamente, por meio de código JavaScript embutido na própria página. |
Quanto ao aspecto visual, os avanços do CSS (Cascading Style Sheets) já permitiam criar aplicações web com visual tão sofisticado quanto aplicações desktop e o JavaScript fornecia a capacidade de se reagir a eventos dos controles de formulários, ou mesmo de se “fabricar” controles inexistentes no HTML padrão.
Mas foi o objeto XMLHttpRequest, uma extensão inicialmente proprietária ao padrão ECMAScript2, que permitiu usar os recursos do HTML, CSS e JavaScript para algo mais do que criar efeitos visuais “bonitinhos” dentro do navegador. Este objeto era originalmente parte do conjunto de controles ActiveX fornecido pela Microsoft para manipulação de documentos XML, e posteriormente foi incorporado ao conjunto de objetos pré
A grande novidade introduzida pelo objeto XMLHttpRequest foi a capacidade de se gerar requisições HTTP diretamente a partir do código JavaScript e depois processar os documentos retornados por estas requisições sem a intervenção do visualizador de HTML embutido no navegador web. O documento retornado seria preferencialmente interpretadocomo um documento XML, e seu conteúdo depoisprocessado pelo código JavaScript por meio da API DOM3.
Nota 2: Este é o nome “oficial” do JavaScript, conforme padronização da linguagem pelo ECMA. JavaScript é marca registrada pela Netscape; por isso a Microsoft chama sua implementação de JScript. |
Nota 3: O DOM, ou Document Object Model (Modelo de Objetos do Documento), é uma API para manipulação de documentos XML em memória como uma estrutura de árvore, definida pelo W3C para ser independente da linguagem de programação. Esta API também está disponível para uso no lado do servidor Java EE como parte do JAXP, incorporado ao próprio Java SE na versão 1.4. |
O uso do XML como formato de dados fornece ao código JavaScript independência da tecnologia empregada no servidor web e deixa aberta a possibilidade de uma aplicação inteiramente baseada em um navegador web consumir diretamente web services. Mas, como XML é na essência um formato textual, o objeto XMLHttpRequest permite ainda o acesso ao conteúdo bruto, “não
Os desenvolvedores do objeto ActiveX original na Microsoft estavam atentos ao fato de que uma requisição HTTP na internet poderia demorar vários segundos (até minutos) para ter sua resposta inteiramente recebida pelo navegador. Assim conceberam o XMLHttpRequest com suporte a requisições assíncronas. Em vez de o código JavaScript ficar esperando pelo documento de retorno (como uma aplicação normalmente aguarda por dados na leitura de um arquivo em disco), o método responsável pelo envio da requisição retorna imediatamente. Isso permite ao código JavaScript atender a outros eventos gerados pela interação do usuário com a página – ou, por exemplo, gerar uma animação indicando o progresso da operação.
...