programação com objetos distribuídos j2ee web 1 componentes web do j2ee 5.0 cristina ciprandi...

30
Informática UFRGS Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do Componentes Web do J2EE 5.0 J2EE 5.0 Cristina Ciprandi Menegotto

Upload: joaovictor-mangual

Post on 07-Apr-2016

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 1

Componentes Web do J2EE Componentes Web do J2EE 5.05.0

Cristina Ciprandi Menegotto

Page 2: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 2

ReferênciReferênciaa

The JavaTM EE 5 Tutorial Third Edition For Sun Java System Application Server Platform Edition 9 Eric Jendrock, Jennifer Ball, Debbie Carson, Ian Evans, Scott Fordin

and Kim Haase Addison-Wesley, 2006 Disponível em: http://java.sun.com/javaee/5/docs/tutorial/doc/

Page 3: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 3

IntroduçãoIntrodução

Aplicações Java EE são constituídas por unidades auto contidas de software funcional

Componentes Web do J2EE 5.0: Java Servlet JavaServer Pages (JSP)

JavaServer Pages Standard Tag Library (JSTL) JavaServer Faces (JSF)

JSTL e JSF são novidades do J2EE 5.0

Page 4: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 4

Surgimento de Surgimento de ServletsServlets

Serviços passaram a ser fornecidos pela Web

Surgiu necessidade de conteúdo dinâmico

Tecnologias desenvolvidas visando atender a essa necessidade: Applets

Uma das primeiras iniciativas Foco na plataforma cliente

Scripts Common Gateway Interface (CGI) Foco no lado servidor Dependência de plataforma e falta de escalabilidade

Java Servlet Criada visando superar as deficiências do CGI Modo portável de prover conteúdo dinâmico orientado ao usuário

Page 5: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 5

Definição de ServletsDefinição de Servlets

Definição de Servlets: Classes Java Processam requisições e constroem respostas dinamicamente Estendem capacidades de servidores que permitem acesso a

aplicações através de modelo de programação requisição/resposta Podem responder a qualquer tipo de requisição

Maior uso é na extensão de aplicações hospedadas por servidores Web

Há classes Servlets específicas para o protocolo HTTP

Page 6: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 6

Definição de Definição de JSPJSP

Definição de JSP: Permite criação simples de conteúdo Web que possui tanto

componentes estáticos como dinâmicos Disponibiliza todas as capacidades dinâmicas da tecnologia Java

Servlet Provê abordagem mais natural que a de Servlets para a criação de

conteúdo estático

Principais aspectos da tecnologia: Linguagem para desenvolvimento de páginas JSP Linguagem de Expressões (EL) para acessar objetos do servidor Mecanismos para definição de extensões à linguagem JSP Uma API usada por desenvolvedores de containers Web

Page 7: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 7

Definição de Página Definição de Página JSPJSP

Definição de página JSP: Documento baseado em texto que contém dois tipos de texto:

Dados estáticos Podem ser expressos em qualquer formato baseado em texto Exemplos de formatos: HTML, SVG, WML, XML, etc.

Elementos JSP Constroem conteúdo dinâmico Podem ser expressos nas sintaxes padrão ou XML

Page 8: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 8

Definição de Definição de JSTLJSTL

Definição de JSTL: Encapsula funcionalidades essenciais comuns a muitas aplicações

JSP Permite o emprego de um único conjunto padronizado de tags

Permite deployment de aplicações em qualquer container JSP que suporta JSTL

Facilita otimização da implementação das tags

JSTL possui tags para: Iteradores e condicionais responsáveis por controle de fluxo Manipulação de documentos XML Internacionalização Acesso a bancos de dados usando SQL Funções comumente usadas

Page 9: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 9

Tecnologias Web Tecnologias Web J2EEJ2EE

Relação entre as tecnologias Web do J2EE 5.0 (Jendrock et al., 2006)

Page 10: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 10

Comparação entre Comparação entre TecnologiasTecnologias

Embora Servlets e páginas JSP possam ser usados alternativamente, cada um é mais adequado a um propósito Servlets:

