JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e...

53
JSP – Mais Recursos

Transcript of JSP – Mais Recursos - FACOMbacala/PI/7 - Sistemas Web com JSP-JSTL.pdf · Condicionais e...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Principais ações

Suporte à impressão da linguagem expressões <c:out value="${pessoa.nome}" />

Expressões condicionais <c:if test="${pessoa.idade &gt;= 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MVC