Java II. Sérgio Luiz Ruivace Cerqueira

Documentos relacionados
O que é uma tag Tag tag tag tag tag tags tags HTML O que é uma tag library biblioteca de tags tags Java Standard Tag Library JSTL Tag Library JSTL

JSP Standard Tag Library (JSTL)

JSP Standard Tag Library (JSTL)

Java para Desenvolvimento Web

J550 Como criar Custom Tags

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

JSP Standard Tag Library (JSTL)

JSTL: Uma forma padrão de desenvolver página WEB dinâmica Plácido Antonio de Souza Neto

JSTL: facilitando o JSP. Fernando Boaglio

Java II. Sérgio Luiz Ruivace Cerqueira

Java para WEB JSTL. JavaServer Pages Standard Tag Library

DESENVOLVENDO APLICAÇÕES WEB COM JSP E JSTL. Peter Jandl Junior. Novatec

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Servlets & JSP. Prof. Ramon Chiara

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Formação JAVA Web.

Linguagem de Expressão, JSTL e DisplayTag. Fornece tags para encapsular funcionalidades complexas para utilização em JSPs

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts

Programação para Internet II

!" # # # $ %!" " & ' ( 2

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

J550 Tag Libraries e JSTL

<%= request.getattribute( nome ) %> Se nome for uma instância de Cliente. <%= request.getattribute( nome ) %>

CONTEÚDO PROGRAMÁTICO

J550 JSP com tags padrão

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Programação Web Aula 12 - Java Web Software

JavaScript Fundamental e Servlet Fundamental

DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I Criação de Aplicativos Web. Luiz Leão

Java Server Pages (JSP)

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

Desenvolvimento Web TCC Turma A-1

Programando em JSTL-JSP Standard Tag Library

Ciclo de vida; Funcionamento; Requisições e Respostas.

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

Trabalhando com Servlet

JSP e Servlet Princípio de MVC

Java para WEB. Servlets

Programação para Internet II

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Unidade 6: Java Server Pages Prof. Daniel Caetano

Java para WEB com Struts 2 e Hibernate

JSP (Java Server Pages)

AULA 03 JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS

(UFF) JSF (I) TEPIS II

Tecnologias Web. Java Enterprise Edition

Java para Desenvolvimento Web

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Desenvolvimento Web TCC Turma A-1

Tutorial Jogo da Velha WEB

Framework web baseado em taglibs para gerenciamento de conteúdo

JSF Facelets. Como Facelets muda a forma de desenvolver com JSF

JSP (JAVASERVER PAGES)

Associação Carioca de Ensino Superior Centro Universitário Carioca

AULA 08. Sintaxe JSP. Prof. André Luis Schwerz.

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

J2EE. Projeto de Sistemas de Software

Java II. Sérgio Luiz Ruivace Cerqueira

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE Ficha de Expectativa de Resposta da Prova Escrita

Java JSTL. Rodrigo C. de Azevedo

Autenticação e Autorização

Java para Desenvolvimento Web Carga Horária: 40 Horas.

Programação para Internet

Programação: Vetores

Administração de Redes de Computadores

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Aula 7: Servlets (II)

Java. Guia do Programador. Peter Jandl Junior. Novatec

Oracle Database: Fundamentos de SQL e PL/SQL

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

João Carlos Pinheiro. Julho / 2004

UNIDADE III JAVA SERVER PAGES

Integração com Banco de Dados

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

J820. Testes em J2EE com. Jakarta C A C T U S. argonavis.com.br. Helder da Rocha

Web Services REST JAX-RS

Configurando uma aplicação Struts

SERVLETS. Introdução UNIDADED

PROJETO WEB: Java. Prof Fernando Gomes

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Surgindo em 1997 a API Java Servlet proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a

Capítulo 1 - Preparando o Ambiente Capítulo 2 Xhtml - 35 Capítulo 3 - Aplicação Web - 87

Oracle Database 11g: Introdução à Linguagem SQL Novo

Aplicações de Linguagem de Programação Orientada a Objeto

PHP. Programando com Orientação a Objetos. Pablo Dall Oglio. Novatec

Java Server Faces Navegação de

Desenvolvimento Web III. Prof. Felippe Scheidt

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão

Módulo IVb - JSP. Prof. Ismael H F Santos. Módulo IVb Java Server Pages - JSP

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

AULA 12 JSTL. Prof. André Luis Schwerz.

Cross-Site Scripting. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Transcrição:

Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

JavaServerPages Standad Tag Library (JSTL)

Tag Library - Criação Permite a criação de seus próprios tags JSP É tratada por uma classe Tag Handler A classe Tag Handler Deve implementar javax.servlet.jsp.tagext.tag Normalmente estende TagSupport ou BodyTagSupport Fica no mesmo diretório das classes Servlet O arquivo descritor da Tag Library Arquivo XML que descreve o nome do tag, seus atributos e a sua classe Tag Handler O arquivo JSP Importa a Tag Library (referenciando o arquivo descritor) Define um prefixo para o tag Usa o tag

