DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 1
Padrões de Projeto paraSistemas Web
Misael Santos e Rossana [email protected]
Universidade Federal do Ceará – Jan/2003
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 2
Agenda
� Introdução – Servlets
� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component
� Referências
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 3
Servlets
http://www.ufc.br
Cliente
Servidor Web
Web Container
Servlet
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 4
Servlets
� Características– Classes Java– Boa Performance– Suporta Requisições Concorrentes– Simples e Extensível
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 5
Servlets
� Ciclo de Vida– Inicialização– Serviço– Finalização
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 6
Servlets
Carregadoem memória
EmInicialização
Disponível
Emdestruição
Nãocarregado
service()
new()
init()
destroy()
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 7
Agenda
� Introdução– Servlets
� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component
� Referências
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 8
Web Interceptor
� Contexto:
Página de Crédito
ComponenteCredito ComponenteDebito
Página de Débito
<<submit>><<submit>>
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 9
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?
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 10
Web Interceptor
Página de Crédito
Interceptor
ComponenteCredito ComponenteDebito
Página de Débito
<<submit>><<submit>>
<<redirect>><<redirect>>
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 11
Web InterceptorCliente Web InterceptorMain
ComponenteCredito
ComponenteDebito
ComponenteTransferencia
<<redirect>>
<<submit>>
<<redirect>><<redirect>>
Interceptor1 Interceptor2
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 12
Web Interceptor
� Consequências:– Único ponto de acesso– Evita repetição desnecessária de código– Diminui o acoplamento– Diminui a performance
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 13
Web Interceptor
� Implementação– …extends HttpServlet– TIpos de Associação:
� Associação Estática� Associação Automática� Associação Dinâmica
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 14
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 15
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 16
Agenda
� Introdução – Servlets
� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component
� Referências
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 17
Web Handlers
� Contexto
Página de Login
Menu deMovimentações
Página deCrédito
Página deDébito
Links estáticosde HTML
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 18
Web Handlers
� Contexto
Página de Login 2 Menu de
Movimentações
Página deCrédito
Página deDébito
Página de Login 1
Menu deAtualização
OutrasPáginas...
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 19
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 20
Web Handlers
� Solução:– Handlers de Apresentação– Handlers de Processamento– Controlador de Handlers
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 21
Web Handlers<<Handler de Processamento>>
HP_Login
processar(ServletRequest, ServletResponse)
<<Handler de Apresentação>>HA_MenuMovimentacoes
apresentar(ServletRequest, ServletResponse)
Login a partir da Página de Login 2
<<Handler de Processamento>>HP_Login
processar(ServletRequest, ServletResponse)
<<Handler de Apresentação>>HA_MenuAtualizacao
apresentar(ServletRequest, ServletResponse)
Login a partir da Página de Login 1
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 22
Web Handlers<<Handler de Processamento>>
HP_Credito
processar(ServletRequest, ServletResponse)
<<Handler de Apresentação>>HA_MenuMovimentacoes
apresentar(ServletRequest, ServletResponse)
Execução da operação de Crédito
<<Handler de Processamento>>HP_Debito
processar(ServletRequest, ServletResponse)
<<Handler de Apresentação>>HA_MenuMovimentacoes
apresentar(ServletRequest, ServletResponse)
Execução da operação de Débito
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 23
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
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 24
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 25
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 26
Agenda
� Introdução– Servlets
� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component
� Referências
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 27
Web Compiler
� Contexto:...mensagem = consultarMensagem();texto = “<HTML><HEAD>Exemplo
1</HEAD><BODY>”;texto = texto + mensagem;texto = texto + “</BODY></HTML>”;out.println(texto);...
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 28
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
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 29
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?
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 30
Web Compiler
� Solução:
Regras de Negócio
ComponenteWeb
Passagem de dados dinâmicos
Template
Web Compiler
Recupera
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 31
Web Compiler
Cliente Web : Componente Web : Web Compilertemplate.txt :
Template
request
executar()
leitura
processar()
resposta
resposta
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 32
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 33
Web Compiler
� Usos Conhecidos– FreeMarker– WebMacro– Velocity– API do CESAR.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 34
Web Compiler
� Padrões Relacionados– Skin
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 35
Agenda
� Introdução– Servlets
� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component
� Referências
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 36
Super Component
� Contexto:– Ciclo de vida bem definido:Inicialização, serviço e destruição- ex: Servlets, JSPs, Web Handlers.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 37
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 38
Super Component
� Problema:– Como evitar a duplicação de código de
inicialização e destruição nos diversos componentes Web de um sistema?
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 39
Super Component
� Solução:SuperComponent
init ()destroy ()
Component
service ()
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 40
Super Component
� Consequências:– Código mais limpo.– Evita a duplicação de código.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 41
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.
DC DC -- UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 42
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.
Top Related