JSP e JavaBeans. JSP e Java Beans. O desenvolvimento de sistemas com JSP apresenta como problema principal a mistura de código e XHTML.

Documentos relacionados
Servlets/JSP/JSF. Prof. Cedric Luiz de Carvalho INF/UFG. Desenvolvimento de Aplicações Web com Interfaces Ricas - 04 / 2010

J550 JSP com tags padrão

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

Java II. Sérgio Luiz Ruivace Cerqueira

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

JSP (JAVASERVER PAGES)

Desenvolvimento de aplicações Web. Java Server Pages

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

Programação para Internet II

Java na WEB Componentes Bean

Java para WEB com Struts 2 e Hibernate

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

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

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS

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

Programação Web Aula 2 XHTML/CSS/XML

Linguagens de Programação

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

HTML 5 LINGUAGEM DE MARCAÇÃO E ESTILO - CSS - Prof. Rosemary Melo

TECNOLOGIA WEB INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML

CSS [10] Desenvolvimento e Design de. Websites. Prof.: Ari Oliveira

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

Laboratório de Sistemas e Serviços Web

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

Recursos Complementares (Tabelas e Formulários)

1) Em um documento separado fora de todos os documentos HTML;

PROGRAMAÇÃO EM AMBIENTE WEB I

Introdução à linguagem HTML. Volnys Borges Bernal

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Introdução ao HTML e às folhas de estilo (CSS)

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

Laboratório de Sistemas e Serviços Web

DATA ACCESS OBJECT (DAO)

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva

JavaServer Faces JSF

Exercícios de fixação: Listas

Java Server Pages (JSP)

J550 Integração com Bancos de Dados

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral.

Escrito por Lisiane Batista Neitzke Sex, 14 de Outubro de :57 - Última atualização Qua, 25 de Junho de :18

Java DataBase Connectivity - JDBC. Ramon Lopes Embaixador de Campus Sun - UFBA

17/01/2016 PROGRAMAÇÃO EM AMBIENTE WEB I UM POUCO DE HISTÓRIA WWW. Tudo começou com a ARPANET; 1977 ARPANET nasce

Tags estruturais <!-- --> Cria um comentário <html> </html> Envolve todo um documento html <head> </head> Envolve o cabeçalho de um documento html

OS BASTIDORES DA INTERNET NO BRASIL

PROGRAMAÇÃO EM AMBIENTE WEB I

Teste de avaliação de frequência Parte Prática

VTEX TRIGGER ABANDONED CART TEMPLATE DO . VTEX On-line Applications

Desenvolvimento Web CSS Conceitos básicos parte II

Java Server Faces Navegação de

Programação Estruturada e Orientada a Objetos

21/05/2013. Informações Complexas. Arquivos de Texto e Arquivos Binários. Hierarquia de Dados. Armazena Informação. Classificação de Arquivos

20/02/2014. <HTML> Introdução </HTML> Web

Programação Orientada a Objetos II

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

PROJETO WEB: Java. Prof Fernando Gomes

Programação em Rede JDBC

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

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

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

O que é uma tag Tag tag tag tag tag tags tags HTML O que é uma tag library biblioteca de tags tags Java Standard Tag Library JSTL Tag Library JSTL

Introdução a HTTP, HTML e CSS

Aplicativos Web com Orientação a Objetos

Programação Orientada a Objetos

HTML & CSS. uma introdução

Recurso Didáctico. Dossier Técnico Pedagógico Projecto: 5742/2008/22 Acção: 5742/2008/ Formador[a]

06/02/2016 PROGRAMAÇÃO EM AMBIENTE WEB I CSS UM POUCO DE HISTÓRIA

TUTORIAL DE INTRODUÇÃO AO CEWOLF

PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO CSS PARTE I

Desenvolvimento Web TCC Turma A-1

Desenvolvimento Web TCC Turma A-1

PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO XHTML

TECNOLOGIAS WEB. Unidade 3 Linguagem de Marcação e Estilo. Luiz Leão

Configurando uma aplicação Struts

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

Projeto webservicejax

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

