A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Projetos e Aplicações Web

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Projetos e Aplicações Web"— Transcrição da apresentação:

1 Desenvolvimento de Projetos e Aplicações Web

2 JSP

3 Conteúdo Introdução Arquitetura e funcionamento Sintaxe Elementos

4 JavaServer Pages Tecnologia Java para criação de aplicações Web com conteúdo dinâmico como HTML e XML JSP Permite separação de conteúdo dinâmico e estático JSP Suporta scripting e tags

5 Arquitetura JavaServer Pages
Atua como a camada Web de acesso a aplicações n-tier Utiliza o protocolo HTTP para comunicação com browsers Requisições JSP são atendidas por servlets

6 Hello World <%@ page info="a hello world example" %>
<html><head> <title>Hello, World</title> </head> <body bgcolor="#ffffff“ background="back.gif"> <table><tr><td width=150>   </td> <td width=250 align=right> <h1> <%System.out.println(“Hello, World!”); %> </h1> </td></tr> </table></body></html>

7 Modelo de Requisições JSP Engine Request Response
page info="a hello world example" %> <html><head><title>Hello, World</title></head> <body bgcolor="#ffffff“ background="back.gif"> include file="dukebanner.html" %> <table><tr><td width=150>   </td> <td width=250 align=right> <h1>Hello, World!</h1> </td></tr> </table></body></html> Request Response

8 JSP Engine O JSPEngine é um software para:
Atender requisições de páginas JSP Transformar uma página JSP requisitada em um servlet Executar o servlet para atender as requisições JSP correspondentes Pode ser acoplado a um servidor web ou a um servidor de aplicações

9 Mecanismo (Funcionamento)
Servidor Web JSP já traduzido em servlet ? Não Traduz JSP em Servlet Sim GET, POST JSP foi modificado ? Sim Compila o Servlet Não Carrega o Servlet Executar o Servlet HTTP RESPONSE

10 Sintaxe JSP

11 Elementos JSP Organizados em 4 grupos: Tags especiais
Interpretados no servidor (não chegam ao browser) Organizados em 4 grupos: Comentários Diretivas e Taglibs Scripting Elements Expressões, Declarações e Scriptlets Ações

12 Elementos JSP <%@ ... %> <%! ... %> <%= ... %>
Tag Diretivas ... %> Declarações <%! ... %> Expressões <%= ... %> Scriptlets <% ... %> Comentários <% %> Custom Tags <prefixo:elemento ... />

13 Comentários Utilizados para comentar o código
Não são processados pelo container JSP Sintaxe: <%-- Este é um comentário --%> <%//Este é outro comentário %>

14 Diretivas Utilizadas para enviar mensagens para o container JSP, afetando a estrutura do Servlet a ser gerado. Sintaxe: directiveType attribute= =“valor” %> directiveType: {include, page e taglib} Include e Page

15 Diretivas – Include Utilizado para incluir arquivos estáticos no documento JSP Sintaxe JSP: include file=“URL” %> Exemplos include file=“Reverso.jsp” %> Topo, base, miolo, etc.

16 Diretivas – page Utilizado para descrever inúmeros atributos que serão considerados durante a criação do Servlet, tais como Importação de pacotes; Tipo de conteúdo; Retorno; Etc. Sintaxe JSP: page attribute=“valor” %>

17 Diretivas – page Define características válidas para toda a página JSP e qualquer trecho de página incluída com a Pode ser usada mais de uma vez na mesma página

18 Diretivas – page Cada opção só pode aparecer uma vez na página, exceção feita à opção import Embora possa ser colocada em qualquer lugar da página, é recomendável colocá-la no início do arquivo JSP

19 Diretivas – page Atributos de attribute=“valor”%>

20 import Pacotes/classes que serão utilizados no JSP
Deve aparecer antes de referenciar a classe Pode-se separar pacotes por vírgula ou utilizar a opção import várias vezes page import=“java.io.*, java.util.*” %>

21 session session = true|false
Quando true, a página utilizará o recurso de sessão HTTP e um objeto implícito session deverá estar disponível para a página JSP Quando false, a página não utilizará o recurso de sessão HTTP e qualquer referência ao objeto implícito session causará um erro em tempo de tradução

22 Tag Extensions Permite criação de tags personalizadas
Cada tag deve possuir uma classe Java que implementa sua funcionalidade Propósitos diversos: Manipulação de XML; Acesso a BD; IO;... Sintaxe: taglib uri=“URIForLibrary” prefix=“tagPrefix” %>

23 Taglibs - Exemplo taglib uri=“ %> ... <public:loop> .... </public:loop>

