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

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

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

Java II. Sérgio Luiz Ruivace Cerqueira

Java Server Pages (JSP)

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

Java para WEB com Struts 2 e Hibernate

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

Desenvolvimento de aplicações Web. Java Server Pages

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Desenvolvimento Web TCC Turma A-1

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

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

JavaScript Fundamental e Servlet Fundamental

Trabalhando com Servlet

Tecnologias Web. Java Enterprise Edition

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs Aplicações dinâmicas para a Web: HTTP porto 80

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

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

Programação Na Web. Servlets: Ciclo de Vida. Agenda. Visão geral sobre ciclo de vida. Nascimento de uma Servlet. Execução de uma Servlet

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Unidade 6: Java Server Pages Prof. Daniel Caetano

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

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

UNIDADE III JAVA SERVER PAGES

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

Java para Desenvolvimento Web

JSP Java Server Pages

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

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

Java para Desenvolvimento Web

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

J550 JavaServer Pages

Java para WEB. Servlets

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

Aula 7: Servlets (II)

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

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

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

Autenticação e Autorização

SERVLETS. Introdução UNIDADED

Notas de Aula 09: Tratamento de exceções

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Introdução. Diretivas. Scriptlets. Expressões. Declarações. JavaServer Page. Comentários. Prof. Enzo Seraphim. Pre-definições

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Formação JAVA Web.

J550 JSP com tags padrão

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

Desenvolvimento Web TCC Turma A-1

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

JSP - JavaServer Pages

João Carlos Pinheiro. Julho / 2004

Material de Apoio Profº Alan Cleber Borim

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

JSP e Servlet Princípio de MVC

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Java na WEB Servlet. Sumário

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

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

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

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Palavras Reservadas da Linguagem Java

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Java para Desenvolvimento Web

JSP (JAVASERVER PAGES)

Genéricos. Profa. Thienne Johnson EACH/USP

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Programação Java. Tratamento de Exceções

Construção de Sites 2. Prof. Christiano Lima Santos

AULA 6 - ARRAYS. Array de 10 elementos

Tratamento de Exceções

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

programação de páginas de conteúdo dinâmico

Classes e Objetos. Sintaxe de classe em Java

TRATAMENTO DE EXCEÇÕES

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

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

PROJETO WEB: Java. Prof Fernando Gomes

Tecnologias para Web

SIST706 Sistemas Distribuídos

Tratamento de Exceções

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Linguagem Java - Introdução

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

Tratamento de Exceções. Java Avançado. Tratamento de Exceções. Conceito de Exceções. Exemplo

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Agilizando o processo de redeploy de aplicações Java

Transcrição:

AULA 08 Sintaxe JSP Prof. André Luis Schwerz andreluis@utfpr.edu.br andreschwerz@gmail.com

Aprenderemos: Elementos de diretiva Diretiva page Diretiva include Elementos de script Scriplets Declarações Expressões Objetivos da Aula

O que são diretivas? Elementos de diretiva São mensagens ao JSP Container, contendo informações de como o container deve traduzir uma página JSP para um servlet correspondente. As diretivas tem a seguinte sintaxe: <%@ directive (attribute = "value")* %> Existem três tipos de diretivas Diretivas de páginas. Diretivas de inclusão. Diretivas de tag de inclusão.

A diretiva Page Sintaxe: <%@ page (attribute = "value")* %> A diretiva page suporta 13 atributos: Atributo Tipo de Valor Language Nome da linguagem de script Info String contenttype Tipo MIME, conjunto de caractere. Extends Nome da classe Import Nome da classe ou nome do pacote Buffer Tamanho do buffer ou false autoflush Booleano Session Booleano isthreadsafe Booleano errorpage URL iserrorpage Booleano pageencoding Conjunto de caractere iselignored Ignora ou avalia as EL Valor Padrão "Java" Depende do Tomcat "text/html;charset=iso-8859-1" Nenhum Nenhum 8192 "true" "true" "true" Nenhum "false" "ISO-8859-1" "false"

