SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
Framework Struts 2
                   Projeto Minha Casa Minha Vida

                   Odilon Rauen Junior

                   odilon.rauen@uol.com.br


Data: 08/10/2009
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
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
Contextualização
 Servlets
 JSP
 Tag Libs
 MVC
 MVC 2
 Framework



                   4
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
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
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
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
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
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
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
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
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
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
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
Arquitetura Resumida
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
18
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
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
Arquivos de Configuração




                           21
Arquivo web.xml




                  22
Arquivo struts.xml




                     23
Exemplo Interface Action




                           24
Exemplo classe ActionSupport




                               25
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
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
Tags de Formulários




                      28
Tag de Formulários (cont)




<s:datetimepicker name="nomeVO.nomeCampo" label="Data Deposito"
theme="ajax" displayFormat="dd/MM/yyyy" required="true" />

                                                                  29
Tag de Genéricas




                   30
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
Exemplo de Binding




                     32
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
Interceptor (Cont)
 Exemplo de utilidades
   conversão de tipos
   upload de arquivo
   login
   validação
   preparação da pagina
   evitar submit duplicados


                              34
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
Validação Disponíveis




                        36
Documentação Oficial
 http://struts.apache.org/2.1.8/index.html
 Download




                                             37
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
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
Fluxo Principal do Projeto
 Apresentação.
 Regras.
 Cadastro de titular.
 Cadastro de dependente.
 Tela confirmação.
 Relatório com número de protocolo.



                                      40
41
42
43
44
45
46
47
48
49
Google Analytics (Cidades)




                             50
Google Analytics (Cidades)




                             51
Google Analytics (Países)




                            52
Google Analytics (Países)




                            53
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
Campos Obrigatórios




                      55
Arquivo nomeAction.destino-validations.xml




                                         56
Sexo Obrigatório




                   57
Tag Select e validação regex




                               58
CPF inválido




               59
Arquivo nomeAction.destino-validations.xml




                                             60
Classe CPFValidator.java




                           61
Arquivo configuração validators.xml




                                      62
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
Conversão de Tipos (cont.)




                             64
Conversão de Tipos (cont.)
 Arquivo: xwork.properties
   java.util.Date=nomepacote.DateConverter
   java.math.BigDecimal=nomepacote.BigDecimalConverter
 Arquivo nomeAction-conversion.properties
   pessoaVO.rendaPessoal=BigDecimalConverter
   pessoaVO.dataNascimento=DateConverter
Outros Recursos
 Nem todos puderam ser demonstrados.
 Interceptors:
    ModelDriven, Prepare, Execute and Wait,File
    Upload.
 Plugins
    JasperReports, JFreeChart, Captha.



                                              67
Relatório de Inscritos




                         68
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
Bibliografia
Site:
  http://struts.apache.org/2.x/docs/home.htm




                                          70
Dúvidas




odilon.rauen@uol.com.br

                          71
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

Weitere ähnliche Inhalte

Was ist angesagt?

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singletonWendel Moreira
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Implementando MVC com AJAX
Implementando MVC com AJAXImplementando MVC com AJAX
Implementando MVC com AJAXcejug
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDr. Spock
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)Natanael Fonseca
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) Grupo Treinar
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 

Was ist angesagt? (20)

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singleton
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Implementando MVC com AJAX
Implementando MVC com AJAXImplementando MVC com AJAX
Implementando MVC com AJAX
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Camadas
CamadasCamadas
Camadas
 
Jsf
JsfJsf
Jsf
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Cactus xp
Cactus xpCactus xp
Cactus xp
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 

Andere mochten auch

Guia 2: generalidades del aparato respiratorio
Guia 2: generalidades del aparato respiratorioGuia 2: generalidades del aparato respiratorio
Guia 2: generalidades del aparato respiratorioCamila Figueroa
 
Visual merchan tarea dalila
Visual merchan  tarea   dalilaVisual merchan  tarea   dalila
Visual merchan tarea dalilaKenelma Cuello
 
Internet – SegurançA E Perigos Vs1
Internet – SegurançA E Perigos Vs1Internet – SegurançA E Perigos Vs1
Internet – SegurançA E Perigos Vs1mariadecatiaf
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelumAgenor Neto
 
Encontro de Conselheiros da PREVI
Encontro de Conselheiros da PREVIEncontro de Conselheiros da PREVI
Encontro de Conselheiros da PREVICPFL RI
 
¿Perfil personal ó página de fans?
¿Perfil personal ó página de fans?¿Perfil personal ó página de fans?
¿Perfil personal ó página de fans?pablo_alba
 

Andere mochten auch (9)

Guia 2: generalidades del aparato respiratorio
Guia 2: generalidades del aparato respiratorioGuia 2: generalidades del aparato respiratorio
Guia 2: generalidades del aparato respiratorio
 
Visual merchan tarea dalila
Visual merchan  tarea   dalilaVisual merchan  tarea   dalila
Visual merchan tarea dalila
 
Internet – SegurançA E Perigos Vs1
Internet – SegurançA E Perigos Vs1Internet – SegurançA E Perigos Vs1
Internet – SegurançA E Perigos Vs1
 
Sistema de Apoio à Elevacao do Conhecimento
Sistema de Apoio à Elevacao do ConhecimentoSistema de Apoio à Elevacao do Conhecimento
Sistema de Apoio à Elevacao do Conhecimento
 
Java web fj21-- apostila da caelum
Java web fj21-- apostila da caelumJava web fj21-- apostila da caelum
Java web fj21-- apostila da caelum
 
Encontro de Conselheiros da PREVI
Encontro de Conselheiros da PREVIEncontro de Conselheiros da PREVI
Encontro de Conselheiros da PREVI
 
Framework Struts
Framework StrutsFramework Struts
Framework Struts
 
¿Perfil personal ó página de fans?
¿Perfil personal ó página de fans?¿Perfil personal ó página de fans?
¿Perfil personal ó página de fans?
 
Segurança Lógica de Redes
Segurança Lógica de RedesSegurança Lógica de Redes
Segurança Lógica de Redes
 

Ähnlich wie Framework struts2v2.5

Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebDenis L Presciliano
 

Ähnlich wie Framework struts2v2.5 (20)

Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
1409243945064
14092439450641409243945064
1409243945064
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Angular 2
Angular 2Angular 2
Angular 2
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal Rails
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações Web
 
Conceitos de Java Web
Conceitos de Java WebConceitos de Java Web
Conceitos de Java Web
 

Framework struts2v2.5

  • 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
  • 4. Contextualização Servlets JSP Tag Libs MVC MVC 2 Framework 4
  • 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
  • 18. 18
  • 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
  • 29. Tag de Formulários (cont) <s:datetimepicker name="nomeVO.nomeCampo" label="Data Deposito" theme="ajax" displayFormat="dd/MM/yyyy" required="true" /> 29
  • 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
  • 41. 41
  • 42. 42
  • 43. 43
  • 44. 44
  • 45. 45
  • 46. 46
  • 47. 47
  • 48. 48
  • 49. 49
  • 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
  • 58. Tag Select e validação regex 58
  • 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
  • 64. Conversão de Tipos (cont.) 64
  • 65. Conversão de Tipos (cont.) Arquivo: xwork.properties java.util.Date=nomepacote.DateConverter java.math.BigDecimal=nomepacote.BigDecimalConverter Arquivo nomeAction-conversion.properties pessoaVO.rendaPessoal=BigDecimalConverter pessoaVO.dataNascimento=DateConverter
  • 66.
  • 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