Aplicações orientadas a serviços Funções de controle de aplicações orientadas à apresentação

Páginas JSP: Geração de marcação como HTML, SVG, WML e XML

JSF: Baseada em Servlets e JSP Provê framework de componentes para interface de usuário (UI)

voltado a aplicações Web

Page 11: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 11

Definição de Definição de JSFJSF

Definição de JSF: Framework de interface de usuário para a construção de aplicações

Web

Principais componentes da tecnologia: Duas bibliotecas de tags customizadas de JSP

Para expressar componentes UI dentro de uma página JSP Para conectar componentes a objetos do servidor

API para representar componentes UI e gerenciar seu estado Tratamento de eventos Validação de entradas Conversão de dados Configuração de navegação de páginas Suporte à internacionalização e acessibilidade

Page 12: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 12

Execução de UI no Execução de UI no ServidorServidor

A interface de usuário é executada no servidor (Jendrock et al., 2006)

Page 13: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 13

Benefícios de Benefícios de JSFJSF

Separação clara entre comportamento e apresentação Com tecnologia JSP, essa separação é atingida em parte

Aplicação JSP não pode mapear requisições HTTP a tratamento de eventos específico de um componente

Nem pode gerenciar elementos UI como objetos stateful no servidor Separação permite foco em partes do processo de desenvolvimento

e provê modelo de programação simples para a ligação das partes

Conceitos familiares de componentes UI e da camada Web sem limitação a tecnologias particulares de scripting ou marcação

Sobreposição direta à API Servlet

Arquitetura rica para gerenciar componentes de UI

Page 14: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 14

Aplicação JSF Aplicação JSF TípicaTípica

Uma aplicação JSF típica inclui as seguintes partes: Um conjunto de páginas JSP Um conjunto de backing beans: componentes JavaBeans que

definem propriedades e funções a componentes UI de uma página Um arquivo que define regras de navegação de páginas e configura

beans e outros objetos customizados Um deployment descriptor Possivelmente, um conjunto de objetos customizados criados pelo

desenvolvedor da aplicação Um conjunto de tags customizadas para representar objetos

customizados na página

Page 15: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 15

Exemplo guessNumber Exemplo guessNumber

Aplicação exemplo simples: Solicita número entre 0 e 10 Segunda página diz se

adivinhou Verifica validade da entrada

Tarefas: Mapear instância de

FacesServlet Criar as páginas Definir a navegação da página

no arquivo de configuração Desenvolver os backing beans Adicionar managed bean

declarations ao arquivo de configuração

Página greetings.jsp (Jendrock et al., 2006)

Page 16: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 16

Mapeamento de Mapeamento de FacesServletFacesServlet

Todas as aplicações JSF devem incluir mapeamento para a instância de FacesServlet em seus descritores de deployment

A instância aceita requisições, as passa ao ciclo de vida para processamento e inicializa recursos

Page 17: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 17

Criação de Criação de greeting.jspgreeting.jsp

Criar as páginas é responsabilidade do “autor” Layout de componentes UI nas páginas Mapeamento dos componentes a beans Inclusão de tags que registram conversores, validadores e listeners sobre os

componentes

Adição de tags HTML e HEAD e de diretiva do tipo de conteúdo

Declaração de bibliotecas de tags

Page 18: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 18

Criação de Criação de greeting.jspgreeting.jsp

Adição das tags view e form Todas as tags de componentes JSF devem estar dentro de uma tag view Possível especificar ID para a tag form, que é mapeado ao componente UI

associado no servidor

Adição de um componente label e de imagem

Page 19: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 19

Criação de Criação de greeting.jspgreeting.jsp

Adição de um text field: A tag inputText representa um componente text field No exemplo, recebe um valor inteiro como entrada

Page 20: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 20

Definição de Definição de NavegaçãoNavegação

Determinar a qual página ir depois de clique em botão ou hyperlink

Definida em arquivo de configuração

Page 21: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 21

Desenvolvimento de Desenvolvimento de BeansBeans

