Utilizando a Linguagem de Expressão (EL) em JSP para Acessar Dados da Requisição e do Escopo da Aplicação

A Linguagem de Expressão (EL) em JSP é uma ferramenta sintática projetada para simplificar o acesso a dados em páginas JSP, eliminando a necessidade de código Java scriptlet direto no markup. Isso resulta em páginas mais limpas e de mais fácil manutenção.

Uma das funções primárias da EL é recuperar dados de diferentes escopos, convertê-los para o formato de string e renderizá-los no navegador. O comportamento padrão, quando nenhum escopo é explicitado, é buscar o valor no escopo mais restrito disponível. Os quatro escopos implícitos para acesso direto são pageScope, requestScope, sessionScope e applicationScope.

Para acessar propriedades que possuam caracteres especiais, como o ponto final (.), utiliza-se a notação de colchetes []. Por exemplo, ${sessionScope["user.details"]}.

É possível desabilitar a EL em uma página JSP inteira através da diretiva isELIgnored="true". Para escapar de uma expressão EL específica, utiliza-se o caractere \.

A EL também disponibiliza objetos implícitos de escopo. O objeto pageContext provê aceso ao HttpServletRequest subjacente, o que permite, por exemplo, obter o caminho de contexto da aplicação via ${pageContext.request.contextPath}. Outros objetos incluem param e paramValues para parâmetros de requisição simples e de múltiplos valores, e initParam para parâmetros de inicialização do contexto da aplicação (definidos no web.xml).

Exemplo Prático de Uso da EL em uma Página JSP

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" %>
<html>
<head>
    <meta charset="utf-8">
    <title>Portal do Sistema</title>
</head>
<body>
    <section class="login-box">
        <h2>Acessar Sistema</h2>
        <form action="${pageContext.request.contextPath}/auth/autenticar" method="post">
            <div>
                <label for="user">Usuário:</label>
                <input type="text" id="user" name="loginUsuario">
            </div>
            <div>
                <label for="pass">Senha:</label>
                <input type="password" id="pass" name="senhaUsuario">
            </div>
            <div>
                <input type="checkbox" id="remember" name="manterSessao" value="ativo">
                <label for="remember">Manter conectado</label>
            </div>
            <button type="submit">Entrar</button>
        </form>
    </section>

    <section class="data-display">
        <h3>Dados da Requisição Atual</h3>
        <p>Caminho da Aplicação: ${pageContext.request.contextPath}</p>
        <p>Valor do parâmetro 'loginUsuario': <strong>${param.loginUsuario}</strong></p>

        <h3>Parâmetros de Inicialização da Aplicação</h3>
        <p>Itens por Página: <strong>${initParam.itemsPorPagina}</strong></p>
        <p>Página Padrão: <strong>${initParam.paginaPadrao}</strong></p>
    </section>
</body>
</html>

Cofniguração dos Parâmetros no Desrcitor de Implantação (web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- Configuração de timeout da sessão -->
    <session-config>
        <session-timeout>25</session-timeout>
    </session-config>

    <!-- Página de boas-vindas -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- Parâmetros de inicialização acessíveis via EL (initParam) -->
    <context-param>
        <param-name>itemsPorPagina</param-name>
        <param-value>15</param-value>
    </context-param>
    <context-param>
        <param-name>paginaPadrao</param-name>
        <param-value>1</param-value>
    </context-param>

</web-app>

Tags: jsp EL(ExpressionLanguage) JavaEE servlet WebDevelopment

Publicado em 7-11 18:19