advertisement

jsp-intro

50 %
50 %
advertisement
Information about jsp-intro

Published on January 24, 2008

Author: kyrios

Source: slideshare.net

Description

Introdução a JSP
advertisement

JSP básico

Programa 1. Minha Primeira Página JSP 2. Sintaxe de JSP 3. Ciclo de vida de página JSP 4. Diretivas 5. Ações 6. Variáveis implícitas 7. Configuração de uma página JSP 2

Pré-requisitos  Servlet 3

Minha primeira página JSP Um simples contador [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp01/]

O que é JSP?  JavaServer Page = JSP  Tecnologia  Combina HTML/XML e Java  Objetivo: retornar conteúdo dinâmico para um cliente  Não há JSP sem servlets 5

contador.jsp <html> <body> <%@ page language=quot;javaquot; %> <%! int contador = 0; %> <% contador++; %> Esta é a requisição de número <%= contador %> que está sendo atendida. </body> </html> 6

Resultado  Após algumas requisições... 7

Sintaxe de JSP

Elementos de uma página JSP  Diretiva <%@ diretivas %>  Declaração <%! declaração em Java %>  Scriptlet <% código em Java %>  Expressão <%= expressão em Java %>  Ação <jsp:acaoNome />  Comentário <%-- Qualquer texto --%> 9

<%@ diretiva %>  Fornece informação geral acerca da página JSP  Tipos: page, include, taglib  <%@ page language=“java” %> Informa que Java é usada como linguagem de script  <%@ include file=“copyright.html” %> Conteúdo do arquivo inserido na página corrente  <%@ taglib prefix=“teste” uri=“taglib.tld” %> Associa prefixo a uma biblioteca de tags 10

<%! declaração %>  Declara e define variáveis e métodos  <%! int contador = 0; %> Define a variável contador com valor inicial 0  Isto é feito uma única vez por página  O valor é mantido em chamadas posteriores  <%! String str = “ Funciona mesmo! “; String getStr() { return str.trim(); } %> Declara str e o método getStr(). 11

<% scriptlets %>  Código em Java embutido em página JSP  <% contador = contador + 1; %> Adiciona um ao valor de contador  Toda vez que se tem acesso à página o código em Java é executado  <% out.print(“<html><body>”); out.print(“Bem-vindo ao curso JSP”); out.print(“</body></html>”); %> Gera página HTML de boas-vindas ao curso. 12

<%= expressão %>  Representa expressão em Java  <%= contador %> É substituído pelo valor da variável  Uma expressão é avaliada toda vez que se tem acesso à página  <%= 28 %> Valor 28  <%= 27.5 * salario / 100 %> 27.5% do salário  <%= str.length() %> Tamanho da string 13

<jsp:acao atributos />  Comandos enviado para a máquina JSP  <jsp:include page=“copyright.jsp” /> Inclua a saída de copyright.jsp nesta página  Forma geral <jsp:acaoNome atributos />  Ações padrão  jsp:include  jsp:forward  jsp:useBean  jsp:setProperty  jsp:getProperty  jsp:plugin 14

<%-- comentário --%>  <%-- Confirmar com Fulano --%> Comentários não afetam a saída da página  Observe a página JSP abaixo... <html><body> <!-- Comentário em HTML --> <%-- Comentário em JSP --%> <h1>Funciona ambos</h1> </body></html> Comentário em HTML e JSP podem coexistir em uma mesma página 15

Ciclo de vida de página JSP [jsp01.zip] [jsp02.zip]

Página JSP é um Servlet  Toda página JSP é executada por um servlet  Seqüência  Máquina JSP gera arquivo Java correspondente à página JSP (este arquivo é um Servlet)  Máquina JSP compila o Servlet gerado  Máquina JSP carrega em memória o Servlet  Máquina JSP executa o Servlet como qualquer outro  Saída é enviada para o cliente 17

Resumo 1. JSP é convertida para Servlet 2. Servlet é compilado 3. Servlet é carregado 4. Aguarda requisição  Em conseqüência,...  A primeira vez que uma página JSP é requisitada a resposta é “lenta”, comparada com as demais. Após a primeira vez,...  Máquina compara data de criação da página e do Servlet correspondente gerado. O processo é refeito apenas quando o fonte é mais recente. 18