Desenvolver os beans é responsabilidade do programador Aplicação JSF típica liga um backing bean a cada página Relembrando:

Page 22: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 22

Desenvolvimento de Desenvolvimento de BeansBeans

Page 23: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 23

Adição de Managed Bean Adição de Managed Bean DeclarationsDeclarations

Necessário configurar backing beans no arquivo de configuração Criação automática de novas instâncias de beans sempre que necessárias Tarefa do arquiteto de aplicações

Page 24: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 24

Modelo de Componentes UIModelo de Componentes UI

JSF provê classes de componentes UI e interfaces de comportamento associadas

Classes de components UI: Estendem UIComponentBase São completamente extensíveis

Algumas classes de componentes UI da tecnologia JSF: UICommand: representa controle que dispara ações quando ativado UIForm: encapsula grupo de controles que submetem dados à

aplicação UIGraphic: exibe imagem UIInput: toma uma entrada de usuário

Page 25: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 25

Modelo de Componentes UIModelo de Componentes UI

Interfaces de comportamento: ActionSource: Indica que o componente pode disparar um evento de

ação ActionSource2: Estende ActionSource e provê a mesma

funcionalidade, mas permite que componentes usem a EL unificada EditableValueHolder: Estende ValueHolder e especifica opções

adicionais para componentes editáveis, como validação e emissão de eventos de mudança de valor

NamingContainer: Exige que cada componente com raiz neste componente tenha um ID único

StateHolder: Indica que um componente tem estado que deve ser salvo entre requisições

ValueHolder: Indica que o componente mantém um valor local, bem como a opção de acessar dados na camada de modelo

Page 26: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 26

Modelo de Modelo de RenderizaçãoRenderização

Render kit define como classes de componentes são mapeadas a tags de componentes que são apropriadas a um cliente particular

A implementação de JSF inclui um render kit padrão para HTML

Cada custom tag JSP definida no render kit HTML padrão é composta por: Funcionalidade do componente – definida na classe UIComponent Atributos de renderização – definidos pela classe Renderer

Tags de UICommand (Jendrock et al., 2006)

Page 27: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 27

Modelo de Modelo de ConversãoConversão

Aplicação JSF pode opcionalmente associar um componente com dados de objeto do lado servidor Objeto é um componente JavaBeans, como um backing bean Aplicação faz gets e sets chamando as propriedades de objeto

adequadas para o componente

Quando um componente é ligado a um objeto, a aplicação fica com duas visões dos dados do componente: Visão de modelo: dados são representados por tipos de dados Visão de apresentação: dados são representados de forma legível ou

modificável pelo usuário

Implementação JSF converte automaticamente dados de componentes entre as duas visões

Page 28: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 28

Modelo de Eventos e Modelo de Eventos e ListenerListener

Classes de eventos fortemente tipadas e interfaces Listener Aplicação usa para tratar eventos gerados por componentes UI Objeto Event identifica componente que gerou o evento e grava

informação sobre evento

Para ser notificada sobre um evento, uma aplicação deve: Prover uma implementação da classe Listener Registrá-la no componente que gera o evento

Quando componente é ativado: Evento é disparado Implementação JSF invoca método Listener, que processa o evento

Suporta 3 tipos de eventos: mudança de valor, ação e data-model

Page 29: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 29

Modelo de Modelo de ValidaçãoValidação

Tecnologia JSF suporta mecanismos para validar dados de componentes editáveis Define um conjunto padronizado de classes para realizar validações

comuns de dados Validação ocorre antes que o dado seja atualizado

Biblioteca de tags núcleo de JSF também define conjunto de tags que correspondem às implementações padronizadas de Validator

Page 30: Programação com Objetos Distribuídos J2EE Web 1 Componentes Web do J2EE 5.0 Cristina Ciprandi Menegotto

InformáticaUFRGS

Programação com Objetos Distribuídos J2EE Web 30

Considerações Considerações FinaisFinais

Competição entre Struts e JSF

Uso de JSF com Ajax