Módulo IVb - JSP. Prof. Ismael H F Santos. Módulo IVb Java Server Pages - JSP

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

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

Módulo IVa - Servlets

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

Desenvolvimento Web TCC Turma A-1

Java para WEB com Struts 2 e Hibernate

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

Modulo II Tópicos em Java - Extra

Desenvolvimento de aplicações Web. Java Server Pages

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

Java Server Pages (JSP)

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs Aplicações dinâmicas para a Web: HTTP porto 80

Aplicações de Linguagem de Programação Orientada a Objeto

AULA 08. Sintaxe JSP. Prof. André Luis Schwerz.

PROGRAMAÇÃO SERVIDOR RECURSOS ADICIONAIS EM SISTEMAS WEB DOS SERVLETS. Prof. Dr. Daniel Caetano

Desenvolvimento Web III. Prof. Felippe Scheidt

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

JSP - JavaServer Pages

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

INTRODUÇÃO A PROGRAMAÇÃO PARA WEB

Tecnologias Web. Java Enterprise Edition

Desenvolvimento Web TCC Turma A-1

Aula 5: J2EE Application Assembly Model

JSP (Java Server Pages)

Java para Desenvolvimento Web

Formação JAVA Web.

Classes e Objetos. Sintaxe de classe em Java

Trabalhando com Servlet

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

Escrever scripts de PHP com HTML

Módulo II Arquitetura em Camadas

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Introdução ao Javascript

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

Java para Desenvolvimento Web Carga Horária: 40 Horas.

Associação Carioca de Ensino Superior Centro Universitário Carioca

Programação Web 2:! Introdução a JSP! Mestrado em Engenharia Informática Universidade do Minho! 290! Deliver information, not just data

Tecnologias para Web

Apostila - Desenvolvimento web com PHP

Pacotes Organizando suas classes e bibliotecas

Dreamweaver CC_15x21.indd 1 06/04/ :04:22

CONTEÚDO PROGRAMÁTICO

Java para Desenvolvimento Web

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

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

Aula 7: Servlets (II)

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

INTRODUÇÃO À TECNOLOGIA SERVLETS

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Aplicações Web com Servlets e JSP

Aula 11 Introdução ao Java Script

Introdução 20 Diagramas de fluxos de dados 20 O processo de elaboração de DFD 22 Regras práticas para a elaboração de DFD 24 Dicionário de dados 26

INTRODUÇÃO AO DESENVOLVIMENTO FRONT-END COM HTML, CSS E JAVASCRIPT

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

Programação orientada a objetos

JavaScript (Elementos de Programação e Programação Básica)

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Módulo III Padrões GOF: Bridge

Nesta disciplina aprenderemos. HTML CSS JavaScript Jquery PHP

Regras de Navegação e Templates

Prof.ª Daniela Barreiro Claro

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

14/08/2009. Módulo 4

JSP (Java Server Pages)

Redes de Computadores

Microsoft Visual Studio Community 2013

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Aula 03 - Projeto Java Web

DESENVOLVIMENTO DE UM SISTEMA DE LEILÃO UTILIZANDO JAVASERVER PAGES

O CMS JOOMLA! UM GUIA PARA INICIANTES

Java Standard Edition (JSE)

TRANSPONDO FIREWALLS EM SISTEMAS DISTRIBUIDOS

J2EE. Projeto de Sistemas de Software

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Aula 2 Servlets. Gustavo Wagner. Gustavo Wagner - gustavowagner.com.

POO. Programação Orientada a Objeto. Conceitor HTML/PHP. Professor Jarbas Araújo

Introdução ao Desenvolvimento de

Introdução ao PHP. Prof. Késsia Marchi

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

J550. Sessões. Helder da Rocha

GRUPO: Rafael Igor Vanderlei Vieira

J820. Testes em J2EE com. Jakarta C A C T U S. argonavis.com.br. Helder da Rocha

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Departamento de Computação Curso de Análise e Desenvolvimento de Sistemas Modelagem Conceitual de Dados

Desenvolvimento de Sistemas para WEB Site:

Dreamweaver CS5 -5- CAPÍTULO 1... Iniciando e conhecendo o dreamweaver...8 Interfaces...23 Criando e confi gurando sites...24 Exercícios...

Transcrição:

Módulo IVb - JSP Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Módulo IVb Java Server Pages - JSP Introdução Elementos de Script e Diretivas JSP e Servlets Java Beans e JSP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2 1

Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos, Apostila UniverCidade, 2002 The Java Tutorial: A practical guide for programmers Tutorial on-line: http://java.sun.com/docs/books/tutorial Java in a Nutshell David Flanagan, O Reilly & Associates Just Java 2 Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books. Java 1.2 Laura Lemay & Rogers Cadenhead, Editora Campos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 3 Livros Core Java 2, Cay S. Horstmann, Gary Cornell Volume 1 (Fundamentos) Volume 2 (Características Avançadas) Java: Como Programar, Deitel & Deitel Thinking in Patterns with JAVA, Bruce Eckel Gratuito. http://www.mindview.net/books/tij/ April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 4 2

POO-Java Java Server Pages April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 5 Java Server Pages Java Server Pages (JSP) é uma especificação da SUN que possibilita colocar código fonte em Java dentro de HTML E não o contrário, como acontece com os servlets. Isso permite o controle da aparência da página através de softwares de design (HomeSite, DreamWeaver, FrontPage, etc.) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 6 3

JSP (Java Server Pages) Tecnologia Java para geração de conteúdo dinâmico O texto HTML é escrito junto com as tags JSP e código Java Não é uma idéia nova sendo usado em tecnologias concorrentes: ASP, PHP, Server-Side JavaScript e Cold Fusion Tecnologias concorrentes e similares à JSP: Cold Fusion (Macromedia) PHP ASP, Active Server Pages (Microsoft) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 7 Java Server Pages Uma página JSP consiste de um documento no formato de texto que possui código HTML e código Java. Os trechos de código em Java em uma página JSP são denominados scriptlets. Páginas JSP possuem uma extensão <H1>Exemplo</H1> diferente de.html, para que o servidor Web <% as for(int identifique i = como 0; i < programas : 10/ i++) { %>.jsp <P>Um número: <%= i %> </P> <% }%> <TABLE><TR><TD>...</TR></TABLE> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 8 4

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 5

JSP Servlets Arquivos JSP são automaticamente traduzidos em servlets pelo contêiner. Ou seja, após um pré-processamento dos scriptlets, páginas JSP acabam por serem traduzidas em servlets. Quando uma página JSP é acessada pela primeira vez, o contêiner gera a servlet correspondente e a executa. A servlet permanece em memória após a primeira chamada. 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 6

Programando scriptlets Para importar um pacote em uma página JSP: Use a diretiva <%@ page import Exemplo: <%@ page import="java.sql.*" %> Para inserir código Java em uma página JSP, delimite esse código por <% e %> O tag <%= 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 jspinit na seção de declarações (entre <%! e %>) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 13 Objetos implícitos no JSP O JSP possui diversos objetos predefinidos (objetos implícitos): out request session Exemplos de uso out.println( string ); request.getparameter( parametername ) session.setattribute("username", username); session.getattribute("username"); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 14 7

Exemplo de aplicação JSP <HTML><HEAD> <TITLE>Seja bem-vindo</title> </HEAD><BODY> <% String user = request.getparameter("usuario"); if (user == null) user = Mundo"; %> <H1>Seja bem-vindo</h1> <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 8

Uso de JSP Páginas JSP também necessitam de Web Servers específicos. Em geral, um servidor de servlets também é um servidor de JSP 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 JSP versus ASP A parte dinâmica do JSP é escrita em Java, e não VB ou outra linguagem específica da Microsoft. 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 JavaBeans e EJB; ASP cria componentes Active X / COM. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 18 9

Uso de JSP - Comparações JSP versus Servlets 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. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 19 Uso de JSP - Comparações JSP versus JavaScript JavaScript é capaz de gerar HTML dinamicamente no cliente, mas esta funcionalidade só é útil se a informação dinâmica depende do ambiente do cliente. JavaScript não pode acessar recursos do servidor, principalmente banco de dados. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 20 10

Uso de JSP - Comparações JSP versus ASP A parte dinâmica do JSP é escrita em Java, e não VB ou outra linguagem específica da Microsoft. 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 JavaBeans e EJB; ASP cria componentes Active X / COM. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 21 Execução de JSP 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 Este servlet é invocado e retorna como resposta uma string HTML Esta string é retornada para o cliente Todo o processamento ocorre no servidor, apenas o Html é retornado April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 22 11