A diretiva Page <%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class package.*},..." ] [ session="true false" ] [ buffer="none 8kb sizekb" ] [ autoflush="true false" ] [ isthreadsafe="true false" ] [ info="text" ] [ errorpage="relativeurl" ] [ contenttype="mimetype [ ; charset=characterset ]" "text/html;charset=iso-8859-1"] [ iserrorpage="true false" ] [ pageencoding="characterset ISO-8859-1" ] [ iselignored="true false"] %>

A diretiva Page Uso da diretiva Page: <%@ page buffer = "16384" session="false" %> Multiplas diretivas Page: <%@ page buffer ="16384" %> <%@ page session="false" %> Exemplo ilegal: <%@ page info = "Example Page" %> <%@ page buffer = "16384" %> <%@ page info = "Unrestricted Access" %> Outro exemplo ilegal: <%@ page buffer = "16384" info = "Example Page" buffer = "8192" %>

A diretiva Page Exemplo legal: <%@ page import="java.io.*" info="example Page" %> <%@ page import="java.util.enumeration.*" %> <%@ page import="br.com.sistema.web.fileupload" %> Alternativa: <%@ page import="java.io.*", "java.util.enumeration.*" %>

Definição: Atributo language Este atributo especifica a linguagem usada na página JSP. Por padrão o valor é java. O tomcat aceita somente a linguagem Java. No entanto, outros containers aceitam outras linguagem. Este atributo não tem qualquer influência no servlet gerado. Exemplo: <%@ page language="java" %> <% %> out.println("jsp is Easy");

Definição: Atributo info Permite inserir qualquer string que possa ser recuperada mais tarde, usando o método getservletinfo(); O valor padrão depende do container web. Exemplo: <%@ page info="written by Andre" %> Tradução no servlet: public String getservletinfo(){ } Uso no JSP: return "Written by Andre"; <%@ page info="written by Andre" %> <% %> out.println(getservletinfo());

