quinta-feira, outubro 20, 2011

DWR: Primeiro Projeto

DWR – Direct Web Remoting

DWR é um framework para se trabalhar com chamadas Ajax em implementações Java. Uma chamada Ajax é uma solicitação assíncrona de um recurso do sistema, ou seja, enquanto a solicitação é processada, o usuário pode interagir com outras partes do sistema até sua resposta.

É inerente a uma chamada Ajax: HTML, XHTML, CSS, DOM, XML, XMLHttpRequest, JavaScript. O grande benefício do uso do Ajax, certamente, é a possibilidade de maior interação do usuário com a aplicação, construção de aplicações ricas para a web, além de, melhor tempo resposta perceptível.
Diagrama de uma chamada Ajax:
 
No intuito de otimizar o desenvolvimento de aplicações Java que façam uso de Ajax, o uso do DWR é bastante aceito, por ser uma ferramenta Open Source, por propiciar chamadas seguras a códigos Java a pártir de um browser, integrável com os principais frameworks de mercado, encapsula detalhes e complexidades da implementação do XMLHttpRequest, realiza a conversão de classes Java para implementações JavaScript, permitindo seu uso dentro de um browser.
O diagrama abaixo demonstra o uso do DWR em uma solicitação Ajax a uma implementação Java:
 
O PROJETO
Utilizando a IDE Eclipse, crie um novo Dynamic Web Project, conforme imagem abaixo:

 
Finalize a criação.
Para obter o arquivo dwr.jar, faça o download do mesmo em: http://directwebremoting.org/dwr/downloads/index.html
O DWR usa o artefato commons-logging.jar, portanto, este arquivo será necessário, pode ser obtido a partir de: http://commons.apache.org/logging/
Copie ambos arquivos para o diretório WEB-INF\lib do seu projeto.
Devemos configurar o servlet do DWR em nosso projeto, abra o arquivo web.xml de seu projeto e adicione:


  DWR Servlet
  dwr-invoker  
  org.directwebremoting.servlet.DwrServlet
  
     debugtrue



  dwr-invoker
  /dwr/*



É necessário, também, a criação de um arquivo de configuração do DWR, crie o arquivo como abaixo descrito, este deve constar no diretório WEB-INF de seu projeto, com o nome de dwr.xml:

  
    
          
  

Feito estas configurações, o DWR deverá estar pronto para uso. Inicie seu servidor, neste exemplo utiliza-se Tomcat 7, e acesse sua aplicação do seguinte modo:
 
Observe que o projeto lista o JavaScript JDate, que contém a classa java.util.Date em sua versão para JavaScript, convertida pelo DWR. Se você clicar sobre o link JDate, verá listados todos os métodos relativos a classe java.util.Date.
Nosso projeto apresentará o calculo do IMC (índice de massa córporea), onde a chamada e a apresentação do resultado serão via Ajax.
Para tanto, criaremos uma classe, como mostra a figura a seguir:
 
Implementamos a lógica como:
package br.com.serjava.dwr;

public class CalculoIMCAjax {

 public String calcularImc(Double peso, Double altura) {

  Double imc = (peso / Math.pow(altura, 2));

  if (imc < 18.5) {
   return "Seu imc é: " + imc + " Abaixo de 18,5 Você está abaixo do peso ideal";
  } else if (imc >= 18.5 && imc < 24.9) {
   return "Seu imc é: " + imc + " Entre 18,5 e 24,9 Parabéns — você está em seu peso normal!";
  } else if (imc >= 24.9 && imc < 29.9) {
   return "Seu imc é: " + imc + " Entre 25,0 e 29,9 Você está acima de seu peso (sobrepeso)";
  } else if (imc >= 29.9 && imc < 34.9) {
   return "Seu imc é: " + imc + " Entre 30,0 e 34,9 Obesidade grau I";
  } else if (imc >= 34.9 && imc <= 39.9) {
   return "Seu imc é: " + imc + " Entre 35,0 e 39,9 Obesidade grau II";
  } else {
   return "40,0 e acima Obesidade grau III";
  }

 }
 
}

Devemos mapear a classe acima como um objeto do DWR, para isso deve-se editar o arquivo dwr.xml incluindo o seguinte:

       

Criaremos a página que apresentará o conteúdo, crie, caso já não exista, a página index.jsp, dentro do diretório WebContent, segue a implementação:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>




Insert title here
   
     
   
 
 






Altura (m)
Peso (kg)
O resultado final deverá ser:
 
Aguarde próximos posts sobre DWR.

2 comentários:

  1. É isso ai Fábio, tá show de bola o blog.

    Continue assim.

    Abraço.

    ResponderExcluir
  2. Valeu, na medida do possível terá conteúdo novo!

    ResponderExcluir