Padrões de Projeto para
Sistemas Web
Misael Santos e Rossana Andrade
[email protected]
Universidade Federal do Ceará – Jan/2003
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
1
Agenda

Introdução
– Servlets

Padrões
– Web Interceptor
– Web Handlers
– Web Compiler
– Super Component

Referências
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
2
Servlets
Servidor Web
Web Container
http://www.ufc.br
Servlet
Cliente
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
3
Servlets

Características
– Classes Java
– Boa Performance
– Suporta Requisições Concorrentes
– Simples e Extensível
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
4
Servlets

Ciclo de Vida
– Inicialização
– Serviço
– Finalização
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
5
Servlets
Carregado
em memória
init()
Em
Inicialização
new()
Disponível
service()
destroy()
Em
destruição
Copyright © 2003 Misael Santos e Rossana Andrade
Não
carregado
DC - UFC
6
Agenda

Introdução
– Servlets

Padrões
– Web Interceptor
– Web Handlers
– Web Compiler
– Super Component

Referências
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
7
Web Interceptor

Contexto:
Página de Crédito
Página de Débito
<<submit>>
ComponenteCredito
Copyright © 2003 Misael Santos e Rossana Andrade
<<submit>>
ComponenteDebito
DC - UFC
8
Web Interceptor

Problema:
– Como evitar a duplicação de código no
início das operações que executam as
requisições em sistemas Web
estruturados de forma modular?
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
9
Web Interceptor
Página de Crédito
Página de Débito
<<submit>>
<<submit>>
Interceptor
<<redirect>>
ComponenteCredito
Copyright © 2003 Misael Santos e Rossana Andrade
<<redirect>>
ComponenteDebito
DC - UFC
10
Web Interceptor
InterceptorMain
Cliente Web
<<submit>>
<<redirect>>
Interceptor1
Interceptor2
<<redirect>>
<<redirect>>
Componente
Credito
Componente
Debito
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
Componente
Transferencia
11
Web Interceptor

Consequências:
– Único ponto de acesso
– Evita repetição desnecessária de código
– Diminui o acoplamento
– Diminui a performance
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
12
Web Interceptor

Implementação
– …extends HttpServlet
– TIpos de Associação:
 Associação
Estática
 Associação Automática
 Associação Dinâmica
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
13
Web Interceptor

Usos Conhecidos
– Framework Web Handlers.
– Portal Encontre & Compre: sistema de
consultas dos assinantes da Listel.
– FiS (Financial Services): migração
J2EE da HiperCard.
– Central de Regulação do SUS:
desenvolvido pelo CESAR.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
14
Web Interceptor

Padrões Relacionados:
– Facade

Customização do Facade para sistemas Web.
– Front Controller

Possui lógica para decidir que componente deve
receber a requisição.
– Intercepting Filter

Acoplados aos Servlets para realizar um préprocessamento.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
15
Agenda

Introdução
– Servlets

Padrões
– Web Interceptor
– Web Handlers
– Web Compiler
– Super Component

Referências
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
16
Web Handlers

Página de
Crédito
Contexto
Página de
Login
Menu de
Movimentações
Links estáticos
de HTML
Página de
Débito
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
17
Web Handlers

Contexto
Menu de
Atualização
Outras
Páginas...
Página de
Login 1
Página de
Crédito
Página de
Login 2
Menu de
Movimentações
Página de
Débito
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
18
Web Handlers

Problema:
– Evitar a duplicação de código e
complexidade na estruturação de
sistemas Web com relacionamento M:N
entre a apresentação e o processamento.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
19
Web Handlers

Solução:
– Handlers de Apresentação
– Handlers de Processamento
– Controlador de Handlers
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
20
Web Handlers
<<Handler de Processamento>>
HP_Login
<<Handler de Apresentação>>
HA_MenuMovimentacoes
processar(ServletRequest, ServletResponse)
apresentar(ServletRequest, ServletResponse)
Login a partir da Página de Login 2
<<Handler de Processamento>>
HP_Login
<<Handler de Apresentação>>
HA_MenuAtualizacao
processar(ServletRequest, ServletResponse)
apresentar(ServletRequest, ServletResponse)
Login a partir da Página de Login 1
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
21
Web Handlers
<<Handler de Processamento>>
HP_Credito
<<Handler de Apresentação>>
HA_MenuMovimentacoes
processar(ServletRequest, ServletResponse)
apresentar(ServletRequest, ServletResponse)
Execução da operação de Crédito
<<Handler de Processamento>>
HP_Debito
<<Handler de Apresentação>>
HA_MenuMovimentacoes
processar(ServletRequest, ServletResponse)
apresentar(ServletRequest, ServletResponse)
Execução da operação de Débito
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
22
Web Handlers

