framework struts2v2.5

72
Framework Struts 2 Projeto Minha Casa Minha Vida Odilon Rauen Junior [email protected] Data: 08/10/2009

Upload: eduardo-gabina

Post on 06-Jun-2015

545 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Framework struts2v2.5

Framework Struts 2

Projeto Minha Casa Minha Vida

Odilon Rauen Junior

[email protected]

Data: 08/10/2009

Page 2: Framework struts2v2.5

Agenda

� Introdução.

� O que é Struts?

� Histórico Struts.

� Histórico Struts 2.� Histórico Struts 2.

� Alguns dos principais recursos.

� Projeto Minha Casa Minha Vida.

� Recursos utilizados no projeto.

� Bibliografia.

2

Page 3: Framework struts2v2.5

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

Page 4: Framework struts2v2.5

Contextualização

� Servlets

� JSP

� Tag Libs� Tag Libs

� MVC

� MVC 2

� Framework

4

Page 5: Framework struts2v2.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

Page 6: Framework struts2v2.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 � 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

Page 7: Framework struts2v2.5

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 � 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

Page 8: Framework struts2v2.5

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 � 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

Page 9: Framework struts2v2.5

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.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

Page 10: Framework struts2v2.5

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: � Vantagens: �Maior facilidade de manutenção e reutilização.

� Desvantagens: � É mais difícil de implementar que o modelo 1.

10

Page 11: Framework struts2v2.5

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

Page 12: Framework struts2v2.5

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

Page 13: Framework struts2v2.5

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 � Logo se tornou, é ainda é o framework mais popular para desenvolver aplicações Web em Java.

� Site: http://struts.apache.org

13

Page 14: Framework struts2v2.5

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 � 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.html14

Page 15: Framework struts2v2.5

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.� 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

Page 16: Framework struts2v2.5

Arquitetura Resumida

Page 17: Framework struts2v2.5

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, � 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

Page 18: Framework struts2v2.5

18

Page 19: Framework struts2v2.5

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.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

Page 20: Framework struts2v2.5

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).� 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

Page 21: Framework struts2v2.5

Arquivos de Configuração

21

Page 22: Framework struts2v2.5

Arquivo web.xml

22

Page 23: Framework struts2v2.5

Arquivo struts.xml

23

Page 24: Framework struts2v2.5

Exemplo Interface Action

24

Page 25: Framework struts2v2.5

Exemplo classe ActionSupport

25

Page 26: Framework struts2v2.5

Ações e Resultados

� Struts 2 usando Interceptadores resolve a maioria dos problemas comuns a vários projetos. Ex: Tratamento de Erros.� 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

Page 27: Framework struts2v2.5

Temas e Templates

� Arquivo de configuração struts.properties

�struts.ui.theme = simple | ajax

� Existem 4 tipos disponíveis.� Existem 4 tipos disponíveis.� simple

� ajax

� xhtml

� css_xhtml

27

Page 28: Framework struts2v2.5

Tags de Formulários

28

Page 29: Framework struts2v2.5

Tag de Formulários (cont)

29

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

Page 30: Framework struts2v2.5

Tag de Genéricas

30

Page 31: Framework struts2v2.5

Binding

� Os campos do formulário podem ser reconstruídos como POJOS, sem necessidade de capturar os dados 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

Page 32: Framework struts2v2.5

Exemplo de Binding

32

Page 33: Framework struts2v2.5

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

Page 34: Framework struts2v2.5

Interceptor (Cont)

� Exemplo de utilidades�conversão de tipos

�upload de arquivo�upload de arquivo

� login

�validação

�preparação da pagina

�evitar submit duplicados

34

Page 35: Framework struts2v2.5

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� XML

� Ajax

� Anotação

� Personalizada

35

Page 36: Framework struts2v2.5

Validação Disponíveis

36

Page 37: Framework struts2v2.5

Documentação Oficial

� http://struts.apache.org/2.1.8/index.html

� Download

37

Page 38: Framework struts2v2.5

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 � Esse projeto levou 3 meses para ser desenvolvido, implantado e homologado.

� Foram utilizados alguns recursos da tecnologia que ajudaram muito no desenvolvimento.

38

Page 39: Framework struts2v2.5

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

Page 40: Framework struts2v2.5

Fluxo Principal do Projeto

� Apresentação.

� Regras.

� Cadastro de titular.� Cadastro de titular.

� Cadastro de dependente.

� Tela confirmação.

� Relatório com número de protocolo.

40

Page 41: Framework struts2v2.5

41

Page 42: Framework struts2v2.5

42

Page 43: Framework struts2v2.5

43

Page 44: Framework struts2v2.5

44

Page 45: Framework struts2v2.5

45

Page 46: Framework struts2v2.5

46

Page 47: Framework struts2v2.5

47

Page 48: Framework struts2v2.5

48

Page 49: Framework struts2v2.5

49

Page 50: Framework struts2v2.5

Google Analytics (Cidades)

50

Page 51: Framework struts2v2.5

Google Analytics (Cidades)

51

Page 52: Framework struts2v2.5

Google Analytics (Países)

52

Page 53: Framework struts2v2.5

Google Analytics (Países)

53

Page 54: Framework struts2v2.5

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

Page 55: Framework struts2v2.5

Campos Obrigatórios

55

Page 56: Framework struts2v2.5

Arquivo nomeAction.destino-validations.xml

56

Page 57: Framework struts2v2.5

Sexo Obrigatório

57

Page 58: Framework struts2v2.5

Tag Select e validação regex

58

Page 59: Framework struts2v2.5

CPF inválido

59

Page 60: Framework struts2v2.5

Arquivo nomeAction.destino-validations.xml

60

Page 61: Framework struts2v2.5

Classe CPFValidator.java

61

Page 62: Framework struts2v2.5

Arquivo configuração validators.xml

62

Page 63: Framework struts2v2.5

Conversão de Tipos

� No Brasil temos algumas particularidades como nossa data e moeda que são diferentes das demais.

� USA� USA� data: mm/dd/aaaa �moeda: $ 1,000,000.50

� Brasil � data: dd/mm/aaaa �moeda: R$ 1.000.000,50

Page 64: Framework struts2v2.5

Conversão de Tipos (cont.)

64

Page 65: Framework struts2v2.5

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.rendaPessoal=BigDecimalConverter

� pessoaVO.dataNascimento=DateConverter

Page 66: Framework struts2v2.5
Page 67: Framework struts2v2.5

Outros Recursos

� Nem todos puderam ser demonstrados.

� Interceptors:

�ModelDriven, Prepare, Execute and Wait,File �ModelDriven, Prepare, Execute and Wait,File Upload.

� Plugins

�JasperReports, JFreeChart, Captha.

67

Page 68: Framework struts2v2.5

Relatório de Inscritos

68

Page 69: Framework struts2v2.5

Conclusão

� Principais Benefícios:

� Alta produtividade e baixa curva de aprendizado.

� Desenvolvimento com equipe e tempo reduzido.

�Manutenção facilitada.�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

Page 70: Framework struts2v2.5

Bibliografia

Site:

� http://struts.apache.org/2.x/docs/home.htm

70

Page 71: Framework struts2v2.5

Dúvidas

71

[email protected]

Page 72: Framework struts2v2.5

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