Dezembro/2012. Universidade Federal Fluminense. Curso de Introdução ao HTML. SeTel- Grupo PET-Tele. Adicionando links e imagens. Tabelas.

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

Desenvolvimento Web. Professor: Bruno E. G. Gomes

Guia de Bolso HTML e XHTML

Desenvolvimento Web. HTML 5 Parte I. Prof. Vicente Paulo de Camargo

No final deste curso, saberás criar programas através da linguagem de programação Java.

Java na Web. Aplicações Web

Java - Conexão ao Banco de Dados usando JDBC

Componentes Web do JEE

Desenvolvimento Web. JavaScript aula II variáveis (cont.) e diálogos. Professor: Bruno Gomes

08/08/2011 TECNOLOGIAS WEB AULA 10 PROF. RAFAEL DIAS Objetivos: Revisar os princípios de CSS Blocos e Elementos Alinhados com CSS

Integração com Banco de Dados

Código-Fonte da Prática 02

Interfaces Pessoa. Laboratório 1. Máquina. HTML, CSS, JS- Introdução

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

Aula 3. Imagens. <img src="foto.jpg" />

Unidade 9: Middleware JDBC para Criação de Beans

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira / j.edu@vqv.com.br

Transcrição:

JSP e JavaBeans JSP e Java Beans O desenvolvimento de sistemas com JSP apresenta como problema principal a mistura de código e XHTML. Em caso de alterações tanto programadores quanto web-designers devem ser envolvidos. A melhor solução é separar a lógica em classes designadas por Java Beans. Estas classes podem ser acedidas directamente da página JSP através de uso de propriedades. Como não há programação, a tarefa pode ser realizada pelo webdesigner diminuindo o impacto tanto da alteração de código quanto ao do layout 1

Java Beans Java Beans são classes Java que obdecem determinadas regras: Deve existir um construtor público e sem parâmetros Nenhum atributo pode ser público Os atributos são acedidos através de métodos públicos setxxx, getxxx e isxxx Estas regras determinam um padrão que possibilita o uso de Beans como componentes em ferramentas de desenvolvimento. Estes componentes minimizam a necessidade de programação pois são utilizados através de suas propriedades. Tipos de Java Beans Existem três tipos de Java Beans: Visuais, utilizados no desenvolvimento de interfaces. Dados, que fornecem um padrão para acesso a valores. Serviços, usados para cálculos, acesso a tabelas e algoritmos específicos. Em JSP apenas os dois últimos tipos são usados 2

Exemplo de Java Bean class Hora { private int hora, minuto; public Hora() { hora = minuto = 0; } public int getsegundos() { return hora*3600+60*minuto; } } Uso de Java Beans Para utilizar Java Beans em uma aplicação comum deve-se criar um objecto e aceder aos seus métodos Em JSP, existem Marcas especiais para criação e recuperação de propriedades que não exigem conhecimento de programação 3

Criar Java Beans Acção <jsp:usebean> Permite JSP gerir objectos Java Cria objectos Java ou selecciona um objecto que já existe para que seja possível utiliza-lo numa JSP Exemplo: <jsp:usebean id = obj class = Hora /> Esta tag é semelhante a: Hora obj = new Hora(); Recuperar Propriedades Para ler uma propriedade de um Bean usa-se o atributo getproperty Exemplo: <jsp:getproperty name = obj property = Segundos /> Esta Marca retorna no local em que estiver o valor da propriedade recuperada 4

Alterar Propriedades Para alterar uma propriedade usa-se setproperty. Exemplo: <jsp:setproperty name = obj property = Segundos value = 60 /> Inicializar Beans Caso seja necessário inicializar um Beans usa-se a sintaxe: <jsp:usebean id = obj class = Hora > <%-- Inicialização do Bean --%> </jsp:usebean> O código é executado apenas se o Bean for criado 5