Consequências
– Maior reuso de código
– Flexibilidade na composição
– Mudanças na apresentação não causam efeito
no processamento
– Facilita a implementação de sistemas que
requerem diferentes formatos de saída
– Aumenta o número de classes
– Complexidade na implementação
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
23
Web Handlers

Usos Conhecidos
– Portal Encontre & Compre: sistema de consultas dos
assinantes da Listel.
– Sistema de Fomento Lattes
– Prospectar: Sistema de prospecção tecnológica do
Governo Federal.
– Web2Billing: consulta e pagamento de faturas online
– FiS (Financial Services): migração J2EE da HiperCard.
– Fep (Call Center no FEP): da HiperCard.
– Gin (Sistema de Gestão Interna): sistema de apoio a
gestão interna do CESAR.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
24
Web Handlers

Padrões Relacionados
– Na construção dos handlers de apresentação
pode ser usado o padrão Web Compiler.
– O Facade pode ser usado para agrupar as
regras de negócio em um único ponto.
– O Controlado de Handlers deve implemetar o
padrão Web Interceptor.
– O padrão Super Component pode ser usado na
implementação dos Handlers de apresentação e
de processamento.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
25
Agenda

Introdução
– Servlets

Padrões
– Web Interceptor
– Web Handlers
– Web Compiler
– Super Component

Referências
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
26
Web Compiler

Contexto:
...
mensagem = consultarMensagem();
texto = “<HTML><HEAD>Exemplo
1</HEAD><BODY>”;
texto = texto + mensagem;
texto = texto + “</BODY></HTML>”;
out.println(texto);
...
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
27
Web Compiler

Contexto:
–
–
–
–
Impossibilidade de ver o Layout
Designers X Engenheiros de Software
Recompilação a cada modificação no Layout
Dificulta a legibilidade do código
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
28
Web Compiler

Problema:
– Como desenvolver uma aplicação Web
de forma a evitar que o layout das
páginas HTML esteja misturado com a
lógica de execução das operações do
sistema?
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
29
Web Compiler

Passagem de
dados dinâmicos
Solução:
Regras de
Negócio
Componente
Web
Web Compiler
Recupera
Template
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
30
Web Compiler
Cliente Web
: Componente Web
: Web Compiler
template.txt :
Template
request
executar()
leitura
processar()
resposta
resposta
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
31
Web Compiler

Consequências
– Separação completa entre o código de
apresentação e o de processamento.
– Visualização do Layout independente da
execução do sistema.
– Alterações no Layout não implicam em
recompilação.
– Um pequeno atraso no processamento
da requisição.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
32
Web Compiler

Usos Conhecidos
– FreeMarker
– WebMacro
– Velocity
– API do CESAR.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
33
Web Compiler

Padrões Relacionados
– Skin
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
34
Agenda

Introdução
– Servlets

Padrões
– Web Interceptor
– Web Handlers
– Web Compiler
– Super Component

Referências
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
35
Super Component

Contexto:
– Ciclo de vida bem definido:
Inicialização, serviço e destruição
- ex: Servlets, JSPs, Web Handlers.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
36
Super Component

Contexto:
– inicialização:
 conexões
com bancos de dados;
 abertura e leitura de arquivos;
 criação ou instanciação de objetos;
– destruição
 liberação
dos recursos alocados durante a
inicialização.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
37
Super Component

Problema:
– Como evitar a duplicação de código de
inicialização e destruição nos diversos
componentes Web de um sistema?
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
38
Super Component

Solução:
SuperComponent
init ()
destroy ()
Component
service ()
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
39
Super Component

Consequências:
– Código mais limpo.
– Evita a duplicação de código.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
40
Super Component

Usos Conhecidos
– Sistema Wide: Web Information of
Development
– Portal Encontre & Compre: sistema de
consultas dos assinantes da Listel.
– FiS (Financial Services): migração
J2EE da HiperCard.
– Central de Regulação do SUS:
desenvolvido pelo CESAR.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
41
Referências
[1] Gibeon Soares de Aquino Júnior,
“Desenvolvimento de Sistemas Web em Java”,
Universidade Federal de Pernambuco, 2002.
[2] Andrade, R.M.C, “Capture, Reuse, and Validation
of Requirements and Analysis Patterns for Mobile
Systems”, University of Ottawa, Ottawa, Canadá,
2001.
[3] Deepak Alur, John Crupi and Dan Malks “Core
J2EE Patterns Best Practices and Design
Strategies”. Prentice Hall, March 2001.
[4] Erich Gamma, Richard Helm, Ralph Johnson and
John Vlissides. “Design Patterns Elements of
Reusable Object Oriented Software”. Addison
Wesley, 1994.
Copyright © 2003 Misael Santos e Rossana Andrade
DC - UFC
42
Download

PadroesWeb_pdf - Universidade Federal do Ceará