Elementos JSP Uma página JSP pode ter três tipos de elementos: Elementos de Script que são inseridos diretamente no servlet Diretivas que permitem a manipulação do código gerado como servlet Ações que possibilitam o uso de outros componentes, como Java Beans April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 23 POO-Java Elementos Script e Diretivas JSP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 24 12

Elementos de Script 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 Scriptlets, trechos de código inseridos no método _jspservice Declarações inseridas fora dos métodos do servlet April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 25 JSP vs. HTML A maior parte de um arquivo jsp consiste em tags HTML São passadas como saída do servlet Páginas jsp são criadas com ferramentas HTML Comentários JSP são expressos como <%-- --> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 26 13

Expressões Usadas para inserir valores diretamente na saída Sintaxe: <%= expressão java %> 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 As expressões podem ser qualquer comando Java que retorne valor Exemplo: Data: <%= new java.util.date() %> 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 14

Variáveis pré-definidas Existem variáveis em JSP que representam os objetos dos servlets: out request response session Exemplo: Host: <%request.getservername()%> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 29 Elementos XML As tags jsp podem ser escritas no formato XML 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 15

Scriptlets Trechos de código Java Delimitados por <% e %> Sintaxe XML: <jsp:scriptlet> código java </jsp:scriptlet> Podem acessar as variáveis pré-definidas April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 31 Scriptlets Exemplo: <% String cor = request.getparameter( cor ); if (cor == null) cor = white ; %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 32 16

Scriptlets 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 Para definir métodos ou campos fora dos métodos do servlet gerado Sintaxe: <%! declaração java %> Em XML: <jsp:declaration> declaração java </jsp:declaration> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 34 17

Diretivas JSP Afetam a estrtura geral do servlet gerado da página JSP Possuem o seguinte formato: <%@diretiva atributo= valor %> ou em XML <jsp:directive.diretiva atributo= valor /> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 35 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 April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 36 18

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.* %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 37 Diretiva page Atributo contenttype Usado para alterar o formato MIME do texto de saída Exemplo: <%@page contenttype= text/html %> Também pode ser especificado o conjunto de caracteres com charset April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 38 19

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 %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 39 Diretiva page Atributo session Indica se a página em questão faz parte de uma sessão sendo que o seu valor padrão é true Ex: <%@page session= false %> Neste caso a variável pré-definida session não pode ser acessada 20

Diretiva page Atributo buffer Indica o uso e tamanho do buffer usado pela variável out. Exemplo: <%@page buffer = 32kb %> ou <%@page buffer = none %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 41 Diretiva page Atributo autoflush Controla o comportamento do buffer quando ele estiver cheio: true executa um flush automática e false gera uma exceção Exemplo: <%@page autoflush= true %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 42 21

Diretiva page Atributo extends Altera a superclasse do servlet gerado Exemplo: <%@page extends= MeuServlet.class %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 43 Diretiva page Atributo info Define a string de descrição do servlet gerado Será retornada pelo método getservletinfo() Exemplo: <%@page info= descrição %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 44 22

Diretiva page Atributo errorpage Indica o nome da página que deve ser mostrada em caso de erro Exemplo: <%@page errorpage= URL relativa %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 45 Diretiva page Atributo iserrorpage Indica se a página atual pode ser usada como página de erro O valor padrão deste atributo é false Exemplo: <%@page iserrorpage= true %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 46 23

Diretiva include Usada para incluir outros arquivos em páginas JSP Possui dois formatos, o primeiro inclui arquivos em tempo de compilação e o segundo em tempo de requisição 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) Sintaxe: <%@include file= URL relativa %> Arquivos incluídos podem ser arquivos JSP 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 24

Incluindo Arquivos (requisição) Sintaxe: <jsp:include page= URL relativa flush= true %> Os arquivos incluídos não podem conter comandos JSP Se o arquivo mudar, ele será lido novamente. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 49 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> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 50 25

