
DWR – DIRECTED WEB REMOTING
Trabalhando com Bean’s - Parte I
Uma das facilidades de se lhe dar com o DWR é a forma como ele trabalha com bean’s, coisas que você antes se preocuparia e muito, agora é simples de se fazer.
Antes de iniciar-mos o artigo vamos esclarecer para o leitor algumas informações.
No inicio do artigo resolvi adotar o DWR 1.1.4 que é a versão estável atualmente do DWR, mas essa versão não daria suporte para alguns dos recursos que queríamos demonstrar, então resolvi utilizar o DWR 2.0 M2, que é a versão ainda em desenvolvimento do DWR, porém das versões Milestone é a mais estável e que utilizo já em alguns projetos em produção, por isso você não terá problemas, pelo menos até agora eu não tive nenhum e ela já está em 4 projetos grandes e já faz algum tempo.
PS1: A versão que está para download no site do DWR atualmente é a versão DWR2.0 RC2 que esta NÃO é indicada no momento pois ainda apresenta alguns problemas e bugs, claro que por motivos óbvios, ela ainda esta em desenvolvimento.
PS2: Vamos utilizar nomes de funções, métodos, parâmetros e variáveis em inglês, pois esse artigo usará o mesmo projeto para a vídeo aula da Java Magazine e para a mesma esse padrão em inglês tem que ser seguido.
Preparando o ambiente
Aproveitando a estrutura dos artigos anteriores e do projeto de algumas vídeo aulas da JavaMagazine vamos aproveitar o mesmo projeto e vamos fazer nesse artigo alguns exemplos de como utilizar e trabalhar com Bean’s com o DWR.
Antes vamos citar algumas diferenças e configurações para se utilizar o DWR2.0 no nosso projeto, mas caso prefira baixe o projeto aqui.
Versão DWR2.0M2 download
Definição do WEB.XML
Você fará uma única alteração no seu web.xml, alterando apenas o Servlet do DWR.
Para versões 1.x.x
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Listagem 01. Trecho do mapeamento do DWR 1.x.
Para versões 2.x.x
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Listagem 02. Trecho do mapeamento do DWR 2.x
Definição do DWR.XML
Agora no seu dwr.xml
Para versões 1.x.x
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
Listagem 03. Inicio da declaração do dwr.xml versão 1.x
Para versões 2.x.x
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
Listagem 04. Inicio da declaração do dwr.xml versão 2.x
IDE e ferramentas utilizadas
Vamos utilizar o MyEclipse versão 5.1.1 GA, Aptana e Tomcat 5.5.17
Criando o JSP
Na Listagem 05 temos o nosso JSP(indexBean.jsp), será um JSP simples que no decorrer do artigo vamos incrementando novas funcionalidades.
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>DWR Working with bean</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!— Import do FaçadeAjax -->
<script type='text/javascript' src='/DWRProject/dwr/interface/FacadeAjax.js'></script>
<!— Import do DWREngine -->
<script type='text/javascript' src='/DWRProject/dwr/engine.js'></script>
<!— Import do DWRUtil -->
<script type='text/javascript' src='/DWRProject/dwr/util.js'></script>
<!— Import do arquivo JS que será utilizado para os exemplos -->
<script type='text/javascript' src='js/formBeans.js'></script>
</head>
<body>
</body>
</html>
Listagem 05. JSP
Criaremos um arquivo JS(JavaScript) chamado formBeans.js é nele que iremos trabalhar os exemplos, e na Listagem 05 fizemos o import do mesmo.
Preparando o FacadeAjax e os Bean’s JAVA
BeanPeople e BeanPeopleCharacteristics
Para demonstrar a real funcionalidade deste artigo vamos criar Beans Java para demonstrarmos como ele trabalha do JS para o Java e suas facilidades.
BeanPeople
private int id = 0;
private String name = ...