• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
54
0
0

Texto

(1)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(2)

▼ É uma página HTML com trechos de

programa Java embutidos

▼ Simplificam a geração de conteúdo

dinâmico para Web Designers

▼ A página JSP é automaticamente

transformada em servlet

▼ Permite o desenvolvimento de

aplicações do lado do servidor

▼ Baseado em Java:

– Reutilização de componentes

– Vantagens do Java (segurança,

portabilidade, ...)

(3)

JSP versus ASP (ou PHP)

▼ JSPs são interpretados apenas uma

vez (traduzidos para byte-code) e reinterpretados somente quando o arquivo é modificado, o que

possibilita melhor desempenho na média

▼ JSPs executam nos principais

servidores Web

▼ JSPs permitem melhor separação

entre código e dados através de

(4)

JSP versus CGI

▼ JSP mantém estado no servidor

entre sessões

Cria uma nova thread para cada

requisição

▼ Não precisa ser carregado toda

vez, depois de iniciado

▼ Executa em uma JVM previamente

carregada como uma extensão de um servidor Web

(5)

JSP - JavaServer Pages

▼ JSP é uma tecnologia que permite a

criação de páginas web que exibem um conteúdo dinâmico.

▼ Uma página JSP usa tags XML e

scripts escritos em Java para encapsular a lógica que gera o conteúdo exibido pela página.

– JSP sem entrada de dados

(6)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(7)

Tipos de Diretivas

▼ Existem três tipos de diretivas JSP:

page, para importação de classes,

alteração do tipo do conteúdo, etc.

include, para inclusão de arquivos

durante a execução do JSP

taglib, para definição de tags

próprias usadas em bibliotecas de tags

(8)

Diretiva page

Atributo import

– Usado para importar classes para o servlet gerado pelo JSP

– Pode aparecer várias vezes no JSP – Exemplo:

<%@page import = “java.util.*” %>

Atributo contentType

– Usado para alterar o formato MIME ou o CHARSET do texto de saída

– Exemplo:

(9)

Diretiva page

Atributo isThreadSafe

– Controla o uso de múltiplas threads no servlet gerado

– O padrão é usar mútithread (true) – Exemplo:

<%@page isThreadSate=“false”%>

Atributo session

– Indica se a página em questão faz parte de uma sessão sendo que o seu valor

padrão é true – Exemplo

(10)

Diretiva page

Atributo buffer

– Indica o uso e tamanho do buffer usado pela variável out.

– Exemplo:

<%@page buffer = “32kb”%>

Atributo autoflush

– Controa o comportamento do buffer quando ele estiver cheio: true executa um “flush” automática e false gera uma exceção

– Exemplo:

(11)

Diretiva page

Atributo extends

– Altera a superclasse do servlet gerado – Exemplo:

<%@page extends=“MeuServ.class”%>

Atributo info

– Define a string de descrição do servlet gerado que é retornada pelo método getServletInfo()

– Exemplo:

(12)

Diretiva page

Atributo errorPage

– Indica o nome da página que deve ser mostrada em caso de erro

– Exemplo:

<%@page errorPage=“URL relativa”%>

Atributo isErrorPage

– Indica se a página atual pode ser usada como página de erro

– O valor padrão deste atributo é false – Exemplo:

(13)

Diretiva include

▼ Usada para incluir outros arquivos em  páginas JSP ▼ A diretiva deve aparecer no ponto em que  o arquivo será incluído ▼ Inclusão em tempo de compilação:    <jsp:include page=“URL relativa”       flush=“true”%> ▼ Inclusão em tempo de compilação: <%@include file=“URL relativa”%>

(14)

Diretiva plugin

▼ Permite a inclusão de outras

classes Java em JSP, como applets e beans

▼ Tem uma sintaxe semelhante a da

tag applet do HTML

▼ Exemplo:

▼ <jsp:plugin type=“applet”

code=“Dados.class” width=“200” height=“100”> </jsp:plugin>