Diretiva plugin Para passar parâmetros para a classe envolvida com o plugin utiliza-se a diretiva jsp:params dentro de jsp:plugin Exemplo: <jsp:params> <jsp:param name= cor value = red > <jsp:params> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 51 Diretiva plugin Se o browser não suportar objetos pode ser mostrado texto alternativo O texto é definido em jsp:fallback dentro de jsp:plugin Exemplo: <jsp:fallback> <b>seu browser não suporta JAVA</b> </jsp:fallback> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 52 26

POO-Java JSP E Servlets April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 53 JSP e Servlets - Utilização Em um sistema Web deve-se pensar na separação entre código e visualização Uma das abordagens para esta separação é utilizar servlets e JSP 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 27

JSP e Servlets - Utilização Podemos realizar esta integração de três maneiras: Através de links ou botões inseridos nas páginas Html Com o uso do método sendredirect do objeto response Redirecionando o controle através de RequestDispatcher April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 55 JSP e Servlets - Utilização Nos dois primeiros métodos, o controle é totalmente repassado e uma nova conexão tem que ser aberta com o cliente Em certas situações é necessário mesclar a saída de servlet com JSP Para realizar esta integração é necessário usar um RequestDispatcher April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 56 28

Redirecionando Requisições Para redirecionar uma requisição de um servlet para um JSP deve-se: Recuperar um redirecionador de getservletcontext Redirecionar o controle com forward Note que este redirecionamento difere de sendredirect pois não é criada uma nova conexão Redirecionando Requisições Exemplo: RequestDispatcher d = getservletcontext(). getrequestdispatcher(url) d.forward(request, response); A partir deste momento o controle sai do servlet atual April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 58 29

Redirecionando Requisições Se o recurso destino for estático (página HTML), o redirecionamento só funcionada para requisições GET Para evitar este problema, mude a extensão do recurso estático para JSP. 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 Para enviar informações para o recurso destino (dinâmico): Parâmetros na URL no caso de requisições GET Inserir um atributo na requisição (request) Inserir um atributo na sessão (session) Inserir um atributo no contexto (application) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 60 30

Enviando Informações (request) Para enviar um objeto com duração request deve-se usar antes do redirecionamento: request.setattribute( atrib, valor); Para recuperar o valor no recurso redirecionado: Tipo valor = (Tipo) request.getattribute( atrib ); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 61 Enviando Informações (application) Se o objeto deve durar durante toda a vida do servlet, usar antes do redirecionamento: getservletcontext().setattribute( atrib, valor); No recurso redirecionado: Tipo valor = (Tipo) getservletcontext().getattribute( atrib ); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 62 31

Enviando Informações (session) Para objetos de sessão, utilizar o procedimento normal: HttpSession session = request.getsession(true); session.setattribute( atrib, valor); Para recuperar o atributo: Tipo valor = (Tipo) session.getattribute( atrib ); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 63 Recuperando Informações no JSP Para recuperar informações enviadas por um dos três métodos anteriores deve-se utilizar Beans com escopo: <jsp:usebean id= atrib class= Tipo scope =... /> A recuperação dos parâmetros, segue a método normal April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 64 32

Inclusão de Saída O comando forward redireciona o controle e não permite que o servlet atual insira dados na saída Se for necessário enviar estes dados e redirecionar o controle deve ser usado o método include: dispatcher.include(request, response); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 65 Inclusão de Saída A principal diferencá com o forward é que podem ser enviados dados para a saída tanto antes do include como depois Os servlets ou JSPs chamados com este comando NÃO podem alterar o cabeçalho de resposta (setheader) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 66 33

Inclusão de Saída 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 Adicionalmente o forward define cinco atributos (setattribute) 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 Estes atributos são recuperados com request. getattribute javax.servlet.include.request_uri javax.servlet.include.context_path javax.servlet.include.servlet_path javax.servlet.include.path_info javax.servlet.include.query_string April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 68 34

Redirecionamento com JSP Embora seja mais comum o servlet redirecionar o controle, é possível redirecionar a partir de um JSP Este redirecionamento é feito com a tag forward: <jsp:forward page= URL /> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 69 Objeto envolvidos em uma servlet HttpServletRequest contém informações provenientes do cliente. Parâmetros e seus valores podem ser consultados através dos métodos getparameter HttpServletResponse permite gerar a saída a ser enviado ao cliente. Com o auxílio de um objeto PrintWriter PrintWriter out = response.getwriter(); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 70 35

