1. Framework Struts 2
Projeto Minha Casa Minha Vida
Odilon Rauen Junior
odilon.rauen@uol.com.br
Data: 08/10/2009
2. Agenda
Introdução.
O que é Struts?
Histórico Struts.
Histórico Struts 2.
Alguns dos principais recursos.
Projeto Minha Casa Minha Vida.
Recursos utilizados no projeto.
Bibliografia.
2
3. Introdução
Apresentar uma opção de solução, para os
desenvolvedores java que estão definindo um
arquitetura de um projeto Web.
Mostrar um caso de sucesso utilizando a
tecnologia Struts 2, assim como, alguns
recursos utilizados no projeto.
3
5. O que é Servlet?
É uma classe Java que herda a capacidade e é
executada em um servidor Web, pois, tem à sua
disposição todo o poder da plataforma Java.
Recebe requisições de clientes, processa dados
e geralmente envia conteúdo dinâmico HTML
ou XML como resposta.
5
6. O que é JSP?
Sua criação foi incentivada devido ao fato de ser difícil
montar páginas HTML usando Servlet.
Uma página JSP nada mais é do que uma página HTML
contendo tags interpretadas por um compilador que
transforma a página HTML em um Servlet
automaticamente.
O principal objetivo é facilitar ainda mais o
desenvolvimento de aplicações WEB em Java.
6
7. O que são Tag Libs?
É um conjunto tags customizadas que contêm códigos
para serem usados na criação de páginas JSP.
Elas basicamente são usadas para que páginas JSP
sejam escritas de uma maneira que procedimentos
comuns não precisem ser escritos em scriplets (código
java, misturado com JSP/HTML).
A maioria das bibliotecas de tags estão contidas em
arquivos JAR para facilitar a instalação das aplicações
Web.
7
8. MVC (Model-View-Control)
Model – O modelo pode ser entendido como a camada de domínio
da aplicação, ou seja, as lógicas de negócio, acesso e persistência
de dados, etc.
View – A visão é responsável por renderizar o modelo. Em
aplicações Web, é o código HTML e os códigos usados para inserir
dados dinâmicos na página(JSP).
Controller – O controlador processa e responde a eventos,
geralmente ações do usuário e, como conseqüência obtém
alterações no modelo e atualiza a camada visão.
8
9. MVC (Modelo 1)
O modelo 1 é centrado em páginas JSP. A aplicação
navega por várias páginas, sendo que qualquer uma
dessas páginas pode acessar um JavaBean que realiza
as operações comerciais.
Vantagem:
Facilidade de desenvolvimento.
Desvantagem :
Não existe separação entre o trabalho do designer e do
desenvolvedor.
Também é difícil de manter e reutilizar.
9
10. MVC (Modelo 2)
O modelo 2 implementa a arquitetura MVC.
Existe um servlet controlador entre o browser
cliente e as páginas JSP/Servlets.
Vantagens:
Maior facilidade de manutenção e reutilização.
Desvantagens:
É mais difícil de implementar que o modelo 1.
10
11. O que é Framework?
É um aplicação reutilizável e semi-completa que pode
ser especializada para produzir aplicações
personalizadas.
Uma caixa de ferramentas para os desenvolvedores,
que podem ser utilizadas em vários projetos.
Um conjunto com várias soluções comum a muitos
projetos.
Exemplo: login, validação, segurança, etc.
11
12. O que Struts?
É um software feito em Java de código fonte aberto que
ajuda os desenvolvedores a construírem aplicações
Web de maneira mais rápida.
Do mesmo modo que os engenheiros da construção civil
usam suportes para fornecer sustentação para uma
obra, os desenvolvedores usam o Struts para suportar
cada camada de uma aplicação comercial.
12
13. Histórico do Struts
Desenvolvido por Craig R. McClanahan.
Foi doado a fundação Apache, Maio de 2000.
Lançado a versão 1.0 em Junho 2001.
Logo se tornou, é ainda é o framework mais popular
para desenvolver aplicações Web em Java.
Site: http://struts.apache.org
13
14. Histórico do Struts 2
No evento JavaOne 2005 os desenvolvedores estavam
discutindo o futuro do Struts, para suportar novas
funcionalidades da Web (2.0).
Após o lançamento do Struts, já existiram vários projetos
concorrentes e até mesmo superiores, porém, nenhum
conseguiu se tornar popular igual Struts.
As equipes resolveram unir forças e surgiu o Struts 2
que na verdade não é uma extensão da primeira versão
e sim a evolução do WebWork v2.2, rebatizado como
Struts 2.
Site:www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html
14
15. Principais Recursos
Validação de entrada.
Gerenciamento de navegação de página.
Conversão de tipos.
Internacionalização e gerenciamento de mensagens.
Suporte AJAX.
Linguagem de expressão OGNL.
Interceptadores.
Injeção de dependência.
Temas pré-definidos.
Baixo acoplamento e facilidade de integração.(Outros Frameworks)
Plugins(Captcha, FreeMaker, XSLT, Upload e Download de
arquivos.
15
17. Arquitetura
As classes FilterDispatcher e Dispatcher são o coração
do Struts 2, provêem o necessário à infra-estrutura para
processar as solicitações.
No início as classes ConfigurationManager,
ActionManager e ObjectFactory são carregadas.
Fluxo de ações do FilterDispatcher:
Serve conteúdo estático.
Determina configuração da ação.
Cria o contexto da aplicação.
Cria o proxy da ação.
Limpa o objeto ActionContext.
17
19. Como Struts 2 Funciona
Primeiro o pedido vai para o Servlet container que é transmitido através de
uma cadeia de filtros padrões.
FilterDispatcher é acionado que por sua vez consultará o ActionMapper
para determinar se o pedido deve invocar uma ação.
Caso positivo, o FilterDispatcher delega o controle ao ActionProxy.
O ActionProxy consulta o framework ConfigurationManager (struts.xml).
Próximo passo, cria um ActionInvocation que é responsável por invocar um
Interceptor e redireciona para Action desejada.
19
20. Como Struts 2 Funciona (Cont.)
Após o retorno da Action, o ActionInvocation é responsável por analisar se
há um Result (JSP, template), mapeado no struts.xml.
Caso positivo é então renderizado a tela (JSP, Template).
Os Interceptors são executados em ordem inversa.
Finalmente, a resposta retona através dos filtros configurados no web.xml.
Passando pelo ActionContextCleanUP que limpara a Thread ActionContext.
20
26. Ações e Resultados
Struts 2 usando Interceptadores resolve a
maioria dos problemas comuns a vários
projetos.
Ex: Tratamento de Erros.
O desenvolvedor precisa apenas se preocupar
com a regra negocial do seu projeto.
Ex: Criando a Action e utilizando no retorno dos
métodos uma String, que antes deve ser definida no
struts.xml para mapear a ação e definir o tipo de
resultado.
26
27. Temas e Templates
Arquivo de configuração struts.properties
struts.ui.theme = simple | ajax
Existem 4 tipos disponíveis.
simple
ajax
xhtml
css_xhtml
27
31. Binding
Os campos do formulário podem ser
reconstruídos como POJOS, sem
necessidade de capturar os dados
individualmente.
Existem a opção de integração nativa com
outro framework Spring, para usar injeção
dependência.
31
33. Interceptor
Permitem interceptar a invocação antes e após
a Action ser executada.
São plugáveis e podem ser ordenados.
Muitos interceptadores prontos e úteis.
Possibilidade criar um personalizado.
33
34. Interceptor (Cont)
Exemplo de utilidades
conversão de tipos
upload de arquivo
login
validação
preparação da pagina
evitar submit duplicados
34
35. Tipos de Validação
Uma aplicação robusta na Web deve garantir que a
entrada de dados do usuário seja validada.
Validadores embutidos no framework:
XML
Ajax
Anotação
Personalizada
35
38. Caso de Sucesso Struts 2
Para explicar um framework novo no mercado,
acredito que a melhor maneira é com projetos
bem sucedidos.
Esse projeto levou 3 meses para ser
desenvolvido, implantado e homologado.
Foram utilizados alguns recursos da tecnologia
que ajudaram muito no desenvolvimento.
38
39. Minha Casa Minha Vida
Programa habitacional do Governo Federal,
Caixa Econômica e o Governo dos Estados.
Subsídio no financiamento de casas próprias
para a população de baixa renda, com parcelas
a partir de R$ 50,00.
Site: www.minhacasaminhavida.gov.br
39
40. Fluxo Principal do Projeto
Apresentação.
Regras.
Cadastro de titular.
Cadastro de dependente.
Tela confirmação.
Relatório com número de protocolo.
40
54. Validação escolhida XML
Justificativa
Para aumentar a produtividade, possibilidade de
dividir o trabalho.
Algumas validações do Projeto:
Campos obrigatórios.
CPF inválido.
CPF como chave única.
Valor renda máxima.
54
63. Conversão de Tipos
No Brasil temos algumas particularidades como
nossa data e moeda que são diferentes das
demais.
USA
data: mm/dd/aaaa
moeda: $ 1,000,000.50
Brasil
data: dd/mm/aaaa
moeda: R$ 1.000.000,50
67. Outros Recursos
Nem todos puderam ser demonstrados.
Interceptors:
ModelDriven, Prepare, Execute and Wait,File
Upload.
Plugins
JasperReports, JFreeChart, Captha.
67
69. Conclusão
Principais Benefícios:
Alta produtividade e baixa curva de aprendizado.
Desenvolvimento com equipe e tempo reduzido.
Manutenção facilitada.
Por ser uma aplicação Web, facilidade na atualização
de versões.
Superou em 100% as expectativas iniciais de público
com mais de 100.000 inscrições.
69
72. Sobre o autor: Odilon Rauen Junior
Graduado em Bacharelado em Análise de Sistemas pela PUC-PR,
(Pontifícia Universidade Católica do Paraná). (2000/2004)
Pós-Graduado em Desenvolvimento Java pelo IF-MT (Instituto Federal de
Educação Ciência e Tecnologia de Mato Grosso). (2007/2008)
Trabalha com Java desde 2002, atualmente é Consultor Java na Ábaco
Tecnologia Informação.
Experiência de 3 anos como Instrutor Java/JEE. (2006/2009)
Certificado SCJP 6.0 (2009), T3 SUN Microsystems(2009)
Instrutor Oficial da SUN Microsystems (2009/2011).
72