programação com objetos distribuídos j2ee web 1 componentes web do j2ee 5.0 cristina ciprandi...
TRANSCRIPT
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
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/
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
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
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
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
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
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
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)
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
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
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)
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
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
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)
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
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
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
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
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
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:
InformáticaUFRGS
Programação com Objetos Distribuídos J2EE Web 22
Desenvolvimento de Desenvolvimento de BeansBeans
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
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
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
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)
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
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
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
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