framework struts2v2.5

Post on 06-Jun-2015

545 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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, � 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.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).� 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.� 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.� Existem 4 tipos disponíveis.� simple

� ajax

� xhtml

� css_xhtml

27

Tags de Formulários

28

Tag de Formulários (cont)

29

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

Tag de Genéricas

30

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

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

� pessoaVO.dataNascimento=DateConverter

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

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

71

odilon.rauen@uol.com.br

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

top related