(15)

JavaServer Page

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

(16)

Adicionando Scripts ao JSP

▼ Os Scripts são trechos de código

embutidos no código HTML do JSP.

▼ Não são Java Scripts. Os scripts em uma

página JSP são interpretados no servidor.

▼ As declarações são usadas para definir

trechos de código inseridos em uma página JSP.

▼ Podem ser inseridos em uma página

HTML <% %>

(17)

JSP sem entrada de dados

<%@page import="java.util.Random"%>

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"

<html>   <head>

      <meta http­equiv="Content­Type" content="text/html; charset=UTF­8">

   <title>JSP PAGE</title>   </head>   <body>    <%     Random rd = new Random();     for(int i=0;i<6; i++){        out.println(rd.nextInt(60)+" ");     }    %>   </body> </html>

(18)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(19)

Expressões

▼ Usadas para inserir valores

diretamente na saída

▼ A expressão é avaliada, convertida

para string e inserida na página

▼ Sintaxe:

<%= expressão java %>

▼ As expressões podem ser qualquer

comando Java que retorne valor

▼ Exemplo:

(20)

JSP sem entrada de dados

<%@page import="java.util.Date"%>

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"

<html>   <head>

      <meta http­equiv="Content­Type" content="text/html; charset=UTF­8">

   <title>JSP PAGE</title>   </head>   <body>    Data: <%= new Date()%><br />    Hostname: <%= request.getRemoteHost()%><br />    Session ID: <%= session.getId() %><br />   </body> </html>

(21)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(22)

Declarações

▼ Permitem a declaração de variáveis e

métodos em uma página

▼ Úteis para declarar:

– Variáveis e métodos de instância

(pertencentes ao servlet)

– variáveis e métodos estáticos

(pertencentes à classe do servlet)

