Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language Introdução

Na abordagem MVC 2, as solicitações dos usuários são atendidas por um servlet, que obtém os parâmetros da requisição; com base neles, chama a lógica de negócio; coloca os javabeans resultantes na requisição, sessão ou contexto do servlet e, em seguida, encaminha a requisição de volta para uma página JSP onde, por fim, o resultado é apresentado. Infelizmente, na apresentação dos resultados, o uso de elementos de scripting torna os projetos difíceis de manter a longo prazo e encoraja o acoplamento da camada de apresentação à de negócio, comprometendo a flexibilidade e escalabilidade da aplicação. Expression Language (EL), visto nesta nota de aula, permite a simplificação da camada de apresentação (páginas JSP) ao substituir os elementos de scripting ou as ações-padrão jsp:useBean e jsp:getProperty com entradas curtas e legíveis.

Conteúdo
• • • • • • • • Vantagens da EL Desvantagens da EL Comparação das sintaxes EL e tags JSP Sintaxe para acessar atributos e propriedades Sintaxe para acessar propriedades aninhadas de javabean Sintaxe para acesso a elementos de coleções (mapas, listas e arrays) Operadores e palavras-chave Bibliografia

Vantagens da EL
• • • • • Provê sintaxe compacta, mais legível e elegante que a das tags JSP; Suporta acesso a propriedades aninhadas; Suporta acesso a coleções (mapas, listas e arrays); Lidar melhor com valores nulos; Provê mais funcionalidade

Desvantagens da EL
• • Não cria um javabean se ele não existir; Não provê um modo de configurar uma propriedade

Comparação das sintaxes EL e tags JSP
• Exemplo com EL 1

<table> <tr> <td>Nome:</td>

© 2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

sobrenome). pessoa)... String sobrenome = “Tal”. session.antoniopassos. <p>Hoje: ${hoje} </p> • Sintaxe para acessar propriedade de javabean ${javabean.com.setAttribute(“pessoa”..pro.sobrenome}</td> </tr> </table> • Mesmo exemplo com tags JSP <jsp:useBean id=”pessoa” scope=”session” class=” br. String nome = “Fulano”...br | Todos os direitos reservados . hoje)..setAttribute(“hoje”. Pessoa pessoa = new Pessoa(nome.nome}</td> </tr> <tr> <td>Sobrenome:</td> <td>${pessoa.propriedade} Exemplo: No servlet. Na página JSP. request..Pessoa” /> <table> <tr> <td>Nome:</td> <td><jsp:getProperty name=”pessoa” propety=”nome” ></td> </tr> <tr> <td>Sobrenome:</td> <td><jsp:getProperty name=”pessoa” propety=”sobrenome” ></td> </tr> </table> Sintaxe para acessar atributos e propriedades • Sintaxe para acessar um atributo ${atributo} Exemplo: No servlet. © 2010 Antonio Passos | http://ead.. Date hoje = new Date(). 2 Na página JSP.Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language <td>${pessoa.antoniopassos.modelo.

Telefone telefone = new Telefone(DDD.numero}</p> Sintaxe para acesso a elementos de coleções (mapas. sobrenome).br | Todos os direitos reservados .. se a variável de escopo for um array.sobrenome}</p> <p>Telefone: (${pessoa...com. String nome = “Fulano”.propriedade01. a entrada corresponderá ao índice do array. listas e arrays) A sintaxe para acessar os diferentes tipos de coleção é a mesma: ${nomeDaColecao[entrada]} 3 onde.DDD}) ${pessoa. <p>Nome: ${pessoa..setAttribute(“pessoa”.telefone.setTelefone(telefone). int DDD = 11.antoniopassos. String numero = “8888-9999”.telefone. a entrada corresponderá ao © 2010 Antonio Passos | http://ead.Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language <p>Nome: ${pessoa.nome}</p> <p>Sobrenome: ${pessoa. Na página JSP. pessoa).sobrenome}</p> A sequência de escopos em que a Java busca por um atributo é a da tabela seguinte. se a variável de escopo for um objeto que implementa a interface List.propriedade02} Exemplo: No servlet. String sobrenome = “Tal”. session. pessoa. Escopo page request session application Objeto EL implícito pageScope requestScope sessionScope applicationScope Descrição O bean está armazenado no objeto PageContext O bean está armazenado no objeto HttpServletRequest O bean está armazenado no objeto HttpSession O bean está armazenado no objeto ServletContext Sintaxe para acessar propriedades aninhadas de javabean • Sintaxe para acessar propriedade aninhada ${atributo.nome}</p> <p>Sobrenome: ${pessoa. Pessoa pessoa = new Pessoa(nome. numero).

com. Nomes. nomes). List nomes = new ArrayList()... a entrada corresponderá à chave do mapa.add(“Cicrano”). <p>Primeiro nome: ${nomes[0]}</p> <p>Segundo nome: ${nomes[1]}</p> <p>Terceiro nome: ${nomes[2]}</p> Operadores e palavras-chave Operadores aritméticos Operador + * / % Alternativa Descrição Adição Subtração Multiplicação Divisão Módulo (resto) div mod Operadores relacionais Operador == != < > <= >= Alternativa eq ne lt gt Le ge Descrição Igual a Não igual a Menor que Maior que Menor que ou igual a Maior que ou igual a Operadores lógicos Operador && || ! Alternativa and or not Descrição E Ou Não 4 Outros operadores Operador Alternativa Descrição © 2010 Antonio Passos | http://ead. Exemplo No servlet. request.add(“Fulano”).Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language índice da lista. se a variável de escopo for um objeto que implementa a interface Map.setAttribute(“nomes”. Nomes. Nomes.add(“Beltrano”). Na página JSP.antoniopassos...br | Todos os direitos reservados .

antoniopassos. retorna y.br | Todos os direitos reservados . retorna z. Palavras-chave usadas em expressões Palavra null true false Alternativa Descrição Nulo Verdadeiro Falso 5 © 2010 Antonio Passos | http://ead.Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language empty x x?y:z Retorna true se o valor de x for null ou igual a uma string vazia Se x for true. Caso contrário.com.

BROWN. Joel. Vivek et al. Servlets. MURACH. Hibernate. JavaServer Faces. Beginning JavaServer Pages. HALL. Inc. QIAN. Kai et al. Edson. Mike Murach & Associates. Rio de Janeiro: LTD. 2004. Inc. Andrea. 2007.. Bruce W. Marty.Desenvolvimento de Aplicativos Web com Servlet e JSP Expression Language Bibliografia CHOPRA.com.br | Todos os direitos reservados .. GONÇALVES. Desenvolvendo aplicações Web com JSP. Core Servlets e JavaServer Pages: tecnologias core. 2008. Wrox.antoniopassos. Larry. 2005. Rio de Janeiro: Editora Ciência Moderna Ltda. Java Servlet & JSP Cookbook. Desenvolvimento Web Java. 2010. EJB 3 Persistence e Ajax. 6 © 2010 Antonio Passos | http://ead. O’Reilly Media. Rio de Janeiro: Editora Ciência Moderna Ltda. 2005. PERRY. Murach’s Java Servlets and JSP. STEELMAN.