Fases do ciclo de vida de página JSP  Tradução Servlet correspondente é gerado da página JSP  Compilação Servlet gerado é compilado  Carga Classe compilada é carregada  Instanciação Instância do Servlet é criada  jspInit() Método chamado antes de qualquer outro  _jspService() Método chamado para cada requisição  jspDestroy() Chamado quando contêiner decide remover Servlet 19

Compilação  Servlets gerados/compilados (Tomcat)  %CATALINA_HOME%workCatalinalocalhost  Executa compilador (reduzir tempo de resposta)  http://localhost:8080/app/p.jsp?jsp_precompile=true  Parâmetros com prefixo jsp são reservados  Prática  Antes de qualquer requisição a uma página JSP, logo após início do contêiner, verifique que não há arquivo gerado  Faça uso da URL ilustrada acima (verifique o resultado)  Consulte o conteúdo do arquivo gerado pelo compilador sem fazer requisições à página 20

Contador “persistente”  Problema O contador do primeiro exemplo (jsp01) não “guarda” os valores entre execuções da aplicação. Reescreva-o para persistir o valor do contador entre execuções distintas.  Solução  Guardar o valor do contador em meio estável (arquivo) [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp02/] 21

contador.jsp (jsp02) (parte 1/6)  “Esqueleto” <html> <body> <%-- diretivas omitidas --%> <%-- declarações omitidas --%> <%-- scriptlet omitido --%> Esta é a requisição de número <%= contador %> que está sendo atendida. </body> </html> 22

contador.jsp (jsp02) (parte 2/6)  “Esqueleto” anterior sugere que precisamos:  contador (declaração)  Iniciar este contador com valor armazenado em arquivo. Caso seja a primeira vez então criar arquivo com valor 0 (jspInit())  Precisamos criar arquivo com valor fornecido  Precisamos carregar valor de arquivo  Ao fechar o Servlet, enviar contador para arquivo (jspDestroy())  Todos os elementos acima podem ser colocados em uma <%! declaração %> 23

contador.jsp (jsp02) (parte 3/6) public void jspInit() { try { ServletContext sc = getServletContext(); contadorArq = sc.getRealPath(quot;/WEB-INF/contador.dbquot;); if (!new File(contadorArq).exists()) sendInt(0); contador = getInt(); } catch (Exception e) { log(quot;Erro ao ler arquivo de contadorquot;, e); } } public void jspDestroy() { try { sendInt(contador); } catch (Exception e) { log(quot;Erro ao salvar arquivo de contadorquot;, e); } } 24

contador.jsp (jsp02) (parte 4/6) public void sendInt(int v) throws Exception { FileOutputStream fos = new FileOutputStream(contadorArq); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(v); dos.close(); } public int getInt() throws Exception { FileInputStream fis = new FileInputStream(contadorArq); DataInputStream dis = new DataInputStream(fis); contador = dis.readInt(); dis.close(); return contador; } 25

contador.jsp (jsp02) (parte 5/6)  Declaração resumida <%! int contador = 0; String contadorArq = null; // corpos dos métodos omitidos public void jspInit() {} public void jspDestroy() {} public void sendInt(int v) throws Exception {} public int getInt() throws Exception {} %> 26

contador.jsp (jsp02) (parte 6/6) Diretivas omitidas <%@ page language=quot;javaquot; %> <%@ page import=quot;java.io.*quot; %>  Indicam que script será em Java  Requisita a importação do pacote indicado (serviços de I/O serão usados) Scriptlet omitido (executado a cada requisição) <% contador++; %> 27

Resultado após várias requisições (jsp02) Este resultado foi obtido mesmo após várias interrupções e reinícios do Tomcat. 28

Diretivas

<%@ diretiva %>  page (alguns atributos)  import  session  errorPage  isErrorPage  language  extends  buffer  autoFlush  contentType  pageEncoding Vejamos exemplos de alguns deles... 30

horacorrente.jsp (jsp03) <html> <body> <%@ page language=quot;javaquot; %> <%@ page import=quot;java.io.*quot; %> <%@ page import=quot;java.text.*quot; %> <%@ page import=quot;java.util.*quot; %> <%! String data; %> <% Locale l = new Locale(quot;ptquot;, quot;BRquot;); DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL, l); data = df.format(new Date()); %> Hora corrente no servidor: <%= data %>. </body> </html> O que está em azul é executado em toda requisição à página. Uma versão alternativa é ... [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp03/] 31