Tag Library - Criação Estender a classe TagSupport Deve importar os seguintes pacotes javax.servlet.jsp.*; javax.servlet.jsp.tagext.*; java.io.*; Exemplo Sobrescrever o método dostarttag Obter um JspWriter através de pagecontext.getout() Usar o JspWriter para escrever conteúdo JSP Retornar SKIP_BODY É traduzido para Servlet junto com o JSP que o usa Seu código é executado quando o arquivo JSP que o usa é chamado

Tag Library - Criação exemplo

Tag Library - Criação Podem ser sobrescritos os seguintes métodos: doinitbody método executado na inicialização da instancia dostarttag método executado no momento de execução da Tag na JSP <les:minhatag> doendtag método executado no final de execução da Tag na JSP </les:minhatag> Pode ser retornado: dostarttag: Tag.EVAL_BODY_INCLUDE: inclui tudo que está dentro da Tag, seja HTML ou outra Tag Tag.SKIP_BODY: ignora todo o conteúdo dentro da Tag doendtag: Tag.EVAL_PAGE: continua a execução da Página Tag.SKIP_PAGE: sai da execução da Página

Tag Library - Criação Descritor de uma tag library Arquivo XML <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_2.dtd"> O elemento de mais alto nível deve ser taglib Cada tag definido por um elemento tag deve ter nome: que define o nome do tag tagclass: que deve indicar o caminho completo para a classe Tag Handler info: que indica uma breve descrição attribute: permite definir um atributo (parâmetro) para a tag name: nome do atributo required: se é obrigatório ou não rtexprvalue: se o valor pode ser determinado dinamicamente

Tag Library - Criação Um exemplo

Usando uma tag library Importar a tag library Especificar o caminho para o arquivo TLD <%@ taglib uri="cwp-tablib.tld" prefix="cwp" %> Definir um prefixo para o tag library <%@ taglib uri="cwp-tablib.tld" prefix="cwp" %> Usar os tags <prefix:tagname> O nome do tag vem do arquivo TLD Prefixo vem da diretiva taglib Exemplo: <cwp:simpleprime>

Usando uma tag library Usando uma tag library

JSTL usando uma tag library O resultado da tag library

Tags, Servlets e JSPs

JSTL Conjunto de TagLib disponibilizadas pela Sun/Oracle Para uso geral nos sistemas

JSTL Área Subfunção Prefixo URI Core Suporte à variável O controle de fluxo Gestão URL Diversos c http://java.sun.com/jsp/jstl/core XML Essência O controle de fluxo Transformação x http://java.sun.com/jsp/jstl/xml I18N Locale Formatação de mensagens Formatação de números e data fmt http://java.sun.com/jsp/jstl/fmt Database SQL sql http://java.sun.com/jsp/jstl/sql Function Collection Manipulação de String fn http://java.sun.com/jsp/jstl/functions

Core set: permite atribuir um valor a uma nova variável ou a uma já existente <c:set var="idproduto" scope="page" value="${param.id}"/> <c:set var="idproduto" scope="request">25</c:set> remove: permite remover uma variável criada <c:remove var="idproduto" scope="page"/> <c:remove var="idproduto" /> if: permite o controle do fluxo do sistema com validação sobre as variáveis <c:if test="${!empty param.id}"> <c:set var="idproduto" value="${param.id}"/> </c:if>

Core choose / when / otherwise permite o controle do fluxo usando o if / else if / else <c:choose> <c:when test="${!empty param.id}"> <c:set var="idproduto" value="${param.id}"/> </c:when> <c:when test="${!empty param.idproduto}"> <c:set var="idproduto" value="${param.idproduto}"/> </c:when> <c:otherwise> <c:set var="idproduto" value="0"/> </c:otherwise> </c:choose>

Core foreach permite o loop sobre uma conjunto de elementos <table> <c:foreach var="usuario" items="usuarios"> <tr> <td>${usuario.nome}</td> <td> <c:foreach var="grupo" items="usuario.grupos"> ${grupo.nome}, </c:each> </td> </tr> </c:foreach> </table>

I18N message: exibe um texto obtido no arquivo de Properties a partir da chave(key) <h1><fmt:message key="app.titulo" /><h1> formatnumber: exibe numero a partir de uma formatação específica <fm:formatnumber value="produto.valor" type="currency"/> formatdate: exibe uma data a partir de uma formatação específica <fmt:formatdate value="produto.data" datestyle="full">

