![Page 1: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/1.jpg)
JSP – Mais Recursos
![Page 2: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/2.jpg)
Usando atributos
Quando o atributo é uma String
<%= request.getAttribute(“nome”) %>
Se nome for uma instância de Cliente
<%= request.getAttribute(“nome”) %>
O resultado será:
Cliente@521df6 (método toString da classe)
Precisamos usar:
<%=((Cliente) request.getAttribute(“nome”)).getNome() %>
![Page 3: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/3.jpg)
Usando beans
JavaBeans são objetos escritos de acordo com um determinado
padrão que permite tratá-los como componentes de um framework
Ótimos para separar os detalhes de implementação de uma aplicação de
seus “serviços”
Permitem encapsular dados recebidos de outras partes da aplicação e torná-
los disponíveis para alteração e leitura através de uma interface uniforme.
Podem ser usados com JSP para remover grande parte do código
Java de uma página JSP
Maior facilidade de manutenção e depuração
Separação de responsabilidade e reuso de componentes
![Page 4: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/4.jpg)
Usando beans
Sem ações-padrão (com scripting)
<% Cliente c = (Cliente) request.getAttribute(“cliente”); %>
O nome do cliente é
<%= c.getNome() %>
Com ações-padrão (sem scripting)
<jsp:useBean id=“cliente” class=“Cliente” scope=“request” />
O nome do cliente é
<jsp:getProperty name=“cliente” property=“nome” />
Ação-padrão identificador Tipo da classe escopo
Ação-padrão Identificador
o id do useBean propriedade
![Page 5: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/5.jpg)
Como incluir um bean
Para que um bean possa ser usado por uma aplicação JSP, ele deve estar compilado e localizado dentro do CLASSPATH reconhecido pelo servidor No subdiretório WEB-INF/classes do seu contexto
Para incluir: <jsp:useBean id="nome_da_referência“
class="pacote.NomeDaClasse“
scope="page|session|request|application"/>
O atributo de escopo é opcional e indica o tempo de vida do Java Bean. Se omitido, será page, que o limita à página Com escopo de request, o bean pode ser recuperado com outra instrução
<jsp:useBean> que esteja em outra página que receber a mesma requisição (via dispatcher)
Com escopo de session, o bean é recuperável em páginas usadas pelo mesmo cliente, desde que <%@page> não tenha session=false
![Page 6: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/6.jpg)
Como incluir um bean
O nome do bean (atributo id) comporta-se como uma referência a um objeto Java
Incluir o tag <jsp:useBean id="bean" class="bean.HelloBean"
scope="request" />
é o mesmo que incluir na página <% Object obj = request.getAttribute("bean");
bean.HelloBean bean = null;
if (obj == null) {
bean = new bean.HelloBean();
request.setAttribute("bean", bean);
} else {
bean = (bean.HelloBean) obj;
} %>
O id pode ser usado em scriptlets para usar membros do bean <% bean.setValor(12); %>
![Page 7: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/7.jpg)
Propriedades
JavaBeans possuem propriedades que podem ser somente leitura ou leitura-alteração.
O nome da propriedade é sempre derivada do nome do método getXXX(): public class Bean {
private String mensagem;
public void setTexto(String x) {
mensagem = x;
}
public String getTexto() {
return mensagem;
}
}
O bean acima tem uma propriedade (RW) chamada texto
![Page 8: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/8.jpg)
Propriedades
Páginas JSP podem ler ou alterar propriedades de um bean usando os tags <jsp:setProperty name="bean" property="propriedade"
value="valor"/>
que equivale a <% bean.setPropriedade(valor); %> e <jsp:getProperty name="bean" property="propriedade"/>
que equivale a <%=bean.getPropriedade() %>
Observe que o nome do bean é passado através do atributo name, que corresponde ao atributo id em <jsp:useBean>
Valores são convertidos de e para String automaticamente
![Page 9: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/9.jpg)
Propriedades
Parâmetros HTTP com mesmo nome que as propriedades têm valores passados automaticamente com <jsp:setProperty> Se não, pode-se usar atributo param de <jsp:setProperty>
No HTML: <form action ...
nome : <input type=“text” name=“username”> ...
No JSP:
<jsp:setProperty name=“pessoa” property=“nome” param=“usename” >
<jsp:setProperty ... property="*"/> lê todos os parâmetros
As tags do bean convertem as propriedades primitivas automaticamente Ex: atributo do bean: int ID ( int getID() e void setID(int id) )
ID é <jsp:setProperty nome=“pessoa” property=“ID” >
Conversão automática não funciona se usar scripts value=“<%= request.getParameter(“ID”) %>”
![Page 10: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/10.jpg)
Inicialização de beans
A tag <jsp:useBean> simplesmente cria um bean chamando seu construtor. Para inicializá-lo, é preciso chamar seus métodos setXXX() ou usar <jsp:setProperty> após a definição <jsp:useBean id="bean" class="bean.HelloBean" />
<jsp:setProperty name="bean" property="prop" value="valor"/>
Se um bean já existe, porém, geralmente não se deseja inicializá-lo.
Neste caso, a inicialização pode ser feita dentro do marcador <jsp:useBean> e o sistema só a executará se o bean for novo (sejá existir, o código será ignorado) <jsp:useBean id="bean" class="bean.HelloBean" >
<jsp:setProperty name="bean" property="prop" value="valor"/>
</jsp:useBean>
ou <jsp:useBean id="bean" class="bean.HelloBean" >
<% bean.setProp(valor); %>
</jsp:useBean>
SEM
BARRA
![Page 11: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/11.jpg)
Condicionais e iterações
Não é possível usar beans para remover de páginas Web o código Java de expressões condicionais e iterações como for do-while e while Para isto, não há tags padrão. É preciso usar Taglibs (JSTL)
Beans, porém, podem ser usados dentro de iterações e condicionais, e ter seus valores alterados a cada repetição ou condição <jsp:useBean id="mBean" class="MessageBean" scope="session" />
<% MessageBean[] messages = MessagesCollection.getAll();
for (int i = messages.length -1; i >= 0; i--) {
mBean = messages[i];
%>
<tr><td><jsp:getProperty name="mBean"
property="time"/></td>
<td><%=mBean.getHost()%></td>
<td><%=mBean.getMessage()%></td></tr>
<% } %>
(MessageBean tem propriedades: time, host, message)
![Page 12: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/12.jpg)
Matando beans
Beans são sempre gravados em algum objeto de
escopo: page, request, session ou application
Persistem até que o escopo termine ou expirem devido
a um timeout (no caso de sessões)
Para se livrar de beans persistentes, use os
métodos removeAttribute(), disponíveis para cada
objeto de escopo:
session.removeAttribute(bean);
application.removeAttribute(bean);
request.removeAttribute(bean);
![Page 13: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/13.jpg)
Polimorfismo em Beans
Uso de type <jsp:useBean id=“pessoa” type=“Pessoa” class=“Cliente” scope = “page” />
Equivale a Pessoa pessoa = null;
If (pessoa = null) {
pessoa = new Cliente();
}
Usando type sem class <jsp:useBean id=“pessoa” type=“Pessoa” scope = “page” />
Se o atributo pessoa já existir, funciona
Se não existe dá erro Java.lang.InstantiationException
Se type for usado sem uma classe, o bean já deve existir.
Se class for usada (com ou sem type), a classe NÃO deve
ser abstrata e deve possuir construtor padrão público.
![Page 14: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/14.jpg)
Composite View
Páginas Web complexas (ex: portais) frequentemente são divididas
em partes independentes
Algumas partes são altamente dinâmicas, mudando frequentemente até na
estrutura interna
Outras partes mudam apenas o conteúdo
Outras partes sequer mudam o conteúdo
Gerar uma página dessas usando apenas um template é
indesejável
![Page 15: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/15.jpg)
Composite View
O padrão de projeto Composite View sugere que tais páginas
sejam separadas em blocos menores, que possam
ser alterados individualmente e
compostos durante
a publicação
(deployment)
ou exibição
JSP oferece duas soluções para obter esse efeito Usando inclusão estática (no momento da compilação do servlet)
Usando inclusão dinâmica (no momento da requisição)
![Page 16: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/16.jpg)
Inclusão estática
Mais eficiente: fragmentos são incluídos em único servlet
Indicada quando estrutura não muda com frequência (conteúdo pode mudar)
Menus, Logotipos e Avisos de copyright
Telas com mini formulários de busca
Implementada com <%@ include file="fragmento" %>
<!-- Menu superior -->
<table>
<tr><td><%@ include file="menu.jsp" %></td></tr>
</table>
<!-- Fim do menu superior -->
<a href="link1">Item 1</a></td>
<td><a href="link2">Item 2</a></td>
<a href="link3">Item 3</a>
Se tela incluída contiver novos fragmentos, eles serão processados recursivamente
Fragmento menu.jsp
![Page 17: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/17.jpg)
Inclusão dinâmica
Mais lento: fragmentos não são incluídos no servlet mas
carregados no momento da requisição
Indicada para blocos cuja estrutura muda com freqüência
Bloco central ou notícias de um portal
Implementada com <jsp:include page="fragmento"/>
Pode-se passar parâmetros em tempo de execução usando
<jsp:param> no seu interior <!-- Texto principal -->
<table>
<tr><td>
<jsp:include page="texto.jsp">
<jsp:param name="data" value="<%=new Date() %>">
</jsp:include>
</td></tr> </table>
<!-- Fim do texto principal -->
![Page 18: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/18.jpg)
Repasse de requisições
Uma requisição pode ser repassada de uma página JSP para outra página ou servlet usando RequestDispatcher <% RequestDispatcher rd =
request.getRequestDispatcher("url");
rd.forward(request, response);
%>
O mesmo efeito é possível sem usar scriptlets com a ação padrão <jsp:forward>
Assim como <jsp:include>, pode incluir parâmetros recuperáveis na página que receber a requisição usando request.getParameter() ou <jsp:getProperty> se houver bean <% if (nome != null) { %>
<jsp:forward page="segunda.jsp">
<jsp:param name="nome" value="<%=nome %>">
</jsp:forward>
<% } %>
![Page 19: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/19.jpg)
JSP – JSTL
![Page 20: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/20.jpg)
JSP Standard Tag Library (JSTL)
Esforço de padronização do JCP: JSR-152
Baseado no Jakarta Taglibs (porém bem menor)
Oferece dois recursos
Conjunto padrão de tags básicos (Core, XML, banco de dados e
internacionalização)
Linguagem de expressões do JSP 1.3
Oferece mais controle ao autor de páginas sem necessariamente
aumentar a complexidade
Controle sobre dados sem precisar escrever scripts
Estimula a separação da apresentação e lógica
Estimula o investimento em soluções MVC
![Page 21: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/21.jpg)
Como usar JSTL
1. Fazer o download da última versão do site da Sun
2. Copiar os JARs das bibliotecas desejadas para o diretório WEB-
INF/lib/ da sua aplicação Web
3. Incluir em cada página que usa os tags: <%@ taglib uri="uri_da_taglib"
prefix="prefixo" %>
4. Usar os tags da biblioteca com o prefixo definido no passo
anterior <prefixo:nomeTag atributo="..."> ...
</prefixo:nomeTag>
![Page 22: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/22.jpg)
Cinco bibliotecas de tags
Core library: tags para condicionais, iterações, urls, ... <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Exemplo: <c:if test="..." ... >...</c:if>
XML library: tags para processamento XML <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
Exemplo: <x:parse>...</x:parse>
Internationalization library <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Exemplo: <fmt:message key="..." />
SQL library <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Exemplo: <sql:update>...</sql:update>
Function library <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Exemplo: ${fn:length(...)}
![Page 23: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/23.jpg)
Linguagem de expressões (EL)
Permite embutir em atributos expressões dentro de delimitadores
${...}
Em vez de request.getAttribute("nome")
${nome}
Em vez de bean.getPessoa().getNome()
${bean.pessoa.nome}
Suporta operadores aritméticos, relacionais e binários
Converte tipos automaticamente
<tag item="${request.valorNumerico}" />
Valores default
<tag value="${abc.def}" default="todos" />
![Page 24: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/24.jpg)
Linguagem de expressões (EL)
A primeira variável na expressão é um OBJETO IMPLÍCITO ou um
ATRIBUTO $ { primeiro.segundo)
Objetos:
pageScope, requestScope, sessioScope,applicationScope
param, paramValues
header, headerValues
cookie
initParam
pageConext
Único que não é mapeamento (Map); é um bean
Atributo:
Em qualquer um dos escopos: page, request, session, application
![Page 25: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/25.jpg)
Linguagem de expressões (EL)
Se a expressão possuir um avariável seguida por um ponto, a variável a
esquerda TEM QUE ser um MAP ou um BEAN
O que estiver do lado direito do ponto TEM QUE ser uma chave de MAP ou uma
propriedade do BEAN
Deve seguir regras normais do Java para nomenclatura dos identificadores
Operador [] é similar ao ponto, mas melhor
${pessoa[“nome“]} idem a ${pessoa.nome}
Se pessoa for List ou Array?
Só funciona com [] : ${listMusic[“Take“] } ou ${listMusic[0]}
O que vem dentro dos colchetes é uma String:
Chave Map
Propriedade Bean
Índice de um List ou Array
![Page 26: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/26.jpg)
Principais ações
Suporte à impressão da linguagem expressões <c:out value="${pessoa.nome}" />
Expressões condicionais <c:if test="${pessoa.idade >= 18}">
<a href="adultos.html">Entrar</a>
</c:if>
<c:choose>
<c:when test="${dia.hora == 13}">
<c:out value="${mensagemEspecial}" />
</c:when>
<c:otherwise>
<c:out value="${mensagemPadrao}" />
</c:otherwise>
</c:choose>
Iteração <c:forEach items="${pessoas}" var="p" varStatus="s">
<c:out value="${s.count}"/>. <c:out value="${p}"/>
</c:forEach>
![Page 27: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/27.jpg)
PageContext
Objeto que permite a tag acessar informações
sobre o contexto da aplicação para leitura de
valores de formularios (request), variaveis de
sessao e gerar conteudo de saida (response)
![Page 28: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/28.jpg)
PageContext
Acesso facil a parametros de entrada vindos de
get/post, variaveis de sessoes e cookies
$session:minhavariaveldesessao
$cookie:meucookie
$param:email
$param:nome Dados vindos de
forms
![Page 29: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/29.jpg)
set
Atribui valor a uma variável
Sintaxe 1
<c:set value="valor"
var=”nomeVariavel”
[scope=”{page|request|session|application}”] />
Sintaxe 2
<c:set var=” nomeVariavel”
[scope=”{page|request|session|application}”]>
Corpo do Conteúdo
</c:set>
![Page 30: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/30.jpg)
Exemplo
<c:set var="nome"
value="${param.nome}" />
Olá ${nome}
<c:set var="nome">
${param.nome}
</c:set>
Olá ${nome}
![Page 31: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/31.jpg)
remove
Remove uma variável
<c:remove var="nomeVar" [scope="{page|...}"]/>
Se o escopo for omitido a variável é removida do
escopo mais interno
Exemplo
<c:remove var="nome"
scope="page" />
![Page 32: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/32.jpg)
out
Avalia e exibe uma expressão
Sintaxe
<c:out value="valor”
[escapeXml="{true|false}"]
[default="valorDefault"] />
Exemplo
Olá <c:out value="${nome}" />
![Page 33: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/33.jpg)
if
Avalia o conteúdo se a condição for verdadeira
<c:if test="condição">
Conteúdo
</c:if>
Exemplo
<c:if test="${usuario.visitas eq 1}">
Esta é a sua Primeira Visita.
</c:if>
![Page 34: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/34.jpg)
choose ... when ... otherwise
Avalia várias condições
semelhante a um if aninhado de Java
<c:choose>
<c:when test="condição">
</c:when>
...
<c:otherwise>
</c:otherwise>
</c:choose>
![Page 35: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/35.jpg)
Exemplo
Situação Parcial:
<c:choose>
<c:when test="${nota lt 30}">
Reprovado
</c:when>
<c:when test="${nota lt 70}">
Recuperação
</c:when>
<c:otherwise>
Aprovado
</c:othewise>
</c:choose>
![Page 36: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/36.jpg)
Exemplo : choose = if ... else
Situação Final:
<c:choose>
<c:when test="${nota lt 70}">
Reprovado
</c:when>
<c:otherwise>
Aprovado
</c:otherwise>
</c:choose>
![Page 37: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/37.jpg)
forEach (1/2)
Percorre uma coleção (lista, array ou
mapeamento) de objetos
<c:forEach var=“variavel” itens=“colecao”
varStatus=“variavelStatus” />
conteúdo
</c:forEach>
![Page 38: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/38.jpg)
Exemplo forEach
Exemplo:
<c:forEach var=“livro” itens=“${livros}”
varStatus=“status” />
${status.count} – ${livro.titulo}
</c:forEach>
1 - Java Como Programar
2 - Java Servlets
3 - HTML & XHTML
![Page 39: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/39.jpg)
forEach (2/2)
Laço com início e fim
<c:forEach var=“variavel” begin=“inicio” end=“fim”
step=“passo” varStatus=“variavelStatus” />
conteúdo
</c:forEach>
![Page 40: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/40.jpg)
Construindo uma Tabela
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Função Quadrado</title></head>
<body>
<table border="1">
<tr><th>x</th><th>x^2</th></tr>
<c:forEach var="counter" begin="1" end="10">
<tr>
<td>${counter}</td>
<td>${counter*counter}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
![Page 41: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/41.jpg)
forTokens
Semelhante ao forEach mas os elementos estão
em um único String.
<c:forTokens items="stringOfTokens"
delims="delimitadores" [var=“nomeVar"]
[varStatus=“nomeVarStatus"]
[begin=“inicio"] [end=“fim"] [step=“passo"]>
Conteúdo
</c:forTokens>
![Page 42: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/42.jpg)
Exemplo
Imprimir as letras do string "a,b/c,d/e,f" onde , e /
são delimitadores
<c:forTokens items="a,b/c,d/e,f" delims=",/"
var=“letra">
<p>${letra}</p>
</c:forTokens>
![Page 43: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/43.jpg)
Arquitetura de Sistemas
Web
![Page 44: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/44.jpg)
Modelo 2 Camadas
![Page 45: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/45.jpg)
Modelo 2 Camadas
•Camada de Apresentação com Regras de Negócio Juntas.
•Camada de Persistência.
Problemas para o usuário, que não tem os programas funcionando
como deveriam; Problemas para a equipe de desenvolvimento que
não tem o seu trabalho reconhecido e, normalmente, tem que
trabalhar apenas "apagando incêndios"; e Problemas para a
Administração/Gerência da rede que não consegue gerar os
resultados esperados pela Administração da empresa, apesar dos
elevados valores já investidos.
Maior TCO – Custo Total de Propriedade
![Page 46: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/46.jpg)
Modelo 3 Camadas
![Page 47: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/47.jpg)
Modelo 3 Camadas
Modelo e códigos construídos para representar as camadas.
Os servidores não precisam estar necessariamente em máquinas diferentes, podem estar na mesma máquina. Porem questões de performance são relevantes.
• Camada de Apresentação
• Camada de Negócios
• Camada de Persistência
![Page 48: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/48.jpg)
Modelo 3 Camadas c/ MVC
APRESENTAÇÃO NEGÓCIO OU LÓGICA PERSISTÊNCIA
(INTEGRAÇÃO)
NAVEGADOR WEB SGDB V
C
M
SERVIDOR CLIENTE - SERVIDOR CLIENTE
SERVIDOR WEB
Helper classes
![Page 49: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/49.jpg)
Modelo 4 Camadas
![Page 50: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/50.jpg)
Modelo 4 Camadas
CLIENTE
(APRESENTAÇÃO)
NAVEGADOR WEB
CLIENTE
PERSISTÊNCIA
SGDB
SERVIDOR
GERENCIA DE
APRESENTAÇÃO
NEGÓCIO
SERVIDOR WEB
CLIENTE - SERVIDOR CLIENTE - SERVIDOR
SERVIDOR
APLICAÇÃO
EJB in
MVC
V
C
M
![Page 51: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/51.jpg)
J2EE - 4 TIER
![Page 52: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/52.jpg)
MVC - FLUXOS
![Page 53: JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e iterações Não é possível usar beans para remover de páginas Web o código Java de](https://reader035.vdocuments.mx/reader035/viewer/2022062606/5fe298f55849a00155425048/html5/thumbnails/53.jpg)
MVC