Mdulo IVb JSP Prof Ismael H F Santos
Módulo IVb - JSP Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 1
Ementa n Módulo IVb – Java Server Pages - JSP Introdução n Elementos de Script e Diretivas n JSP e Servlets n Java Beans e JSP n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 2
Bibliografia n Linguagem de Programação JAVA n n The Java Tutorial: A practical guide for programmers n n Tutorial on-line: http: //java. sun. com/docs/books/tutorial Java in a Nutshell n n Ismael H. F. Santos, Apostila Univer. Cidade, 2002 David Flanagan, O´Reilly & Associates Just Java 2 Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books. n n Java 1. 2 n April 05 Laura Lemay & Rogers Cadenhead, Editora Campos Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 3
Livros n Core Java 2, Cay S. Horstmann, Gary Cornell Volume 1 (Fundamentos) n Volume 2 (Características Avançadas) n Java: Como Programar, Deitel & Deitel n Thinking in Patterns with JAVA, Bruce Eckel n Gratuito. http: //www. mindview. net/Books/TIJ/ n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 4
POO-Java April 05 Java Server Pages Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 5
Java Server Pages n Java Server Pages (JSP) é uma especificação da SUN que possibilita colocar código fonte em Java dentro de HTML n E não o contrário, como acontece com os servlets. n Isso permite o controle da aparência da página através de softwares de design (Home. Site, Dream. Weaver, Front. Page, etc. ) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 6
JSP (Java Server Pages) n Tecnologia Java para geração de conteúdo dinâmico n O texto HTML é escrito junto com as tags JSP e código Java n Não é uma idéia nova sendo usado em tecnologias concorrentes: ASP, PHP, Server-Side Java. Script e Cold Fusion n Tecnologias concorrentes e similares à JSP: n n n April 05 Cold Fusion (Macromedia) PHP ASP, Active Server Pages (Microsoft) Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 7
Java Server Pages n Uma página JSP consiste de um documento no formato de texto que possui código HTML e código Java. n Os trechos de código em Java em uma página JSP são denominados scriptlets. n Páginas JSP possuem uma extensão diferente de. html, para que o servidor Web <H 1>Exemplo</H 1> <% i = como 0; i <“programas”: 10/ i++) { %>. jsp as for(int identifique <P>Um número: ” <%= i %> </P> <% }%> <TABLE><TR><TD>. . . </TR></TABLE> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 8
Processamento de JSP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 9
JSP (Java Server Pages) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 10
JSP Servlets n Arquivos JSP são automaticamente traduzidos em servlets pelo contêiner. n Ou seja, após um pré-processamento dos scriptlets, páginas JSP acabam por serem traduzidas em servlets. n Quando uma página JSP é acessada pela primeira vez, o contêiner gera a servlet correspondente e a executa. n A servlet permanece em memória após a primeira chamada. n Essa servlet somente é recompilada quando o arquivo. jsp é modificado. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 11
JSP Servlets April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 12
Programando scriptlets n Para importar um pacote em uma página JSP: n Use a diretiva <%@ page import n Exemplo: <%@ page import="java. sql. *" %> n Para inserir código Java em uma página JSP, delimite esse código por <% e %> n O tag <%= n n April 05 Faz com que a expressão Java entre os tags <%= e %> seja avaliada, convertida em string e enviada para o browser. Para escrever código de inicialização, utilize o método jsp. Init na seção de declarações (entre <%! e %>) Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 13
Objetos implícitos no JSP n O JSP possui diversos objetos predefinidos (objetos implícitos): out n request n session n n Exemplos de uso n out. println(“string”); n request. get. Parameter(“parameter. Name”) n session. set. Attribute("username", username); n session. get. Attribute("username"); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 14
Exemplo de aplicação JSP <HTML><HEAD> <TITLE>Seja bem-vindo</TITLE> </HEAD><BODY> <% String user = request. get. Parameter("usuario"); if (user == null) user = “Mundo"; %> <H 1>Seja bem-vindo</H 1> <P>Oi, <%= user %> </BODY></HTML> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 15
JSP (Exemplo) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 16
Uso de JSP n Páginas JSP também necessitam de Web Servers específicos. n Em geral, um servidor de servlets também é um servidor de JSP n Para disponibilizar um arquivo JSP basta gravá-lo em qualquer pasta visível do servidor com extensão jsp April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 17
Uso de JSP - Comparações n JSP versus ASP n A parte dinâmica do JSP é escrita em Java, e não VB ou outra linguagem específica da Microsoft. n n n April 05 ASP requer uso do Windows NT e servidor ISS, enquanto JSP roda em diversos sistemas e servidores. JSP é um pouco mais difícil. JSP permite reuso de componentes via Java. Beans e EJB; ASP cria componentes Active X / COM. Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 18
Uso de JSP - Comparações n JSP versus Servlets n n April 05 JSP não permite fazer nada que servlets não façam. JSP é mais fácil. Para escrever o HTML em servlets, código fica cheio de comandos de escrita. JSP separa conteúdo da aparência: pessoas diferentes podem trabalhar em tarefas dfierentes: web designers constróem o HTML, deixando espaços para que programadores insiram o conteúdo dinâmico. Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 19
Uso de JSP - Comparações n JSP versus Java. Script n n April 05 Java. Script é capaz de gerar HTML dinamicamente no cliente, mas esta funcionalidade só é útil se a informação dinâmica depende do ambiente do cliente. Java. Script não pode acessar recursos do servidor, principalmente banco de dados. Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 20
Uso de JSP - Comparações n JSP versus ASP n A parte dinâmica do JSP é escrita em Java, e não VB ou outra linguagem específica da Microsoft. n n n April 05 ASP requer uso do Windows NT e servidor ISS, enquanto JSP roda em diversos sistemas e servidores. JSP é um pouco mais difícil. JSP permite reuso de componentes via Java. Beans e EJB; ASP cria componentes Active X / COM. Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 21
Execução de JSP n Quando um usuário faz uma requisição a uma página JSP: Se for a primeira, a página jsp é convertida em um servlet e compilada n Este servlet é invocado e retorna como resposta uma string HTML n Esta string é retornada para o cliente n n Todo o processamento ocorre no servidor, apenas o Html é retornado April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 22
Elementos JSP n Uma página JSP pode ter três tipos de elementos: Elementos de Script que são inseridos diretamente no servlet n Diretivas que permitem a manipulação do código gerado como servlet n Ações que possibilitam o uso de outros componentes, como Java Beans n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 23
POO-Java April 05 Elementos Script e Diretivas JSP Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 24
Elementos de Script n Os elementos de script JSP que podem ser inseridos em uma página HTML são: Expressões que são avaliadas e inseridas na saída do servlet n Scriptlets, trechos de código inseridos no método _jspservice n Declarações inseridas fora dos métodos do servlet n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 25
JSP vs. HTML n A maior parte de um arquivo jsp consiste em tags HTML n São passadas como saída do servlet n Páginas jsp são criadas com ferramentas HTML n Comentários JSP são expressos como <%---> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 26
Expressões n Usadas para inserir valores diretamente na saída n Sintaxe: <%= expressão java %> n A expressão é avaliada, convertida para string e inserida na página April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 27
Expressões n As expressões podem ser qualquer comando Java que retorne valor n Exemplo: Data: <%= new java. util. Date() %> n Expressões são muito úteis na atribuição de valores para parâmetros html: <font size = ‘<%Math. random()*5%>’ > April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 28
Variáveis pré-definidas n Existem variáveis em JSP que representam os objetos dos servlets: out n request n response n session n n Exemplo: Host: <%request. get. Server. Name()%> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 29
Elementos XML n As tags jsp podem ser escritas no formato XML n Expressões JSP podem ser escritas: <jsp: expression> expressão java </jsp: expression> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 30
Scriptlets n Trechos de código Java n Delimitados por <% e %> n Sintaxe XML: <jsp: scriptlet> código java </jsp: scriptlet> n Podem acessar as variáveis pré-definidas April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 31
Scriptlets n Exemplo: <% String cor = request. get. Parameter(“cor”); if (cor == null) cor = “white”; %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 32
Scriptlets n Podem ser usados para apresentar html condicionalmente: <%if (hora >= 6 && hora < 12) { %> <b> Bom Dia! </b> <%} else {%> <b> Boa Tarde! </b> <% } %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 33
Declarações n Para definir métodos ou campos fora dos métodos do servlet gerado n Sintaxe: <%! declaração java %> n Em XML: <jsp: declaration> declaração java </jsp: declaration> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 34
Diretivas JSP n Afetam a estrtura geral do servlet gerado da página JSP n Possuem o seguinte formato: n <%@diretiva atributo=“valor” %> n ou em XML n <jsp: directive. diretiva atributo=“valor”/> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 35
Tipos de Diretivas n Existem três tipos de diretivas JSP: n page n para importação de classes, alteração do tipo do conteúdo, etc. n include n para inclusão de arquivos durante a execução do JSP n taglib n para definição de tags próprias usadas em bibliotecas de tags April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 36
Diretiva page n Atributo import n Usado para importar classes para o servlet gerado pelo JSP n Pode aparecer várias vezes no JSP n Exemplo: n April 05 <%@page import = “java. util. *” %> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 37
Diretiva page n Atributo content. Type n Usado para alterar o formato MIME do texto de saída n Exemplo: n <%@page content. Type=“text/html”%> n Também pode ser especificado o conjunto de caracteres com charset April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 38
Diretiva page n Atributo is. Thread. Safe n Controla o uso de múltiplas threads no servlet gerado n O padrão é usar mútithread (true) n Exemplo: n April 05 <%@page is. Thread. Sate=“false”%> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 39
Diretiva page n Atributo session n Indica se a página em questão faz parte de uma sessão sendo que o seu valor padrão é true n Ex: n <%@page session=“false” %> n Neste caso a variável pré-definida session não pode ser acessada
Diretiva page n Atributo buffer n Indica o uso e tamanho do buffer usado pela variável out. n Exemplo: n <%@page buffer = “ 32 kb”%> n ou n April 05 <%@page buffer = “none” %> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 41
Diretiva page n Atributo autoflush n Controla o comportamento do buffer quando ele estiver cheio: true executa um “flush” automática e false gera uma exceção n Exemplo: n April 05 <%@page autoflush=“true”%> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 42
Diretiva page n Atributo extends n Altera a superclasse do servlet gerado n Exemplo: n <%@page extends=“Meu. Servlet. class”%> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 43
Diretiva page n Atributo info n Define a string de descrição do servlet gerado n Será retornada pelo método get. Servlet. Info() n Exemplo: n <%@page info=“descrição”%> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 44
Diretiva page n Atributo error. Page n Indica o nome da página que deve ser mostrada em caso de erro n Exemplo: n April 05 <%@page error. Page=“URL relativa”%> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 45
Diretiva page n Atributo is. Error. Page n Indica se a página atual pode ser usada como página de erro n O valor padrão deste atributo é false n Exemplo: n April 05 <%@page is. Error. Page=“true”%> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 46
Diretiva include n Usada para incluir outros arquivos em páginas JSP n Possui dois formatos, o primeiro inclui arquivos em tempo de compilação e o segundo em tempo de requisição n A diretiva deve aparecer no ponto em que o arquivo será incluído April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 47
Incluindo Arquivos (compilação) n Sintaxe: n <%@include file=“URL relativa”%> n Arquivos incluídos podem ser arquivos JSP n Se o arquivo incluído mudar, todos os JSP que o utilizam devem ser recompilados April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 48
Incluindo Arquivos (requisição) n Sintaxe: n <jsp: include page=“URL relativa” flush=“true”%> n Os arquivos incluídos não podem conter comandos JSP n Se o arquivo mudar, ele será lido novamente. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 49
Diretiva plugin n Permite a inclusão de outras classes Java em JSP, como applets e beans n Tem uma sintaxe semelhante a da tag applet do HTML n Exemplo: n April 05 <jsp: plugin type=“applet” code=“Dados. class” width=“ 200” height=“ 100”> </jsp: plugin> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 50
Diretiva plugin n Para passar parâmetros para a classe envolvida com o plugin utiliza-se a diretiva jsp: params dentro de jsp: plugin n Exemplo: n April 05 <jsp: params> <jsp: param name=“cor” value = “red”> <jsp: params> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 51
Diretiva plugin n Se o browser não suportar objetos pode ser mostrado texto alternativo n O texto é definido em jsp: fallback dentro de jsp: plugin n Exemplo: n April 05 <jsp: fallback> <b>Seu browser não suporta JAVA</b> </jsp: fallback> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 52
POO-Java April 05 JSP E Servlets Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 53
JSP e Servlets - Utilização n Em um sistema Web deve-se pensar na separação entre código e visualização n Uma das abordagens para esta separação é utilizar servlets e JSP n Servlets para o controle e processamento dependente de programação extensiva e JSP para visualização April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 54
JSP e Servlets - Utilização n Podemos realizar esta integração de três maneiras: Através de links ou botões inseridos nas páginas Html n Com o uso do método send. Redirect do objeto response n Redirecionando o controle através de Request. Dispatcher n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 55
JSP e Servlets - Utilização n Nos dois primeiros métodos, o controle é totalmente repassado e uma nova conexão tem que ser aberta com o cliente n Em certas situações é necessário mesclar a saída de servlet com JSP n Para realizar esta integração é necessário usar um Request. Dispatcher April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 56
Redirecionando Requisições n Para redirecionar uma requisição de um servlet para um JSP deve-se: Recuperar um redirecionador de get. Servlet. Context n Redirecionar o controle com forward n n Note que este redirecionamento difere de send. Redirect pois não é criada uma nova conexão
Redirecionando Requisições n Exemplo: Request. Dispatcher d = get. Servlet. Context(). get. Request. Dispatcher(url) d. forward(request, response); n A partir deste momento o controle sai do servlet atual April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 58
Redirecionando Requisições n Se o recurso destino for estático (página HTML), o redirecionamento só funcionada para requisições GET n Para evitar este problema, mude a extensão do recurso estático para JSP. n Assim o recurso passa a ser dinâmico e pode tratar POST. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 59
Enviando Informações n Para enviar informações para o recurso destino (dinâmico): Parâmetros na URL no caso de requisições GET n Inserir um atributo na requisição (request) n Inserir um atributo na sessão (session) n Inserir um atributo no contexto (application) n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 60
Enviando Informações (request) n Para enviar um objeto com duração request deve-se usar antes do redirecionamento: n request. set. Attribute(“atrib”, valor); n Para recuperar o valor no recurso redirecionado: n April 05 Tipo valor = (Tipo) request. get. Attribute(“atrib”); Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 61
Enviando Informações (application) n Se o objeto deve durar durante toda a vida do servlet, usar antes do redirecionamento: n get. Servlet. Context(). set. Attribute( “atrib”, valor); n No recurso redirecionado: n Tipo valor = (Tipo) get. Servlet. Context(). get. Attribute(“atrib”); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 62
Enviando Informações (session) n Para objetos de sessão, utilizar o procedimento normal: Http. Session session = request. get. Session(true); n session. set. Attribute(“atrib”, valor); n n Para recuperar o atributo: n Tipo valor = (Tipo) session. get. Attribute(“atrib”); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 63
Recuperando Informações no JSP n Para recuperar informações enviadas por um dos três métodos anteriores deve-se utilizar Beans com escopo: n <jsp: use. Bean id=“atrib” class=“Tipo” scope = “. . . ”/> n A recuperação dos parâmetros, segue a método normal April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 64
Inclusão de Saída n O comando forward redireciona o controle e não permite que o servlet atual insira dados na saída n Se for necessário enviar estes dados e redirecionar o controle deve ser usado o método include: n April 05 dispatcher. include(request, response); Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 65
Inclusão de Saída n A principal diferencá com o forward é que podem ser enviados dados para a saída tanto antes do include como depois n Os servlets ou JSPs chamados com este comando NÃO podem alterar o cabeçalho de resposta (set. Header) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 66
Inclusão de Saída n O método include tem as mesmas características do forward com relação ao envio de informações e tratamento de GET e POST n Adicionalmente o forward define cinco atributos (set. Attribute) no request que representam o caminho original April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 67
Inclusão de Saída n Estes atributos são recuperados com request. get. Attribute javax. servlet. include. request_uri n javax. servlet. include. context_path n javax. servlet. include. servlet_path n javax. servlet. include. path_info n javax. servlet. include. query_string n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 68
Redirecionamento com JSP n Embora seja mais comum o servlet redirecionar o controle, é possível redirecionar a partir de um JSP n Este redirecionamento é feito com a tag forward: n April 05 <jsp: forward page=“URL”/> Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 69
Objeto envolvidos em uma servlet n Http. Servlet. Request contém informações provenientes do cliente. n Parâmetros e seus valores podem ser consultados através dos métodos get. Parameter n Http. Servlet. Response permite gerar a saída a ser enviado ao cliente. n n April 05 Com o auxílio de um objeto Print. Writer out = response. get. Writer(); Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 70
Manipulando requisições do usuário n get. Parameter(“nome”) n Retorna o valor da primeira ocorrência de “nome” na string de consulta n Funciona de forma idêntica para requisições GET e POST n Retorna null se o parâmetro não existe na consulta. n get. Parameter. Values("nome") n Retorna um array dos valores de todas as ocorrências do nome na consulta. n Retorna null se o parâmetro não existe na consulta. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 71
Manipulando requisições do usuário (cont. ) n get. Parameter. Names() n Retorna uma lista (Enumeration) de parâmetros de requisição. n response. set. Content. Type n Define o cabeçalho (Content-Type) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 72
Problemas com Servlets n Parar gerar páginas dinâmicas, é preciso embutir HTML ou XML dentro de instruções Java. out. print(“<H 1>Exemplo</H 1>”); for(int i = 0; i < 10/ i++) { out. print(“<P>Um número: ” + i + “</P>” ); } out. print(“<TABLE><TR><TD>. . . </TR></TABLE>”); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 73
Problemas com Servlets n Conseqüência: dificuldade para o profissional que é somente web designer. O design das páginas acaba ficando a cargo do programador, em vez do web designer. n Mais complicado de trabalhar do que com HTML e Javascript. n n Solução: scripts de servidor ou Java Server Pages April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 74
Exercício I n Para testar a aplicação anterior (Saudar. Usuario. jsp), copie o arquivo para o diretório raiz do container JSP sendo utilizado. n (Saudar. Usuario. jsp está na pasta web/jsp dos exemplos) n No caso do Tomcat: CATALINA_HOMEwebappsROOT n A seguir, acesse a página JSP n http: //127. 0. 0. 1: 8080/Saudar. Usuario. jsp? usuario=Eduardo n Verifique o código Java das scriptlets não é enviado ao browser n April 05 view source no navegador WEB Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 75
Exercício II n Este exercício testa a página Lista. Empregados. jsp n Esta página está na pasta web/jsp dos exemplos. n Copie este arquivo para CATALINA_HOME/webapps/oficina n Crie um descritor de contexto da aplicação. n (Vide o apêndice deste slide) n Copie o driver do My. SQL (. jar) para a pasta do Tomcat denominada CATALINA_HOME/common/lib. n Levante o servidor My. SQL n Acesse a página: n April 05 http: //localhost: 8080/oficina/Lista. Empregados. jsp Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 76
POO-Java April 05 Java. Beans Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 77
Java Beans e JSP n Um objeto bean pode ser declarado em uma página JSP através do tag jsp: use. Bean. n Exemplo: <jsp: use. Bean id=“user” class=“com. foo. User. Info. Bean”/> <% if (user. is. Valid()) { %> <p> Usuário <%= user. get. First. Name() %> válido. <% } else { %> <p> Usuário <%= user. get. First. Name() %> inválido. <% } %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 78
Escopo de um Java Bean n Java Beans possuem escopo. n JSP usa um modelo de persistência que permite manter um objeto Java (bean) em diferentes escopos. n n Página atual (page). Este é o valor default. Requisição atual (request) Sessão atual (session) Durante o tempo em que o contêiner estiver “no ar” (application) n O escopo de um bean determina o quanto este bean irá “existir”. n O atributo scope da tag jsp: use. Bean é utilizado para definir o escopo de um bean. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 79
Tags JSP relacionadas a Beans n jsp: use. Bean n Utilizada para tornar um bean disponível em uma página JSP <jsp: use. Bean id="u" scope="session" class="exemplobean. Usuario" /> n jsp: set. Property n Utilizada para invocar um método modificador (setter) <jsp: set. Property name="Bean Name" property="Property. Name“ param="parameter. Name"/> <jsp: set. Property name="Bean Name" property="Property. Name"/> <jsp: set. Property name="Bean Name" property="*"/> n jsp: get. Property n Utilizada para invocar um método seletor (getter) <jsp: get. Property name="Nome Bean" property="property. Name"/> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 80
Exemplo de uso de um Bean n Página JSP que usa Hello. Bean <HTML><HEAD> <jsp: use. Bean id="hello" class="beans. Hello. Bean"/> <jsp: set. Property name="hello" property="mensagem“ param="usuario" /> <TITLE>Exemplo de uso de Bean</TITLE> </HEAD> <BODY> <H 1>Exemplo de uso de Bean</H 1> <P>Hello, <jsp: get. Property name="hello" property="mensagem" /> </BODY></HTML> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 81
Exercício III n Esse exercício usa os arquivos Definir. Usuario. jsp, Obter. Usuario. jsp e Usuario. java. n Todos eles estão abaixo da pasta web n Essa aplicação tem duas partes: uma página JSP e uma classe Java (Java. Bean) n April 05 a) Compile o Java. Bean (observe que ele está em um pacote) e copie-o para o webapps/ROOT/WEB-INF/classes n javac –d CATALINA_HOME/webapps/ROOT/WEBINF/classes Usuario. java Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 82
Exercício III n n n April 05 b) Copie os arquivos JSP para webapps/ROOT c) Acesse via http: //localhost: 8080/Definir. Usuario. jsp d) Acesse via http: //localhost: 8080/Obter. Usuario. jsp Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 83
- Slides: 83