Partilha dos Beans A criação padrão disponibiliza o Bean apenas para a página actual Para alterar o nível de acesso usa-se o atributo scope Exemplo: <jsp:usebean id = obj class = Hora scope= page > Scope pode ter quatro valores: page, mantém o Bean até que a página seja mostrada request, mantém o Bean até que a resposta seja toda enviada session, o Bean existe durante a sessão application, o Bean dura enquanto a aplicação Web actual estiver activa Propriedades Indexadas Não existem Marcas específicas para o acesso a propriedades indexadas Para aceder tais propriedades deve-se usar scriptlets e expressões Exemplo: <%for(int i=0; i<10; i++) { %> <%=obj.getpropriedade(i)%> <br> <%}%> 6

Propriedades e Parâmetros Os parâmetros (getparameter) podem ser inseridos directamente em propriedades de Java Beans. Basta usar o nome do parâmetro no atributo param: <jsp:setproperty name= obj property= nome param = nome /> Propriedades e Parâmetros Para propriedades e parâmetros com o mesmo nome é possível fazer a associação total com o uso de * Exemplo: <jsp:setproperty name= obj property= * /> A comparação dos nomes é sensível a maiúsculas e minúsculas 7

Exemplos Exemplo1 1 // Fig. 10.17: Rotator.java 2 // A JavaBean that rotates advertisements. 3 package com.deitel.advjhtp1.jsp.beans; 4 5 public class Rotator { 6 private String images[] = { "images/jhtp3.jpg", 7 "images/xmlhtp1.jpg", "images/ebechtp1.jpg", 8 "images/iw3htp1.jpg", "images/cpphtp3.jpg" }; 9 10 private String links[] = { 11 "http://www.amazon.com/exec/obidos/asin/0130125075/"+ 12 "deitelassociatin", 13 "http://www.amazon.com/exec/obidos/asin/0130284173/" + 14 "deitelassociatin", 15 "http://www.amazon.com/exec/obidos/asin/013028419x/"+ 16 "deitelassociatin", 17 "http://www.amazon.com/exec/obidos/asin/0130161438/" + 18 "deitelassociatin", 19 "http://www.amazon.com/exec/obidos/asin/0130895717/"+ 20 "deitelassociatin" }; 21 22 private int selectedindex = 0; 23 24 // returns image file name for current ad 25 public String getimage() 26 { 27 return images[ selectedindex ]; 28 } 29 30 // returns the URL for ad's corresponding Web site 31 public String getlink() 32 { 33 return links[ selectedindex ]; 34 } 35 Bean Rotator destinado a manter um contador sobre a íde publicidade (Parte 1). Linhas 25-28 Linhas 31-34 Retorna o nome do ficheiro que servirá para a imagem do livro Retorna o hyperlink para o livro em Amazon.com 8

36 // update selectedindex so next calls to getimage and 37 // getlink return a different advertisement 38 public void nextad() 39 { 40 selectedindex = ( selectedindex + 1 ) % images.length; 41 } 42 } Altera o estado de Rotator para que chamadas seguintes a Fig. 10.17 Rotator getimage and getlink bean that maintains a return information for set of advertisements different advertisements (Part 2). Lines 38-41 1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 10.18: adrotator.jsp --> 6 7 <jsp:usebean id = "rotator" scope = "application" 8 class = "com.deitel.advjhtp1.jsp.beans.rotator" /> 9 10 <html xmlns = "http://www.w3.org/1999/xhtml"> 11 12 <head> 13 <title>adrotator Example</title> 14 15 <style type = "text/css"> 16.big { font-family: helvetica, arial, sans-serif; 17 font-weight: bold; 18 font-size: 2em } 19 </style> 20 21 <%-- update advertisement --%> 22 <% rotator.nextad(); %> 23 </head> 24 25 <body> 26 <p class = "big">adrotator Example</p> 27 28 <p> 29 <a href = "<jsp:getproperty name = "rotator" 30 property = "link" />"> 31 32 <img src = "<jsp:getproperty name = "rotator" 33 property = "image" />" alt = "advertisement" /> 34 </a> 35 </p> adrotator.jsp Usa o Use componente jsp:usebean Rotator action para to mostrar obtain reference uma to imagem Rotator distinta object cada vez que é feita uma chamada à página (Parte 1). Linhas 7-8 Linhas 22 Linhas 29-23 Invoke Rotator s nextad method Define hyperlink to Amazon.com site 9