24 Scripting

25 Elementos de Scripting
São fragmentos de código java inseridos em uma página JSP Declarações de variáveis, blocos de códigos, etc Subdividem-se em três categorias: Expressões Declarações Scriptlets

26 Declarações Declarar variáveis e métodos usados nos Scriptlets e expressões Sintaxe: <%! ... %> Exemplos: <%! int i = 0; %> <%! public String title() { return “A”;}; %> <%! public final static String[] meses = {"jan","fev","mar","abr","mai","jun"}; %> <%! public static String getMesAtual() { Calendar c = new GregorianCalendar(); return meses[c.get(Calendar.MONTH)]; } %>

27 Declarações – Exemplo <html><head><title>Declarações JSP </title></head> <BODY> <H1>Declarações JSP</H1> <%! private int contadorAcessos=0; %> <H2>Número de acessos a essa página desde reboot do server: <%= ++contadorAcessos %> </H2> </body></html>

28 Scriptlets Fragmentos de código Java Sintaxe: <% ... %> Exemplo:
for(int i=0; i<100; i++) out.println(i); %>

29 Scriptlets Se quisermos que alguma saída apareça na página HTML resultante, devemos usar o out <% String queryData = request.getQueryString(); out.println(“Query String: " + queryData); %>

30 Scriptlets O código dentro de um scriptlet é inserido na página exatamente como escrito e qualquer HTML estático antes ou depois de um scriptlet é convertido em comandos print Por exemplo, o seguinte código contém texto e scriptlets: <% if (Math.random() < 0.5) { %> <B>Bom</B> dia! <% } else { %> <B>Mau</B> dia! <% } %> Será convertido (no servlet) para: if (Math.random() < 0.5) { out.println("Have a <B>nice</B> day!"); } else { out.println("Have a <B>lousy</B> day!"); }

31 Expressões Expressões enviadas diretamente ao output stream corrente
Insere o valor de um atributo ou chamada de método em página JSP Sintaxe: <%= expressão %> (sem o ;) Equivale a out.print(expressão), portanto, expressão não pode terminar em ; Exemplo: <%= new Date() %> Apenas uma expressão Java

32 Exemplo <HTML> <BODY> <%// Isso é um scriptlet.
// Note que a variável “hoje"     // é declarada aqui e usada na expressão mais adiante   out.println( “Data atual");   java.util.Date hoje = new java.util.Date(); %> <b>Olá, hoje é <%= hoje %></b> </BODY> </HTML>

33 Objetos implícitos Objetos disponíveis nas páginas JSP sem a necessidade de declaração Exceto session que depende para ser ativado/desativado Cada objeto implícito tem uma classe ou interface definida na API de Java out, request, response, session,...

34 Objetos implícitos: request
Representa a requisição que causou a chamada do serviço Disponibiliza informações sobre os parâmetros passados pela requisição: tipo (GET, POST); headers (cookies) Objeto da classe HttpServletRequest

35 Objetos implícitos: request - Exemplos
URL no browser: Recuperação dos parâmetros no JSP: <% String nome = request.getParameter("nome"); String idStr = request.getParameter("id"); int id = Integer.parseInt(idStr); %> <p>Bom dia <%=nome %>! (cod: <%=id %>) Cookies Cookie[] c = request.getCookies()

36 Objetos implícitos: response
Representa a resposta enviada à requisição que causou o serviço Permite a atribuição de valores para o cabeçalho da resposta, criação de cookies, definição de parâmetros, etc.

37 Objetos implícitos: session
Sessão estabelecida entre o cliente e o servidor Armazena informações que persistem por tempo determinado, podendo ser acessadas através de diversas páginas e requisições ao servidor

38 Objetos implícitos: session
A sessão tem uma relação direta com o browser, isto é, duas janelas de um browser compartilham a mesma sessão A maneira como as sessões são mantidas depende do JSP Engine

39 Objetos implícitos: out
Output stream para escrita da resposta no cliente Disponibiliza uma série de métodos para a escrita e controle do buffer de saída da página de resposta

40 Objetos implícitos: out
Equivalente a response.getWriter(); Principais métodos print() e println() Os trechos de código abaixo são equivalentes <% for (int i = 0; i < 10; i++) { out.print("<p> Linha " + i); } %> OU <% for (int i = 0; i < 10; i++) { %> <p> Linha <%= i %> <% } %>

41 Referências Deitel, capítulo 27


Carregar ppt "Desenvolvimento de Projetos e Aplicações Web"

Apresentações semelhantes


Anúncios Google