horacorrente.jsp (jsp04) <html> <body> <%@ page language=quot;javaquot; %> <%@ page import=quot;java.text.*quot; %> <%@ page import=quot;java.util.*quot; %> <%! DateFormat df = null; %> <%! public void jspInit() { Locale l = new Locale(quot;ptquot;, quot;BRquot;); df = DateFormat.getTimeInstance(DateFormat.FULL, l); } %> Hora corrente no servidor: <%= df.format(new Date()) %>. </body> </html> Menos operações serão executadas para cada requisição. Há, por outro lado, memória ocupada pelo objeto DateFormat. [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp04/] 32

Resultado [jsp04.zip] 33

Mais duas diretivas (jsp05)  excecao.jsp <%@ page errorPage=quot;DivisaoPorZero.jspquot; %> <html><body> <%= 4 / 0 %> </body></html>  DivisaoPorZero.jsp (pode ter nome melhor: TrataExcecao.jsp) <%@ page isErrorPage=quot;truequot; %> <html><body> <h2>Não foi possível executar sua requisição.</h2> Exceção gerada em <%= new java.util.Date().toString() %> <br><br><%= exception.getMessage() %> </body></html> exception é uma variável implícita, veremos mais adiante. [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp05/] 34

Resultado (jsp05) 35

<%@ page info=“info” %> (jsp06) <%@ page info=quot;Copyright (c) 2006 by Fábio Lucenaquot; %> <html> <body> <%= getServletInfo() %> </body> </html> [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp06/] 36

Ações

