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

Além das fronteiras

Novidades do JSP 2.0

Expressividade e abstração no novo JSP

Nova linguagem de expressões, padronização de JSTL, fragmentos e tag files são algumas das extensões da versão 2 do JavaServer Pages

A próxima versão do J2EE 1.4 – com lançamento previsto para o meio desse ano – inclui uma série de novidades, como o suporte a web services, o EJB 2.1, JMX, Deployment API, Servlets 2.4 e JSP 2.0 (para uma visão geral das novidades do J2EE 1.4, veja o primeiro artigo desta coluna, na Edição 1).

Nesta edição, vamos explorar com detalhes as novidades do JSP 2.0 e apontar algumas boas práticas para o uso dos novos recursos.

Facilidade de programação

O objetivo principal da nova especificação JSP é melhorar a legibilidade do código e facilitar a manutenção das páginas.  Isso é alcançado com uma melhora significativa nos recursos para criação de bibliotecas de tags (tag libraries ou taglibs), e com a introdução de uma linguagem de expressões.

Vamos explorar os novos recursos analisando uma parte do exemplo BookStore, distribuído com o J2EE Tutorial Addendum. O exemplo roda na versão beta da implementação de referência do J2EE 1.4 – veja no quadro "Primeiros passos" como fazer a instalação.

A aplicação consiste numa livraria on-line com as funcionalidades de exibir a lista de livros disponíveis, detalhar um determinado livro, adicionar livros à cesta de compras e finalizar um pedido. A Figura 1 mostra a listagem dos livros disponíveis, gerada pela página bookcatalog.jsp.

Figura 1. Exemplo BookStore: livros disponíveis (lista reduzida)

Linguagem de expressões

A linguagem de expressões (Expression Language – EL) melhora bastante a sintaxe do JSP, aumentando o nível de abstração dos comandos. Um container web do novo J2EE 1.4 inclui um analisador de expressões. As expressões podem ser usadas em qualquer lugar da página – misturadas ao código HTML ou em atributos de tags – exceto em scriptlets (código Java dentro da página JSP).

Por exemplo, imagine que precisamos exibir o preço de um determinado livro. Vamos supor que um objeto da classe database.BookDetails (que representa a entidade "Livro") é passado para o JSP como um atributo do request. Até o JSP 1.2, o preço do livro poderia ser exibido da seguinte forma:

Preço: <%= ((database.BookDetails) request.getAttribute(“book”)).getPrice() %>

Com a introdução da EL, esse código pode ser reduzido para:

Preço: ${book.price}

As expressões entre ${ e } são analisadas em tempo de execução pelo container web. No exemplo, o objeto representado pela chave book é procurado num dos possíveis contextos (page, request, session ou application). O analisador de expressões então traduz o operador "." (ponto) em métodos getXXX – onde XXX é o nome da propriedade na expressão – e navega na hierarquia de objetos usando introspecção.

Para manipular objetos dessa forma é preciso seguir o padrão JavaBeans, ou seja, os objetos devem ser definidos em classes com um construtor vazio e métodos get e set para leitura e escrita dos atributos.

Para o acesso a atributos de objetos e elementos de listas, a linguagem de expressões define dois operadores: "." (ponto) e "[]" (colchetes). Os dois têm aplicações semelhantes, porém o operador "[]" permite o uso de variáveis como argumentos. Usando esse operador, o exemplo anterior poderia ser escrito da seguinte maneira:

Preço: ${book[“price”]}

Porém, o uso mais indicado para os colchetes é no acesso a listas indexadas. Por exemplo, imagine que exista um atributo chamado allBooks no request, contendo uma coleção de BookDetails do tipo ...

Quer ler esse conteúdo completo? Tenha acesso completo