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 Handlers – 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 Handlers Referências Copyright © 2003 Misael Santos e Rossana Andrade DC - UFC 7 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 8 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 9 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 10 Web Handlers Solução: – Handlers de Apresentação – Handlers de Processamento – Controlador de Handlers Copyright © 2003 Misael Santos e Rossana Andrade DC - UFC 11 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 12 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 13 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 14 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 15 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 16 Referências [1] Gibeon Soares de Aquino Júnior, “Desenvolvimento de Sistemas Web em Java”, Dissertação de Mestrado, Universidade Federal de Pernambuco, 2002. [2] 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 17