36 </body> 37 </html> adrotator.jsp Usa o componente Rotator para mostrar uma imagem distinta cada vez que é feita uma chamada à página (Parte 2). Exemplos Exemplo2 10

1 // Fig. 10.20: GuestBean.java 2 // JavaBean to store data for a guest in the guest book. 3 package com.deitel.advjhtp1.jsp.beans; 4 5 public class GuestBean { 6 private String firstname, lastname, email; 7 8 // set the guest's first name 9 public void setfirstname( String name ) 10 { 11 firstname = name; 12 } 13 14 // get the guest's first name 15 public String getfirstname() 16 { 17 return firstname; 18 } 19 20 // set the guest's last name 21 public void setlastname( String name ) 22 { 23 lastname = name; 24 } 25 26 // get the guest's last name 27 public String getlastname() 28 { 29 return lastname; 30 } 31 GuestBean armazena a informação sobre um utilizador (Parte 1). Linha 6 GuestBean define três propriedades: firstname, lastname e email 32 // set the guest's email address 33 public void setemail( String address ) 34 { 35 email = address; 36 } 37 38 // get the guest's email address 39 public String getemail() 40 { 41 return email; 42 } 43 } Fig. 10.20 GuestBean stores information for one guest (Part 2). 11

1 // Fig. 10.21: GuestDataBean.java 2 // Class GuestDataBean makes a database connection and supports 3 // inserting and retrieving data from the database. 4 package com.deitel.advjhtp1.jsp.beans; 5 6 // Java core packages 7 import java.io.*; 8 import java.sql.*; 9 import java.util.*; 10 11 public class GuestDataBean { 12 private Connection connection; 13 private PreparedStatement addrecord, getrecords; 14 15 // construct TitlesBean object 16 public GuestDataBean() throws Exception 17 { 18 // load the Cloudscape driver 19 Class.forName( "COM.cloudscape.core.RmiJdbcDriver" ); 20 21 // connect to the database 22 connection = DriverManager.getConnection( 23 "jdbc:rmi:jdbc:cloudscape:guestbook" ); 24 25 getrecords = 26 connection.preparestatement( 27 "SELECT firstname, lastname, email FROM guests" 28 ); 29 30 addrecord = 31 connection.preparestatement( 32 "INSERT INTO guests ( " + 33 "firstname, lastname, email ) " + 34 "VALUES (?,?,? )" 35 ); GuestDataBean realiza o acesso a base de dados sob o comando de guestbook- Login.jsp (Parte 1). Linhas 22-23 GuestDataBean liga-se a base de dados to guestbook 36 } 37 38 // return an ArrayList of GuestBeans 39 public ArrayList getguestlist() throws SQLException 40 { 41 ArrayList guestlist = new ArrayList(); 42 43 // obtain list of titles 44 ResultSet results = getrecords.executequery(); 45 46 // get row data 47 while ( results.next() ) { 48 GuestBean guest = new GuestBean(); 49 50 guest.setfirstname( results.getstring( 1 ) ); 51 guest.setlastname( results.getstring( 2 ) ); 52 guest.setemail( results.getstring( 3 ) ); 53 54 guestlist.add( guest ); 55 } 56 57 return guestlist; 58 } 59 60 // insert a guest in guestbook database 61 public void addguest( GuestBean guest ) throws SQLException 62 { 63 addrecord.setstring( 1, guest.getfirstname() ); 64 addrecord.setstring( 2, guest.getlastname() ); 65 addrecord.setstring( 3, guest.getemail() ); 66 67 addrecord.executeupdate(); 68 } 69 GuestDataBean realiza o acesso a base de dados sob o comando de guestbook- Login.jsp (Parte 2). Linhas 39-68 GuestDataBean disponibliza métodos que permitem o acesso a base de dados (getguestlist e addguest) 12