Atributo contenttype Definição: Define o Multipurpose Internet Mail Extension(MIME) da resposta HTTP enviada ao cliente. O valor padrão é text/html;charset=iso-8859-1 sendo refletido no _jspservice() na tradução para o servlet. (...) PageContext _jspx_page_context = null; try { response.setcontenttype("text/html;charset=iso-8859-1"); pagecontext = _jspxfactory.getpagecontext(this, request, response, null, true, 8192, true); (...)

Definição: Atributo extends Define a classe pai que será herdada pelo servlet gerado. Você deve usar esse atributo com cuidado. Na maioria das vezes esse atributo não deve ser usado.

Definição: Atributo import É usado para importar uma classe ou uma interface, ou todos os membros de um pacote. Semelhante a palavra-chave import em uma classe ou interface Java. Exemplo: <%@ page import="java.io.*" %> <%@ page import="java.util.enumeration.*" %> Tradução: import java.io.*; import java.util.enumeration.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import org.apache.jasper.runtime.*;

Definição: Atributo buffer O tamanho do buffer em kilobytes é usado pelo objeto out para manipular a saída enviada ao cliente a partir da compilação da página JSP. Valor padrão 8kb. Exemplo: Tradução: <%@ page buffer="16kb" %> (...) PageContext _jspx_page_context = null; try { response.setcontenttype("text/html;charset=iso-8859-1"); pagecontext = _jspxfactory.getpagecontext(this, request, response, null, true, 16384, true); (...)

Definição: Atributo autoflush Define se objeto out será automaticamente descarregado caso o buffer esteja cheio. Se autoflush= false e o buffer ficar cheio uma exception é lançada. Exemplo: <%@ page autoflush="false" %>

Definição: Atributo session Por padrão toda página JSP participa do gerenciamento de sessão. Isso é indicado pela declaração de referência a um objeto HttpSession e a sua criação, por meio do getsession da classe PageContext. Se session= false o objeto implicito session não existirá. Exemplo: <%@ page session="false" %>

Definição: Atributo isthreadsafe Se isthreadsafe = false está garantido que o servlet terá acessos simultaneos. Caso contrário, o container web sincroniza as requisições a este servlet de modo que não existe acesso simultâneo. Exemplo: <%@ page isthreadsafe="false" %>

Definição: Atributo errorpage Especifica a página de erro que será exibida, se ocorrer, na página JSP atual, uma exceção não capturada. Exemplo: <%@ page errorpage="errorpage.jsp" %> <% String name = request.getparameter("name"); name.substring(1,1); %>

Definição: Atributo iserrorpage Indica se a página é uma página de erro. Por padrão o atributo tem valor false. Se for uma página de erro poderá ter acesso ao objeto implícito exception. Exemplo: <%@ page iserrorpage="true" %>

Definição: A diretiva include Permite a inclusão do conteúdo de outros arquivos na página JSP atual. Sintaxe: <%@ include file="url" %> Exemplo: <%@ include file="includes/header.html" %> <% out.println("current time:"+calendar.getinstance().gettime()); %> <%@ include file="includes/footer.html" %> header.html <html> <head> <title>welcome</title> </head> <body> </body> </html> footer.html

Elementos de script Elementos de script permitem que você insira o código Java em suas páginas JSP. Há três tipos de elementos de script: Scriptlets Declarações Expressões

Definição: Scriptlets São blocos de código de uma página JSP. Tag de abertura: <%. Tag de fechamento: %>. Exemplo: <% String name = null; if (request.getparameter("name") == null) { %> <%@ include file="error.html" %> <% } else { foo.setname(request.getparameter("name")); if (foo.getname().equalsignorecase("integra")) name = "acura"; if (name.equalsignorecase( "acura" )) { %>

Definição: Expressões As expressões são avaliadas quando a página JSP é solicitada, e seus resultados são convertidos a uma string e alimentam o método print, do objeto implícito out. Tag de abertura <%= Tag de fechamento %> Não é necessário ; ao final de uma expressão. Exemplo: Horário atual:<%= java.util.calendar.getinstance().gettime() %> Uso errado do ; Horário atual:<%= java.util.calendar.getinstance().gettime(); %> Horário Atual: <% out.println(java.util.calendar.getinstance().gettime();); %>

<%= 27 %> <%= ((Math.random()+5)*2); %> <%= "27" %> <%= Math.random() %> <%= String s="foo" %> <%= new String[3] %> <% = 42*20 %> <%= 5>3 %> <%= false %> <%= new Counter() %> Expressões Isso é válido? Verifique se é válido ou não, justificando quando não for.

Expressões Isso é válido? Verifique se é válido ou não, justificando quando não for. <%= 27 %> <%= ((Math.random()+5)*2); %> <%= "27" %> <%= Math.random() %> <%= String s="foo" %> <%= new String[3] %> <% = 42*20 %> <%= 5>3 %> <%= false %> <%= new Counter() %> Todas as literais primitivas valem. O ponto e virgula não pode estar aqui. A String literal é válida OK, o método retorna uma cópia. Não, você não pode declarar um variável aqui. Sim, porque array new String é um objeto e QUALQUER objeto pode ser enviado para uma declaração out.println(). Não, a aritmética está boa, mas há um espaço entre o % e =. OK, exibirá true. OK, literal primitiva. Exibirá o método tostring() do objeto.

Declarações Você precisa criar um JSP que exibe a quantidade de acessos a está página. Exemplo: <html><body> <% int count = 0; %> O contador de página agora é: <%= ++count %> </body></html> Teste este código e verifique se há algum problema.

Declarações O que realmente acontece com o seu código JSP. public class basiccounter_jsp extends SomeSpecialHttpServlet{ public void _jspservice(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException{ <html><body> <% int count = 0; %> O contador de página agora é: <%= ++count %> </body></html> } } PrintWriter out = response.getwriter(); response.setcontenttype("text/html"); out.write("<html><body>"); int count = 0; out.write("o contador de página agora é:"); out.println(++count); out.write("</body></html>"); Todos os códigos do scriptlet e das expressões ficam em um método service. Isto significa que as variáveis declaradas em um scriptlet são sempre variáveis LOCAIS!

Definição: Declarações Permitem que você declare métodos e variáveis que pode ser usadas a partir de qualquer ponto na página JSP. Tag de abertura <%! Tag de fechamento %> Exemplo: <%! String getsystemtime() { return Calendar.getInstance().getTime().toString(); } %> <%@ page import="java.util.calendar" %> <% out.println("current Time: " + getsystemtime()); %> <%! int i; %>

Declarações Voltando ao exemplo anterior. Declaração de variável. public class basiccounter_jsp extends SomeSpecialHttpServlet{ int count = 0; public void _jspservice(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException{ <html><body> <%! int count = 0; %> O contador de página agora é: <%= ++count %> </body></html> } } PrintWriter out = response.getwriter(); response.setcontenttype("text/html"); out.write("<html><body>"); out.write("o contador de página agora é:"); out.println(++count); out.write("</body></html>"); Desta vez, estamos incrementando uma variável de instância em vez de uma variável local.

Declarações Voltando ao exemplo anterior. Declaração de método. <html><body> <%! int doublecount(){ count = count*2; return count; } %> <%! int count = 0; %> O contador de página agora é: <%= ++count %> </body></html> public class basiccounter_jsp extends SomeSpecialHttpServlet{ } int doublecount(){ count = count*2; return count; } int count = 1; public void _jspservice(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException{ } O método permanece idêntico ao JSP. PrintWriter out = response.getwriter(); response.setcontenttype("text/html"); out.write("<html><body>"); out.write("o contador de página agora é:"); out.println(doublecount()); out.write("</body></html>");

Comentários Sintaxe: <%-- comment --%>

Exercício: Exercícios cios Cada um dos trechos vem de um JSP. Seu trabalho será descobrir o que acontecerá quando o Container tentar transformar o JSP num servlet. 1 <html><body> Testando scriptlets... <% int y = 5 + x; %> <% int x = 2 %> </body></html> 3 <html><body> Testando scriptlets... <%! int x = 42; %> <% int x = 22 %> <%=x %> </body></html> 2 <%@ page import="java.util.*" %> <html><body> Testando scriptlets... <% ArrayList list = new ArrayList(); list.add(new String("foo")); %> <%= list.get(0) %> </body></html>

Respostas 1 <html><body> Testando scriptlets... <% int y = 5 + x; %> <% int x = 2 %> </body></html> Não compilará. Seria a mesma coisa que escrever: void foo(){ int y = 5 + x; int x = 2; } 2 3 <%@ page import="java.util.*" %> <html><body> Testando scriptlets... <% ArrayList list = new ArrayList(); list.add(new String("foo")); %> <%= list.get(0) %> </body></html> <html><body> Testando scriptlets... <%! int x = 42; %> <% int x = 22 %> <%=x %> </body></html> Testando scriptlets... foo Sem problemas; exibe o primeiro (e único) objeto da ArrayList. Testando scriptlets... 22 O scriptlet declara uma variável local x (que esconde a variável de instância x), portanto, se você quer exibir a variável de instância x (42), em vez da variável local x (22), mude a expressão para: <%=this.x %>

Ciclo de vida de um JSP 1 Você escreve um arquivo.jsp e o distribui como Parte de uma aplicação. 2 O Container "lê" o web.xml (DD) para esta aplicação, mas não faz mais nada com o arquivo.jsp (até que ele seja solicitado pela primeira vez. Esta aguardando pela solicitação de um cliente

Ciclo de vida de um JSP 3 O cliente clica em um Link que solicita o.jsp 4 O container tenta TRADUZIR o.jsp em código-fonte.java para uma classe servlet. solicita traduz Os erros de sintaxe JSP são detectados nesta fase. gera

Ciclo de vida de um JSP 5 O container tenta COMPILAR o código-fonte.java do servlet em um arquivo.class compila Os erros de linguagem/sintaxe Java são detectados aqui. gera

Ciclo de vida de um JSP 6 O container CARREGA a classe do servlet gerada recentemente. carrega

O objeto agora é um servlet completo, pronto para aceitar as solicitações do cliente. 7 Ciclo de vida de um JSP O Container instância o servlet e faz com que o método jspinit() dele rode. torna-se

Ciclo de vida de um JSP 8 O Container cria uma nova thread para tratar a solicitação deste cliente, e o método _jspservice() do servlet roda. Tudo o que acontece depois disso é simplesmente a rotina normal do servlet para tratamento de solicitações. Por fim, o servlet envia uma resposta de volta para o cliente (ou encaminha a solicitação para outro componente da aplicação.

Importante: Ciclo de vida de um JSP A tradução e a compilação acontecem UMA única vez.