JSTL
JSTL JavaServer Pages Standard Tag Library
API que encapsulou em tags simples toda a funcionalidade que diversas páginas Web precisam, como controle de laços (fors), controle de fluxo do tipo if else, manipulação de dados XML e a Internacionalização de uma aplicação.
Benefícios da JSTL Melhor Manutenção (no scriptlets); Facilidade; Padrão; Funcionalidades.
APIs da JSTL core: estruturas de repetição, condições... fmt: formatações de data, números... functions: funções de Strings... sql: Utilização da Linguagem SQL em tags... xml: estrutura de repetição em XMLs...
Instalando a JSTL https://jstl.dev.java.net/ Coloque na pasta /lib jstl.jar standard.jar
JSTL - CORE
Importando JSTL em uma página JSP: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> uri = endereço onde se encontra o JSTL prefix = prefixo que será utilizado para acessar as tags.
Hello World em JSTL <c:out value= Hello World" ></c:out>
Pode ser colocado variáveis em qualquer escopo com JSTL. <c:set scope="session" value= João" var= nome" ></c:set> <c:out value= ${nome} ></c:out>
Prática Crie uma página JSP que sete uma variável de sessão com o seu nome, e em outra página exiba seu valor.
Redirecionar para Outra página <c:redirect url= minhapagina.jsp"></c:redirect> <c:redirect url="minhapagina.jsp"> <c:param name= curso" value= Java"></c:param> </c:redirect>
Importar outras páginas <c:import url= menu.jsp"></c:import> <c:import url= rodape.jsp"></c:import>
Prática Crie duas páginas, uma representando o menu e outra o rodapé e em suas páginas importe-as.
Remover Objetos de Escopos <c:remove var="contato" scope="session"/>
Crie uma página que exiba um conteúdo de uma sessão e em outro link remova o mesmo em um scopo de Sessão.
Estrutura de Condição IF <c:if test="${param.status == OK } var= result">... </c:if>
Prática Construa um formulário que faça uma pergunta ao usuário: Qual a Capital de Alagoas?, exiba na tela uma mensagem e a bandeira do Estado (Imagem) caso o usuário tenha acertado, caso o usuário não digite nada Exiba uma Mensagem dizendo que ele precisa digitar um valor.
Prática Construa um formulário simulando uma compra na Internet, após o usuário digitar o CPF uma servlet deve verificar se ele está inadimplente ou não, caso o usuário esteja com débitos você não deve mostrar a ele o botão de Comprar Produto, mostrando apenas os botões de Ver Produtos e Voltar a Home.
Estrutura de Condição IF-ELSE <c:choose> <c:when test="${param.numero=='1'} > </c:when> <c:otherwise> </c:otherwise> </c:choose>
Prática Construa um formulário onde o usuário selecionará (através de um número), em uma lista de fotos de estados, qual estado ele deseja. Em outra página exiba a descrição da opção escolhida utilizando JSTL.
Anteriormente criamos vários Beans, como listar os nomes dos Contatos(Bean) em uma tabela?
Lembram de EL? <jsp:usebean id="listacontato" class="com.fejal.cesmac.listacontato"/> ${listacontato.lista}
Agora podemos ter flexibilidade na utilização de uma lista que venha de um método.
Estrutura de Repetição ForEach <c:foreach var= varrepeticao" items="${class.method}">
Construa uma tabela com uma lista de Contatos e para cada contato um link para envio de Email (Caso o Contato não possua email não exiba o Link para email). Dica: <a href="mailto:aeciovc@gmail.com">
<jsp:usebean id= contatos" class= br.cd.classelista"/> <c:foreach var="contato" items="${contatos.lista}"> ${contato.nome} <a href="mailto:${contato.email}">${contato.email}</a> </c:foreach>
ForTokens Funciona como separador de valores.
<c:fortokens var="cont" items="${lista.lista}" delims=";"> ${cont} </c:fortokens> step indica qual o incremento; begin indica de onde deve começar; end indica onde deve terminar; varstatus variável que indica valores dentro da lista.
Prática Construa um método em uma classe que retorne String com vários nomes separados por ;, após isso exiba-os na página.
Exercícios Coloque um estilo zebrado na sua listagem de contatos. Construa um questionário com 5 questões de única escolha. Após isso exiba a porcentagem que o usuário acertou. Cada questão deve ter 3 opções de escolha.