1 / 41

Desenvolvimento de Projetos e Aplicações Web

Desenvolvimento de Projetos e Aplicações Web. cecafac@gmail.com. JSP. Conteúdo. Introdução Arquitetura e funcionamento Sintaxe Elementos. JavaServer Pages. Tecnologia Java para criação de aplicações Web com conteúdo dinâmico como HTML e XML

Download Presentation

Desenvolvimento de Projetos e Aplicações Web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desenvolvimento de Projetos e Aplicações Web cecafac@gmail.com

  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> &nbsp; </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 <%@ 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> &nbsp; </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. JSP já traduzido em servlet ? Traduz JSP em Servlet JSP foi modificado ? Compila o Servlet Carrega o Servlet Executar o Servlet Mecanismo (Funcionamento) Servidor Web Não Sim GET, POST Sim Não HTTP RESPONSE

  10. Sintaxe JSP

  11. Elementos JSP • 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

  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: <%@ directiveTypeattribute= =“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 diretiva @include • 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<%@page 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=“http://www.company.com/tags”prefix=“public” %> ... <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 aout.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 de @page 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: http://servidor/programa.jsp?nome=Fulano&id=5 • 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

More Related