70 // close statements and terminate database connection 71 protected void finalize() 72 { 73 // attempt to close database connection 74 try { 75 getrecords.close(); 76 addrecord.close(); 77 connection.close(); 78 } 79 80 // process SQLException on close operation 81 catch ( SQLException sqlexception ) { 82 sqlexception.printstacktrace(); 83 } 84 } 85 } GuestDataBean realiza o acesso a base de dados sob o comando de guestbook- Login.jsp (Parte 3). 1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 10.22: guestbooklogin.jsp --> 6 7 <%-- page settings --%> 8 <%@ page errorpage = "guestbookerrorpage.jsp" %> 9 10 <%-- beans used in this JSP --%> 11 <jsp:usebean id = "guest" scope = "page" 12 class = "com.deitel.advjhtp1.jsp.beans.guestbean" /> 13 <jsp:usebean id = "guestdata" scope = "request" 14 class = "com.deitel.advjhtp1.jsp.beans.guestdatabean" /> 15 16 <html xmlns = "http://www.w3.org/1999/xhtml"> 17 18 <head> 19 <title>guest Book Login</title> 20 21 <style type = "text/css"> 22 body { 23 font-family: tahoma, helvetica, arial, sans-serif; 24 } 25 26 table, tr, td { 27 font-size:.9em; 28 border: 3px groove; 29 padding: 5px; 30 background-color: #dddddd; 31 } 32 </style> 33 </head> 34 Directiva JavaServer page page define informação guestbook- que é disponbilizada Login.jsp na JSP permite introduzir três Acçãoparametros jsp:usebean que permite serão obter armazenados uma referencia numa aos base objectos de dados GuestBean (Parte1) e GuestDataBean Linha 8 Linha 11-14 13

35 <body> 36 <jsp:setproperty name = "guest" property = "*" /> 37 38 <% // start scriptlet 39 40 if ( guest.getfirstname() == null 41 guest.getlastname() == null 42 guest.getemail() == null ) { 43 44 %> <%-- end scriptlet to insert fixed template data --%> 45 46 <form method = "post" action = "guestbooklogin.jsp"> 47 <p>enter your first name, last name and email 48 address to register in our guest book.</p> 49 50 <table> 51 <tr> 52 <td>first name</td> 53 54 <td> 55 <input type = "text" name = "firstname" /> 56 </td> 57 </tr> 58 59 <tr> 60 <td>last name</td> 61 62 <td> 63 <input type = "text" name = "lastname" /> 64 </td> 65 </tr> 66 67 <tr> 68 <td>email</td> 69 As propriedade de GuestBean JavaServer são page guestbookcopiadas dos valores Login.jsp permite contidos nos parâmetros introduzir análogos três parametros que serão armazenados numa base de dados (Parte2) Linha 36 70 <td> 71 <input type = "text" name = "email" /> 72 </td> 73 </tr> 74 75 <tr> 76 <td colspan = "2"> 77 <input type = "submit" 78 value = "Submit" /> 79 </td> 80 </tr> 81 </table> 82 </form> 83 84 <% // continue scriptlet 85 86 } // end if 87 else { 88 guestdata.addguest( guest ); 89 90 %> <%-- end scriptlet to insert jsp:forward action --%> 91 92 <%-- forward to display guest book contents --%> 93 <jsp:forward page = "guestbookview.jsp" /> 94 95 <% // continue scriptlet 96 97 } // end else 98 99 %> <%-- end scriptlet --%> 100 </body> 101 102 </html> JavaServer page guestbook- Login.jsp permite introduzir três parametros que serão armazenados numa base de dados (Parte3) Linha 93 Redereciona o pedidos para guestbookview.jsp 14

