jsp – mais recursosbacala/pi/8 - sistemas web com jsp-jstl... · 2018. 4. 2. · jsp standard tag...

35
JSP – JSTL

Upload: others

Post on 07-Oct-2020

33 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

JSP – JSTL

Page 2: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 3: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Como usar JSTL

Incluir em cada página que usa os tags: <%@ taglib uri="uri_da_taglib"

prefix="prefixo" %>

Usar os tags da biblioteca com o prefixo definido no passo anterior <prefixo:nomeTag atributo="..."> ...

</prefixo:nomeTag>

Page 4: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 5: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 6: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 7: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 8: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 9: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 10: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 11: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 12: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Exemplo

<c:set var="nome"

value="${param.nome}" />

Olá ${nome}

<c:set var="nome">

${param.nome}

</c:set>

Olá ${nome}

Page 13: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 14: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

out

Avalia e exibe uma expressão

Sintaxe

<c:out value="valor”

[escapeXml="{true|false}"]

[default="valorDefault"] />

Exemplo

Olá <c:out value="${nome}" />

Page 15: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 16: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 17: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 18: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 19: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 20: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 21: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 22: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 23: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 24: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 25: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Arquitetura de Sistemas

Web

Page 26: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 27: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Modelo 2 Camadas

Page 28: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 29: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Modelo 3 Camadas

Page 30: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 31: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

MVC - FLUXOS

Page 32: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

MVC

Page 33: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

Modelo 4 Camadas

Page 34: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

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 35: JSP – Mais Recursosbacala/PI/8 - Sistemas Web com JSP-JSTL... · 2018. 4. 2. · JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs

J2EE - 4 TIER