– Classes internas (estáticas e de

(23)

Declarações

▼ jspInit() e jspDestroy() permitem maior

controle sobre o ciclo de vida do servlet

▼ Inicialização da página (chamado uma

vez, antes da primeira requisição, após o instanciamento do servlet)

<%!public void jspInit() { ... } %>

▼ Destruição da página (ocorre quando o

servlet deixa a memória)

(24)

JSP sem entrada de dados

<%@page import="java.util.Calendar"%>

<%@page import="java.util.GregorianCalendar"%>

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"

<html>   <head>

      <meta http­equiv="Content­Type" content="text/html; charset=UTF­8">

   <title>JSP PAGE</title>   </head>   <body>       <%! public final static String[] meses =        {"jan", "fev", "mar", "abr", "mai", "jun"};       %>       <%! public static String getMes() {       Calendar cal = new GregorianCalendar();       return meses[cal.get(java.util.Calendar.MONTH)];       }%>       <%= getMes() %>   </body> </html>

(25)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(26)

Comentários

▼ Comentários HTML

<!-- --> não servem para comentar JSP

▼ Comentários JSP

– Podem ser usados para comentar

blocos JSP

(27)

JavaServer Page

Prof. Enzo Seraphim

Scriptlets Diretivas Introdução Expressões Declarações Comentários Pre-definições

(28)

Objetos JSP pre-definidos

request – javax.servlet.ServletRequest ▼ response – javax.servlet.ServletResponse ▼ out – javax.servlet.jsp.JspWriter ▼ session – javax.servlet.http.HttpSession ▼ pageContext – javax.servlet.jsp.PageContext ▼ application – javax.servlet.servletContext ▼ config – javax.servlet.ServletConfig ▼ page – java.lang.Object ▼ exception – java.lang.Throwable

(29)

Request

▼ Comandos get - recuperar de

dados ▼ Métodos Principais – getCookies – getAuthType – getQueryString – getHeader – getHeaderNames – getServerName – getServerPort

(30)

Request

▼ Métodos Principais – getProtocol – getRequestURI – getMethod – getPathInfo – getPathTranslated – getServletPath – getContentLength – getContenType

(31)

Objetos JSP pre-definidos

▼ request – javax.servlet.ServletRequest ▼ response – javax.servlet.ServletResponse ▼ out – javax.servlet.jsp.JspWriter ▼ session – javax.servlet.http.HttpSession ▼ pageContext – javax.servlet.jsp.PageContext ▼ application – javax.servlet.servletContext ▼ config – javax.servlet.ServletConfig ▼ page – java.lang.Object ▼ exception – java.lang.Throwable

(32)

Response

▼ Comandos set - enviar dados

▼ Métodos Principais – addCookie – setContenLength – setContentType – setStatus – setHeader – sendError – sendRedirect

(33)

Cookies

▼ Arquivos texto gravados no cliente

▼ Surgiram no Netscape para

guardar informações persistentes

▼ Somente acessados apenas pelo

domínio que os criou

▼ Podem ser desabilitados pelo

usuário (privacidade)

▼ Usos: Identificação de usuários,

senhas, Customização de sites, Propaganda dirigida, sessões

(34)

Cookies

▼ Para criar cookies:

– Criar objeto da classe Cookie com o

nome da informação e seu conteúdo

– Definir tempo de persistência

– Enviar o objeto para o cliente

▼ Para ler cookies:

– O objeto request contem todos os

(35)

Criação de Cookies

▼ Nome e valor não podem conter: [ ]

( ) = , “ / ? @ : ;

▼ O método setMaxAge define

quantos segundos durará o cookie após o termino da seção

▼ Exemplo:

Cookie c=new Cookie("nome","val"); c.setMaxAge(3600);

(36)

Leitura de Cookies

▼ Exemplo:

Cookie c[]= request.getCookies(); for (int i = 0; i < c.length; i++){

String nome = c[i].getName(); String valor = c[i].getValue(); }

(37)

Objetos JSP pre-definidos

▼ request – javax.servlet.ServletRequest ▼ response – javax.servlet.ServletResponse ▼ out – javax.servlet.jsp.JspWriter ▼ session – javax.servlet.http.HttpSession ▼ pageContext – javax.servlet.jsp.PageContext ▼ application – javax.servlet.servletContext ▼ config – javax.servlet.ServletConfig ▼ page – java.lang.Object ▼ exception – java.lang.Throwable

(38)

▼ Utilizado para escrever

informações no browser.

– void print(Object dados)

• Escreve dados no browser

– void println(Object dados)

• Escreve dados no browser inserindo uma quebra de linha no final.

(39)

JavaServer Page

Exemplo

Locadora

Prof. Enzo Seraphim -login:String -cpf:String -nome:String -id:int -locacao:Date -devolucao:Date -codigo:int -nome:String Cliente Locacao Filme *

(40)

br.edu.unifei.ecoe07.controle.dao br.edu.unifei.ecoe07.modelo

Classes Modelo e

Classes ControleDAO

FonteDados ClienteDao create retrieve update delete FilmeDao LocacaoDao create retrieve update delete create retrieve update delete Cliente -login:String -cpf:String -nome:String Locacao -id:int -locacao:Calendar -devolucao:Calendar Filme -codigo:int -nome:String * 1

(41)
(42)

<%@page contentType="text/html"          pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">

<html>   <head>

    <meta http­equiv="Content­Type" 

      content="text/html; charset=UTF­8">

    <title>HTML PAGE</title>   </head>

  <body>

    <a href="mensal/formCreateMensal.html">

      Inserir Cliente Mensal</a><br />

    <a href="diario/formCreateDiario.html">

      Inserir Cliente Diário</a><br />

    <a href="filme/formCreateFilme.html">

      Inserir Filme</a><br />

    <a href="locacao/formCreateLocacao.jsp">

      Inserir Locação</a><br />

  </body> </html>

(43)
(44)

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">

<html>   <head>

    <meta http­equiv="Content­Type" 

      content="text/html; charset=UTF­8">     <title>Criação de Cliente Diário</title>   </head>

  <body>

    <form action="createDiario.jsp" method="get">       <table border="1" width="400" height="200"         cellpadding="4" cellspacing="0">

        <tr align="left">

      <th>Login:</th><th><input type="text" size=30 name="login"></th>         </tr>

        <tr align="left">

      <th>Nome:</th><th><input type="text" size=30 name="nome"></th>         </tr>

        <tr align="left">

      <th>CPF:</th><th><input type="text" size=30 name="cpf"></th>         </tr>

        <tr align="center">

      <th colspan="2"><input type="submit" value="Enviar"></th>         </tr>

      </table>     </form>   </body>

(45)

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">

<html>   <head>

    <meta http­equiv="Content­Type" 

      content="text/html; charset=UTF­8">     <title>Criação de Cliente Diário</title>   </head>

  <body>

    <form action="createDiario.jsp" method="get">       <table border="1" width="400" height="200"         cellpadding="4" cellspacing="0">

        <tr align="left">

      <th>Login:</th><th><input type="text" size=30 name="login"></th>         </tr>

        <tr align="left">

      <th>Nome:</th><th><input type="text" size=30 name="nome"></th>         </tr>

        <tr align="left">

      <th>CPF:</th><th><input type="text" size=30 name="cpf"></th>         </tr>

        <tr align="center">

      <th colspan="2"><input type="submit" value="Enviar"></th>         </tr>

      </table>     </form>   </body>

(46)

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">

<html>   <head>

    <meta http­equiv="Content­Type" 

      content="text/html; charset=UTF­8">     <title>Criação de Cliente Diário</title>   </head>

  <body>

    <form action="createDiario.jsp" method="get">       <table border="1" width="400" height="200"         cellpadding="4" cellspacing="0">

        <tr align="left">

      <th>Login:</th><th><input type="text" size=30 name="login"></th>         </tr>

        <tr align="left">

      <th>Nome:</th><th><input type="text" size=30 name="nome"></th>         </tr>

        <tr align="left">

      <th>CPF:</th><th><input type="text" size=30 name="cpf"></th>         </tr>

        <tr align="center">

      <th colspan="2"><input type="submit" value="Enviar"></th>         </tr>

      </table>     </form>   </body>

(47)

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"

<html>   <head>

      <meta http­equiv="Content­Type" content="text/html; charset=UTF­8">    <title>Criado cliente Diário </title>

  </head>   <body>    <%     try{        Diario obj = new Diario();        obj.setLogin(request.getParameter("login"));        obj.setNome(request.getParameter("nome"));        obj.setCpf(request.getParameter("cpf"));        EntityManager em = FonteDados.createEntityManager();        DiarioDao dao = new DiarioDao(em);        dao.create(obj);        em.close();        out.print("<h1>Cliente Diário Cadastrado</h1><br />");        out.print("<a href=\"../index.html\">clique para inicio</a><br />");     }catch (RollbackException exp){        out.print("<h1>Login já cadastrado</h1><br />");        out.print("<a href=\"formCreateDiario.html\">corrigir</a><br />");        out.print("<a href=\"../index.html\">clique para inicio</a><br />");     }        %>   </body> </html>

createDiario.jsp

(48)
(49)

<%@page contentType="text/html" pageEncoding="UTF­8"%>

<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">

<html>   <head>

    <meta http­equiv="Content­Type" 

      content="text/html; charset=UTF­8">     <title>Criação de Cliente Diário</title>   </head>

  <body>

    <form action="createDiario.jsp" method="get">       <table border="1" width="400" height="200"         cellpadding="4" cellspacing="0">         . . .         </table>     </form>   </body> </html>

formCreateLocacao.html

(50)

<%     out.println("<select name=\"loginCliente\">");     EntityManager em = FonteDados.createEntityManager();     ClienteDao daoCliente = new ClienteDao(em);     List<Cliente> listCliente=daoCliente.findAllCliente();     for(Cliente c : listCliente){        out.println("<option value=\"" + c.getLogin() +        "\">" + c.getNome() + "</option>");     }     out.println("</select><BR>"); %> <%     out.println("<select name=\"codigoFilme\">");     FilmeDao daoFilme = new FilmeDao(em);     List<Filme> listFilme = daoFilme.findAllFilme();     for(Filme f : listFilme){        out.println("<option value=\"" + f.getCodigo() +         "\">" + f.getNome() + "</option>");     }     out.println("</select><BR>"); %>

formCreateLocacao.html

(51)

<% try{    EntityManager em = FonteDados.createEntityManager();    ClienteDao daoCliente = new ClienteDao(em);    Cliente cliente = daoCliente.findCliente(          request.getParameter("loginCliente"));    FilmeDao daoFilme = new FilmeDao(em);    Filme filme = daoFilme.findFilme(          Integer.parseInt(request.getParameter("codigoFilme")));    SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");    Date date = sdf.parse(request.getParameter("locacao"));    Calendar cal = Calendar.getInstance();    LocacaoDao daoLocacao = new LocacaoDao(em);    Locacao locacao = new Locacao();    locacao.setCliente(cliente);    locacao.setFilme(filme);    locacao.setLocacao(cal);    cliente.addLocacao(locacao);    daoLocacao.create(locacao);

createLocacao.jsp

(52)

   em.close();    out.print("<h1>Cliente Mensal Cadastrado</h1><br />");    out.print("<a href=\"../index.html\">clique para inicio</a><br />"); }catch (NumberFormatException exp){    out.print("<h1>Data Inválida</h1><br />");    out.print("<a href=\"formCreateLocacao.html\">clique corrigir Locação</a><br />");    out.print("<a href=\"../index.html\">clique para inicio</a><br />"); }catch (RollbackException exp){    out.print("<h1>Cliente ou Filme não informado</h1><br />");    out.print("<a href=\"formCreateLocacao.html\">clique corrigir Locação</a><br />");    out.print("<a href=\"../index.html\">clique para inicio</a><br />"); } %>

createLocacao.jsp

(53)
(54)

JavaServer Page

Prof. Enzo Seraphim

Os logotipos, marcas comerciais e nomes de produtos citados nesta publicação tem apenas

o propósitos de

identificação e podem ser marcas registradas

de suas respectivas companhias.

Referências

Documentos relacionados

Um segundo campo de prazo é criado para gerar a informação para a Cia Aérea, através do formato OSI. Atividade de classe: Criar campo

1414-2/00 FABRICAÇÃO DE ACESSÓRIOS DO VESTUÁRIO, EXCETO PARA SEGURANÇA E PROTEÇÃO N S FABRICANTE DE CONSERVAS DE FRUTAS 1031-7/00 FABRICAÇÃO DE CONSERVAS DE FRUTAS N S

A Corregedoria Geral da Justiça do Estado de São Paulo COMUNICA aos servidores, aos juízes de Direito, aos advogados e ao público em geral que, em razão da instalação da

Suponha que trinta agricultores reflorestam uma área de três hectares em 16 horas de trabalho.. Matemática Básica. Suponha que trinta agricultores reflorestam uma área de três

Pelo presente Termo de Consentimento Livre e Esclarecido, declaro que autorizo a minha participação neste projeto de pesquisa intitulado, Satisfação do usuário

Esta Operação era considerada como de pequeno porte, pois o veículo a ser lançado era um Foguete de Treinamento Básico – FTB, sendo necessário apenas

Marechal Cândido Rondon, 20 de fevereiro de 2017. Scherer Assessoria Empresarial Ltda, empresa integrante do Grupo Sigha, nomeada como Auxiliar Contábil e Gestor, nos

Em nossa Secretaria de Cursos, orientamos você na escolha de um curso no Goethe-Institut Rio de Janeiro ou em um dos 13 Institutos na Alemanha, assim como informamos sobre