1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 10.23: guestbookview.jsp --> Directiva JavaServer page page 6 import indica guestbook- quais os 7 <%-- page settings --%> packages View.jsp e classes quemostra o 8 <%@ page errorpage = "guestbookerrorpage.jsp" %> 9 <%@ page import = "java.util.*" %> são utilizados conteudo no do livro de 10 <%@ page import = "com.deitel.advjhtp1.jsp.beans.*" %> contexto visitas da JSP (Parte 1). 11 12 <%-- GuestDataBean to obtain guest list --%> Acçãojsp:useBean 13 <jsp:usebean id = "guestdata" scope = "request" Linhas 9-10 14 class = "com.deitel.advjhtp1.jsp.beans.guestdatabean" /> permite obter uma 15 Linhas referencia 13-14 para 16 <html xmlns = "http://www.w3.org/1999/xhtml"> 17 GuestDataBean 18 <head> 19 <title>guest List</title> 20 21 <style type = "text/css"> 22 body { 23 font-family: tahoma, helvetica, arial, sans-serif; 24 } 25 26 table, tr, td, th { 27 text-align: center; 28 font-size:.9em; 29 border: 3px groove; 30 padding: 5px; 31 background-color: #dddddd; 32 } 33 </style> 34 </head> 35 36 <body> 37 <p style = "font-size: 2em;">Guest List</p> 38 39 <table> 40 <thead> 41 <tr> 42 <th style = "width: 100px;">Last name</th> 43 <th style = "width: 100px;">First name</th> 44 <th style = "width: 200px;">Email</th> 45 </tr> 46 </thead> 47 48 <tbody> 49 50 <% // start scriptlet 51 52 List guestlist = guestdata.getguestlist(); 53 Iterator guestlistiterator = guestlist.iterator(); 54 GuestBean guest; 55 56 while ( guestlistiterator.hasnext() ) { 57 guest = ( GuestBean ) guestlistiterator.next(); 58 59 %> <%-- end scriptlet; insert fixed template data --%> 60 61 <tr> 62 <td><%= guest.getlastname() %></td> 63 64 <td><%= guest.getfirstname() %></td> 65 66 <td> 67 <a href = "mailto:<%= guest.getemail() %>"> 68 <%= guest.getemail() %></a> 69 </td> 70 </tr> JavaServer page guestbook- View.jsp mostra o conteudo do livro de visitas (Parte 2). Scriptlet Linhas mostra 50-68 lista de last name, first name e email para 15

71 72 <% // continue scriptlet 73 74 } // end while 75 76 %> <%-- end scriptlet --%> 77 78 </tbody> 79 </table> 80 </body> 81 82 </html> JavaServer page guestbook- View.jsp mostra o conteudo do livro de visitas (Parte 3). 1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 10.24: guestbookerrorpage.jsp --> 6 7 <%-- page settings --%> 8 <%@ page iserrorpage = "true" %> 9 <%@ page import = "java.util.*" %> 10 <%@ page import = "java.sql.*" %> 11 12 <html xmlns = "http://www.w3.org/1999/xhtml"> 13 14 <head> 15 <title>error!</title> 16 17 <style type = "text/css"> 18.bigRed { 19 font-size: 2em; 20 color: red; 21 font-weight: bold; 22 } 23 </style> 24 </head> 25 26 <body> 27 <p class = "bigred"> 28 29 <% // scriptlet to determine exception type 30 // and output beginning of error message 31 if ( exception instanceof SQLException ) 32 %> 33 34 An SQLException 35 Directiva JavaServer page page iserrorpage guestbookerror- indica que guestbookerror- View.jsp é chamda Page é em uma resposta página de a tratamento excepções de erros que possam acontecer em guestbook- Login.jsp e guestbook- View.jsp (Parte 1). Linha 8 Linha 31 Uso do objecto implicito exception para determinar o erro que deve ser mostrado 16

36 <% 37 else if ( exception instanceof ClassNotFoundException ) 38 %> 39 40 A ClassNotFoundException Uso do objecto JavaServer page 41 implicito exception guestbookerror- para 42 <% determinar o erro que View.jsp é chamda 43 else deve ser mostrado 44 %> em resposta a 45 excepções que 46 An exception possam acontecer 47 48 <%-- end scriptlet to insert fixed template data --%> em guestbook- 49 Login.jsp e 50 <%-- continue error message output --%> guestbook- 51 occurred while interacting with the guestbook database. 52 </p> View.jsp (Parte 2). 53 54 <p class = "bigred"> 55 The error message was:<br /> 56 <%= exception.getmessage() %> Linha 37 57 </p> 58 59 <p class = "bigred">please try again later</p> 60 </body> 61 62 </html> Acção<jsp:useBean> (cont.) 17

Acção<jsp:useBean> (cont.) 18