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>