ique aqui para ler esse artigo em PDF.imagem_pdf.jpg

Jakarta Velocity

Acabe a briga com os designers

O uso de templates na camada de apresentação de aplicações web simplifica a manutenção

e a separação de responsabilidades.

Uma das áreas em que o desenvolvimento de aplicações web com Java mais encontra problemas é na separação entre a camada de controle, que faz as chamadas à lógica de negócio, e a camada de apresentação, onde é realizada a montagem da interface web.

Uma forma eficaz de fazer essa separação é usando sistemas de templates (template engines). O framework Jakarta Velocity do Grupo Apache é um dos mais populares desses sistemas, e pode ser usado tanto em aplicações web quanto locais.

Sistemas de templates

Pode-se fazer muito com um sistema de templates – desde a geração de simples arquivos-texto à criação de arquivos binários, tudo o que siga um determinado padrão de formatação. Pode-se gerar código-fonte de alguma linguagem, XML, HTML, documentos RTF e muitos outros. Por exemplo, o Poseidon for UML, ferramenta CASE desenvolvida em Java, usa o Velocity para a geração de código a partir de diagramas UML.

Usar templates tem uma série de vantagens: existe uma melhor designação de tarefas, pois os programadores ficam concentrados na lógica do sistema e os designers se preocupam apenas com o layout, o que reduz o risco de alterarem indevidamente o código da aplicação. Além disso, os templates ficam em arquivos separados, possibilitando mudar o visual da aplicação sem a necessidade de recompilar ou reiniciar o sistema.

Mas o que exatamente são templates? São arquivos com grande parte de sua estrutura e  formatação pronta, contendo diretivas indicando valores a serem inseridos e ações a serem realizadas pelo sistema de templates. Com diretivas, é possível, por exemplo, mostrar o conteúdo de uma variável, navegar em listas e arrays, ou até mesmo invocar métodos de objetos.

Diretivas são a parte principal da Velocity Template Language (VTL) – veja mais sobre essa linguagem no quadro "Diretivas da VTL".

Funcionamento básico

Uma aplicação que usa o Velocity executa, basicamente, os seguintes passos: inicializa o sistema de templates, cria um contexto, adiciona objetos ao contexto, carrega um template e realiza o merge (veja a Figura 1).

Os contextos são a forma usada no Velocity para fornecer dados para o mecanismo de templates. Um contexto é uma instância da classe org.apache.velocity.VelocityContext, que utiliza internamente um HashMap para manter um conjunto de pares String-objeto. Um contexto possui dois métodos importantes: put(String chave, Object valor) e get(String chave).

Uma vez criado e preenchido o contexto, prossegue-se para o merge. Durante o merge ("mistura" ou "intercalação"), o Velocity interpreta as diretivas e extrai os dados necessários do contexto, gerando a saída desejada.

 

Figura 1. O processo de merge

Obtenção e instalação

O download da última versão estável do Velocity pode ser feito em jakarta.apache.org/builds/jakarta-velocity/release. Para usá-lo em suas aplicações, você deve incluir a biblioteca velocity-dep-<versao>.jar no classpath do sistema operacional ou de seu container web.

Alô Velocity

Nosso primeiro exemplo gera um documento XML a partir de dados contidos em um arquivo-texto, e apresenta alguns elementos importantes do Velocity.

O arquivo-texto utilizado (empregados.txt) é bastante simples, contendo nomes, e-mails e salários:

George Harrison,george@beatles.com,80000.00

Ringo Starr,ringo@beatles.com,40000.00

...

Quer ler esse conteúdo completo? Tenha acesso completo