7.1 c:se, c:paraCada
Todos gostaram do código usando tags em vez de código Java, então decidiram expandir o escopo. Mas a programação não se limita a criar objetos e ler suas propriedades. Você precisa chamar métodos de objetos, trabalhar com o banco de dados e outros serviços. O que fazer?
Você só precisa representar cada instrução Java como uma tag. Foi if
, será <if>
, foi for
, será <for>
e assim por diante. Ok, ok, brincadeira, não foi assim. Bem, não pode ser que as pessoas realmente decidam fazer isso. Mas não, talvez!
Os programadores têm permissão para adicionar quaisquer tags ao código. Em princípio, não há nada com que se preocupar - JSP é um padrão extensível. Mas eles foram além e lançaram a JSP Standard Tag Library - JSTL. A página com ele se parece com isso:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
É bem possível que você se depare com esse código em seus projetos futuros, aí darei algumas explicações.
7.2 Funções JSTL
As funções JSTL se enquadram em 5 categorias:
- Tags principais;
- Etiquetas de formatação;
- tags SQL;
- tags XML;
- Chamando funções.
Não vou listar todos, mas vou listar os mais populares. Vamos começar com as tags principais:
1 | <c:out> |
Gera a expressão especificada - equivalente a <%= %> |
2 | <c:set> |
Grava o resultado de uma expressão em uma variável |
3 | <c:remove> |
Exclui uma variável |
4 | <c:catch> |
Captura exceções |
5 | <c:if> |
análogo de se |
6 | <c:choose> |
interruptor analógico |
7 | <c:when> |
Usado em conjunto com escolher |
8 | <c:otherwise> |
Usado em conjunto com escolher |
9 | <c:import> |
Permite incluir conteúdo no código (equivalente à diretiva de importação) |
10 | <c:forEach> |
para cada loop |
onze | <c:param> |
Permite definir opções de importação |
12 | <c:redirect> |
redirecionar |
13 | <c:url> |
Cria uma URL com parâmetros |
Vou dar apenas um exemplo e terminar com isso. Em princípio, é bem possível ler esse código depois de alguma habilidade. Mas não recomendo escrever.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
Pense nisso, escrevemos código Java na forma de tags, para que o analisador JSP converta essas tags em código Java. Algo neste mundo deu errado.
A propósito, você pode escrever suas próprias bibliotecas de tags. Eu até trabalhei em um projeto onde eles estavam. Experiência incrível. Assim que qualquer alteração é feita na biblioteca, todo o jsp é interrompido imediatamente.
O que você quer? O compilador não rastreia essas alterações. Eles só podem ser encontrados visualmente ao visualizar as páginas HTML geradas. E se esses são alguns cenários raros que surgem em situações não triviais ... Deus abençoe o desenvolvimento de back-end e a digitação estática!