EL e JSTL: Conceitos Fundamentais para Desenvolvimento com JSP

EL (Expression Language) em Páginas JSP

EL é uma linguagem de expressão que simplifica o acesso a dados em páginas JSP, permitindo manipulação eficiente de informações sem código Java extenso.

Funcionalidades Principais

  • Acesso direto a objetos de escopo como pageContext, request, session e application.
  • Recuperação de parâmetros enviados pelo cliente.
  • Manipulação de propriedades em objetos JavaBean.
  • Iteração e acesso a elementos em coleções.
  • Avaliação de expressões simples para saída de dados.

Trabalhando com Dados de Escopo

Em vez de usar scriptlets como <%=request.getAttribute("variavel")%>, EL oferece uma sintaxe concisa: ${variavel}.

Lidando com Parâmetros de Requisição

EL fornece objetos implícitos para acessar parâmetros:


  
  ${param.nome_usuario}
  
  ${paramValues.interesses[2]}

Acessando Propriedades de Beans

Duas abordagens disponíveis:

  • ${objeto.propriedade} — por exemplo, ${cliente.endereco}
  • ${objeto["propriedade"]} — útil para nomes com caracteres especiais ou acesso dinâmico.

Exemplo de acesso dinâmico:


  <% 
    request.setAttribute("atributo_dinamico", "idade");
  %>
  ${pessoa[atributo_dinamico]}

Trabalhando com Coleções

Para uma lista de produtos:


  ${produtos[3].preco}

Operadores em EL

EL suporta operadores para cálculos e comparações.

Operador condicional:


  ${condicao ? "resultado_verdadeiro" : "resultado_falso"}

Verificação de valores vazios:


  ${empty expressao}
  

JSTL (JSP Standard Tag Library)

JSTL é uma coleção de tags que elimina a necessidade de código Java em páginas JSP, promovendo manutenção mais fácil e código mais limpo.

Configuração Inicial

Adicione as bibliotecas JSTL ao projeto e declare a taglib na página JSP:


  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Tags Principais do JSTL Core

  • c:out: Exibe conteúdo de forma segura.
  • c:set: Define ou atualiza atributos em escopos.
  • c:remove: Remove atributos de escopos.
  • c:if: Avalia condições simples.
  • c:choose: Suporta múltiplas condições com fallback.
  • c:forEach: Itera sobre coleções ou intervalos.

Exemplos Práticos


  
  <out default="Nenhuma mensagem" value="${mensagem_erro}"></out>

  
  <set scope="session" value="${valor}" var="total_pedidos"></set>

  
  <if test="${autenticado}">
    <p>Usuário autenticado: ${perfil.email}</p>
  </if>

  
  <choose>
    <when test="${pontuacao >= 90}">
      <p>Nível: Avançado</p>
    </when>
    <when test="${pontuacao >= 70}">
      <p>Nível: Intermediário</p>
    </when>
    <otherwise>
      <p>Nível: Básico</p>
    </otherwise>
  </choose>

  
  <foreach items="${lista_dados}" var="elemento" varstatus="status">
    <div>Item ${status.count}: ${elemento.descricao}</div>
  </foreach>

Tags para Funções e Formatação

JSTL inclui bibliotecas adicionais para operações utilitárias:


  <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

Criando Tags Personalizadas

Para necessidades específicas, desenvolvedores podem implementar tags customizadas:

  1. Desenvolva uma classe que estenda SimpleTagSupport e implemente o método doTag.
  2. Crie um arquivo TLD (Tag Library Descriptor) no diretório WEB-INF.
  3. Registre a taglib na página JSP para utilização.

Exemplo de classe de tag personalizada:


  public class TagExibicao extends SimpleTagSupport {
    private String mensagem;
    
    public void setMensagem(String mensagem) {
      this.mensagem = mensagem;
    }
    
    @Override
    public void doTag() throws JspException, IOException {
      JspWriter saida = getJspContext().getOut();
      saida.write("Tag personalizada: " + mensagem);
    }
  }

Configuração no arquivo TLD:


  <tag>
    <name>tagExibicao</name>
    <tag-class>com.projeto.tags.TagExibicao</tag-class>
    <body-content>empty</body-content>
    <attribute>
      <name>mensagem</name>
      <required>true</required>
    </attribute>
  </tag>

Utilização em uma página JSP:


  <%@ taglib prefix="custom" uri="http://meusite.com/tags" %>
  <tagexibicao mensagem="Olá, mundo!"></tagexibicao>

Tags: EL jstl jsp ExpressionLanguage JavaWeb

Publicado em 6-28 16:40