Servlets e JSP Fazendo redirecionamento para jsp Enviando atributos para o jsp Na Servlet: protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String login= request.getparameter("login"); Usuario usuario= usuariocontroller.getusuario(login); request.setattribute("usuario", usuario); } response.sendredirect("usuario.jsp"); Na JSP: <jsp:usebean id="usuario" scope="request" class="model.usuario"> </jsp:usebean> Olá, <jsp:getproperty name="usuario" property="nome"/>.

Implementando o MVC Definir Beans para representar dados Usar Servlets para atender a requisições Servlet lê os parâmetros, verifica se há dados mal-formados ou faltando, etc Popular os Beans O Servlet chama a lógica de negócio para obter os resultados. Estes resultados são colocados nos Beans Armazenar os Beans em um contexto (requisição, sessão ou servlet) O Servlet chama setattribute para colocar o Bean a disposição do resto da aplicação

Implementando o MVC Encaminhar a requisição para um JSP O Servlet indica qual é o JSP apropriado para dar sequência à requisição Extrair os dados dos Beans A página JSP acessa o contexto necessário e usa o jsp:usebean para recuperar os Beans A página JSP não cria nem modifica o Bean; ele meramente extrai os dados e os apresenta

EL: Expression Language

Problemas do MVC O maior problema se encontra no último passo: apresentar os resultados em uma página JSP jsp:usebean e jsp:getproperty São verbosos e difíceis de usar Não podem acessar sub-propriedades dos Beans Elementos de scripting do JSP Pode gerar código difícil de manter Acabam com o propósito do padrão MVC

Problemas do MVC Objetivos da Expression Language Sintaxe mais concisa, sucinta e legível Habilidade para se acessar sub-propriedades Habilidade para acessar coleções

Vantagens da Expression Language Acesso conciso a objetos armazenados Para mostrar o valor de um objeto armazenado em um contexto basta usar ${nome-variavel} Notação simplificada Acesso simplificado para coleção de objetos ${variavel[indice]} Acesso sucinto a parâmetros da requisição e a cookies

Vantagens da Expression Language Conjunto pequeno de operadores Conversão de tipos automática Valore vazios em vez de mensagens de erro NullPointerException mostra um valor vazio em vez de lançar uma exceção

Ativando a Expression Language Suportada apenas em servidores que apóiam o JSP 2.1 ou mais novo Configurar o arquivo JSP 2.x web.xml

Chamando a Expression Language Forma básica: ${expressao} Uma expressão EL pode aparecer tanto no meio do código HTML quanto da tag JSP

Usando somente EL Para não permitir o uso de scripting de JSP, basta alterar o arquivo web.xml

Desvantagens de desabilitar os scripts Dificuldade de se depurar Não é possível redirecionar Não é porque se deve evitar o uso de scriptlets que se deve bani-los

EL acessando variáveis ${nome-variavel} Procura nos seguintes contextos: PageContext, HttpServletRequest, HttpSession e ServletContext, nesta ordem Formas equivalentes ${nome} <%= pagecontext.findattribute("nome") %> <jsp:usebean id="nome" type="umpacote.umaclasse" scope="...">... <%= nome %>

EL exemplo de acesso a variável

EL exemplo de acesso a variável

EL exemplo de acesso a variável

EL acessando propriedades de um Bean ${nomevariavel.nomepropriedade} Formas equivalentes ${cliente.primeironome} <%@ page import="coreservlets.nomebean" %> <% NomeBean pessoa = (NomeBean)pageContext.findAttribute("cliente"); %> <%= cliente.getprimeironome() %>

EL exemplo de acesso a Bean

EL exemplo de acesso a Bean

EL exemplo de acesso a Bean

EL exemplo de acesso a Bean

EL exemplo de acesso a Bean

EL exemplo de acesso a Bean

EL notação com ponto ou como array São notações equivalentes ${nomevariavel.nomepropriedade} ${nomevariavel["nomepropriedade"]}

EL acessando coleções ${nomeatributo[nomeindice]} Funciona como Array: umarray[indice] List: umalista.get(indice) Map: ummapa.get(indice)

EL exemplo de acesso a coleções

EL exemplo de acesso a coleções

EL exemplo de acesso a coleções

EL referenciando objetos implícitos pagecontext ${pagecontext.session.id} Parâmetros de request ${param.custid} Headers de request ${header.accept} Cookies ${cookie.usercookie.value}

EL exemplo de referência a objetos implícitos

EL exemplo de referência a objetos implícitos

EL operadores Aritméticos + - * / % Relacionais == igualdade;!= negação < menor que; > maior que <= menor ou igual; >= maior ou igual Lógicos && and or! not

EL exemplo de operadores

EL exemplo de operadores

EL condicionais ${ teste? expressao1 : expressao2 } Avalia teste Se verdadeiro, executa expressao1 Caso contrário expressao2

EL exemplo de condicionais

EL exemplo de condicionais

EL exemplo de condicionais

EL exemplo de condicionais