Cabeçalho e rodapé  Página JSP (pagina.jsp) <html> <body> <jsp:include page=“/WEB-INF/jsp/cabecalho.jspquot; /> Este é o corpo da minha página. <br>Cabeçalho e rodapé padronizados. <jsp:include page=quot;/WEB-INF/jsp/rodape.jspquot; /> </body> </html>  Página JSP (cabecalho.jsp) Cabeçalho <hr>  Página JSP (rodape.jsp) <hr> Obtido em <%= new java.util.Date() %> [http://exemplos.googlecode.com/svn/trunk/scwcd/jsp07/] 38

Resultado (jsp07) 39

Variáveis implícitas

Variáveis implícitas  application  javax.servlet.ServletContext  session  javax.servlet.http.HttpSession  request  javax.servlet.http.HttpServletRequest  response  javax.servlet.http.HttpServletResponse  out  javax.servlet.jsp.JspWriter (saída da página)  page  java.lang.Object (instância do servlet referente à página)  pageContext  javax.servlet.jsp.PageContext (ambiente da página)  config  javax.servlet.ServletConfig  exception  java.lang.Throwable 41

Exemplos [jsp08.zip]  Identidades  <%= application %>  <%= getServletContext() %>  Formas de se obter a sessão  <%= session %>  <%= request.getSession() %>  Servlet path (/vars.jsp)  <%= request.getServletPath() %>  Servlet name  <%= ((HttpServlet) page).getServletName() %> 42

Resultado [jsp08.zip] Observe igualdades! 43

+ 1 exemplo [jsp09.zip]  endereco.jsp <html> <body> A requisição desta página partiu do endereço IP <%= request.getRemoteAddr() %>. </body> </html>  Resultado Se você estiver executando o tomcat localmente, provavelmente o endereço será 127.0.0.1 44

Forward/include [jsp10.zip]  Problema  Aplicação que responde por default em /jsp10 (index.jsp)  Uma página (pagina.jsp) deverá consultar o parâmetro “use”. Se o argumento é “include”, então inclua “inclusao.jsp”. Caso contrário, redirecione para “redireciona.jsp”. Se nenhum argumento é fornecido, então redirecione para arg.jsp. 45

index.jsp [jsp10.zip] <html> <body> <h3>index.jsp</h3> <ul> <li><a href=quot;pagina.jsp?use=includequot;>Include</a> <li><a href=quot;pagina.jsp?use=forwardquot;>Forward</a> <li><a href=quot;pagina.jspquot;>pagina.jsp</a> </ul> </body> </html> 46

pagina.jsp [jsp10.zip] <html> <body> <h3>pagina.jsp</h3> <% if (request.getParameter(quot;usequot;) == null) { pageContext.forward(quot;arg.jspquot;); return; } if (request.getParameter(quot;usequot;).equals(quot;includequot;)) pageContext.include(quot;inclusao.jspquot;); else pageContext.forward(quot;redireciona.jspquot;); %> </body> </html> 47

arg.jsp [jsp10.zip] <html> <body> <h3>arg.jsp</h3> <ul> <li><a href=quot;pagina.jsp?use=includequot;>Include</a> <li><a href=quot;pagina.jsp?use=forwardquot;>Forward</a> </ul> </body> </html> 48

inclusao.jsp [jsp10.zip] <%@ page import=quot;java.util.Datequot; %> Inclui informações ao que já está sendo gerado. <br>Gerado em <%= new Date() %> <br>Vá para <a href=quot;pagina.jspquot;>pagina.jsp</a>. 49

redireciona.jsp [jsp10.zip] <html> <body> <h3>redirecionada.jsp</h3> Vá para <a href=quot;pagina.jspquot;>pagina.jsp</a>. </body> </html> 50

Configuração de uma página JSP

Parâmetros (web.xml) [jsp11.zip] <servlet> <servlet-name>Jsp11Exemplo</servlet-name> <jsp-file>/WEB-INF/jsp/jsp11.jsp</jsp-file> Em vez de servlet-class <init-param> <param-name>cor</param-name> <param-value>azul</param-value> </init-param> <init-param> <param-name>estado</param-name> <param-value>Goiás</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Jsp11Exemplo</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> Referência não é WEB-INF/classes 52

jsp11.jsp [jsp11.zip] <html> <body> <b>Nome:</b> <%= getServletName() %> <br><b>Cor</b>: <%= config.getInitParameter(quot;corquot;) %> <br><b>Estado</b>: <%= config.getInitParameter(quot;estadoquot;) %> </body> </html> 53

Resultado (jsp11) 54

Add a comment

Related pages

JSP Intro and Overview - Java Programming: Tutorials ...

Higher-Level Alternative: JSF 2 • Servlets and JSP – Well-established standard – Used by google.com, ebay.com, walmart.com, and thousands of other ...
Read more

Introduction to JavaServer Pages - Al Gulland

Introduction to JavaServer Pages Objective. The objective of this section is to introduce the JavaServer Page technology. JavaServer Pages. So just what ...
Read more

JavaSketchpad introduction - Fakultät für Mathematik ...

Basics Abbreviations: JSP = JavaSketchpad, GSP = The Geometer's Sketchpad • JavaSketchpad is an applet that displays geometry in dragging mode ...
Read more

Die Gewinner beim großen EDEKA Feinschmecker-Test

EDEKA gratuliert allen glücklichen Gewinnern beim großen EDEKA Feinschmecker-Test!
Read more

EDEKA - Wir lieben Lebensmittel

Willkommen bei EDEKA.de: Hier finden Sie unsere Wochen-Angebote in Ihrem EDEKA-Markt. Außerdem: Rezepte, Ernährungsthemen, Gewinnspiele und mehr entdecken!
Read more

联系我们 - 汉皇集团

汉皇集团位于中国金融中心,中国现代化国际之都上海。从事外籍模特引进,中外籍模特培训,中外籍模特经纪 ...
Read more

Intro to Programming in JAVA & JSP by Surk Park on Prezi

Transcript of Intro to Programming in JAVA & JSP. Intro to Programming JAVA & JSP Early Fall , 2012 beginners: ...
Read more

Exercises: JSP Intro - Java Programming: Tutorials ...

Exercises: JSP Intro 1. Make a new Eclipse project, grab OrderConfirmation.jsp from the “jsp-intro” proj-
Read more

Global Database on Body Mass Index - WHO | World Health ...

Global Database on Body Mass Index an interactive surveillance tool for monitoring nutrition transition The global epidemic of overweight and obesity ...
Read more

中央造幣廠-全球資訊網站

您是第 蒞臨本站: 中央造幣廠地址:桃園市龜山區33353振興路577號: No.577, Jhensing Rd., Gueishan Dist., Taoyuan City 33353, Taiwan(R ...
Read more