Manipulando requisições do usuário getparameter( nome ) Retorna o valor da primeira ocorrência de nome na string de consulta Funciona de forma idêntica para requisições GET epost Retorna null se o parâmetro não existe na consulta. getparametervalues("nome") Retorna um array dos valores de todas as ocorrências do nome na consulta. 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.) getparameternames() Retorna uma lista (Enumeration) de parâmetros de requisição. response.setcontenttype Define o cabeçalho (Content-Type) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 72 36

Problemas com Servlets Parar gerar páginas dinâmicas, é preciso embutir HTML ou XML dentro de instruções Java. out.print( <H1>Exemplo</H1> ); 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 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. Mais complicado de trabalhar do que com HTML e Javascript. Solução: scripts de servidor ou Java Server Pages April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 74 37

Exercício I Para testar a aplicação anterior (SaudarUsuario.jsp), copie o arquivo para o diretório raiz do container JSP sendo utilizado. (SaudarUsuario.jsp está na pasta web/jsp dos exemplos) No caso do Tomcat: CATALINA_HOME\webapps\ROOT A seguir, acesse a página JSP http://127.0.0.1:8080/saudarusuario.jsp http://127.0.0.1:8080/saudarusuario.jsp?usuario=eduardo Verifique que o código Java das scriptlets não é enviado ao browser view source no navegador WEB April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 75 Exercício II Este exercício testa a página ListaEmpregados.jsp Esta página está na pasta web/jsp dos exemplos. Copie este arquivo para CATALINA_HOME/webapps/oficina Crie um descritor de contexto da aplicação. (Vide o apêndice deste slide) Copie o driver do MySQL (.jar) para a pasta do Tomcat denominada CATALINA_HOME/common/lib. Levante o servidor MySQL Acesse a página: http://localhost:8080/oficina/listaempregados.jsp April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 76 38

POO-Java JavaBeans April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 77 Java Beans e JSP Um objeto bean pode ser declarado em uma página JSP através do tag jsp:usebean. Exemplo: <jsp:usebean id= user class= com.foo.userinfobean /> <% if (user.isvalid()) { %> <p> Usuário <%= user.getfirstname() %> válido. <% } else { %> <p> Usuário <%= user.getfirstname() %> inválido. <% } %> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 78 39

Escopo de um Java Bean Java Beans possuem escopo. JSP usa um modelo de persistência que permite manter um objeto Java (bean) em diferentes escopos. 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) O escopo de um bean determina o quanto este bean irá existir. O atributo scope da tag jsp:usebean é 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 jsp:usebean Utilizada para tornar um bean disponível em uma página JSP <jsp:usebean id="u" scope="session" class="exemplobean.usuario" /> jsp:setproperty Utilizada para invocar um método modificador (setter) <jsp:setproperty name="bean Name" property="propertyname param="parametername"/> <jsp:setproperty name="bean Name" property="propertyname"/> <jsp:setproperty name="bean Name" property="*"/> jsp:getproperty Utilizada para invocar um método seletor (getter) <jsp:getproperty name="nome Bean" property="propertyname"/> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 80 40

Exemplo de uso de um Bean Página JSP que usa HelloBean <HTML><HEAD> <jsp:usebean id="hello" class="beans.hellobean"/> <jsp:setproperty name="hello" property="mensagem param="usuario" /> <TITLE>Exemplo de uso de Bean</TITLE> </HEAD> <BODY> <H1>Exemplo de uso de Bean</H1> <P>Hello, <jsp:getproperty name="hello" property="mensagem" /> </BODY></HTML> April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 81 Exercício III Esse exercício usa os arquivos DefinirUsuario.jsp, ObterUsuario.jsp e Usuario.java. Todos eles estão abaixo da pasta web Essa aplicação tem duas partes: uma página JSP e uma classe Java (JavaBean) a) Compile o JavaBean (observe que ele está em um pacote) e copie-o para o webapps/root/web- INF/classes javac d CATALINA_HOME/webapps/ROOT/WEB- INF/classes Usuario.java April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 82 41

Exercício III b) Copie os arquivos JSP para webapps/root c) Acesse via http://localhost:8080/definirusuario.jsp d) Acesse via http://localhost:8080/obterusuario.jsp April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 83 42