Arquivos de sites
Tutorial Completo de Struts2 (PDF – em Português)
Clique aqui para fazer o download do Tutorial Completo de Struts2 (PDF – em Português)
Se preferir pode acessar o conteúdo diretamente aqui no blog, tudo em português:
- Parte 1 – Introdução ao Framework Struts 2
- Parte 2 – Tutorial: Criando uma aplicação Struts 2 no Eclipse
- Parte 3 – Tutorial do Framework de validação do Struts2 com Exemplo
- Parte 4 – Tutorial do Plugin Struts 2 Tiles com exemplo no Eclipse
- Parte 5 – Tutorial de Interceptadores (Interceptors) do Struts2 com Exemplo
- Parte 6 – Tutorial de Upload e Gravação de Arquivos do Struts 2 com Exemplo
- Parte 7 (Final) – Tutorial de Ajax no Struts 2 com Exemplo
É isso ai pessoal… deu um trabalhinho traduzir tudo isso, deve ter alguns errinhos,
pois meu inglês é meia boca… mas espero que tenham gostado e que tenha sido útil 😀
Parte 5 – Tutorial de Interceptadores (Interceptors) do Struts2 com Exemplo
Sejam vem vindos a parte 5 de uma série de 7 partes aonde nós vamos examinar aspectos diferentes do framework Struts2. No artigo anterior nós vimos como integrar o framework Tile com o Struts2.
Hoje vamos explorer o mundo dos Interceptadores(Interceptors) no Struts2. Nós vamos ver o que os interceptadores são e como configura-los em uma aplicação web baseada em Struts2.
Interceptadores do Struts 2: Fundamentos
O Struts2 fornece um mecanismo poderoso para controlar uma requisição usando Interceptadores. Interceptadores são responsáveis pela maior parte do processamento de requisições. Eles são invocados pelo controller (controlador) antes e depois de invocar uma action, assim eles ficam entre o controller e a action. Interceptadores executam tarefas como Logging, Validation, File Upload, Double-submit guard e etc.
O ciclo de vida de processamento do framework Struts2 é bastante discutido na parte 1 do tutorial.
- A requisição é gerada pelo usuário e enviada ao Servlet container.
- Servlet container invoca o filtro FilterDispatcher que por sua vez determina a ação apropriada.
- Um por um dos Intercetors são aplicados ante de chamar a Action. Interceptors executam tarefas como Logging, Validation, File Upload, Double-submit guard e etc.
- Action é executada e o Result é gerado pela Action.
- A saída da Action é renderizada na view (JSP, Velocity, etc) e o resultado é retornado ao usuário.
Portanto os interceptadores do Struts2 removem funções cross cutting como logging de componentes action e cria uma separação mais limpa do MVC.
O Struts2 vem com uma lista padrão de interceptadores já configurada na aplicação, no arquivo struts-default.xml.
Nós podemos criar nossas próprios interceptadores e pluga-los dentro de uma aplicação web baseada em Struts2.
O framework cria um objeto de ActionInvocation que encapsula a action e todos os interceptadores configurados para aquela action. Cada interceptador é chamado antes da action ser chamada. Uma vez que a action é chamada e o resultado é gerado, cada interceptador é chamado de novo na ordem contrária para executar o trabalho de pós-processamento. Interceptadores podem alterar o workflow (fluxo de trabalho) da action. Isso talvez impessa a execução da action.
Nossa Meta
Nossa meta sera criar um interceptador customer MyLoggingInterceptor, o qual irá logar a requisição antes de qualquer action ser chamada. Ele também irá imprimir o nome da classe Action e o tempo de execução em milisegundos.
Criando o Interceptador de Log
Crie uma classe java MyLoggingInterceptor
no pacote net.viralpatel.struts2.interceptors
e copie o seguinte conteúdo dentro dela.
package net.viralpatel.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation;
|
Configurando o interceptador no struts.xml
Uma vez que nós criamos uma classe interceptadora, tudo o que precisamos fazer é configurar ela no arquivo struts.xml
e usa-la com as actions.
Para configurar o interceptador criado há pouco, adicione o seguinte código dentro do struts.xml
<interceptors> <interceptor name="mylogging"
|
Esse código deve ser adicionado depois da tag <result-types > no <package ></package>. Aqui nós configuramos um novo interceptador mylogging com a tag <interceptor >. Também veja que nós definimos um interceptor-stack com o nome de loggingStack. Isso é para ter certeza de que o Struts2 chamará todos os interceptadores padrões assim como chamará o nosso interceptador customizado. Isso é muito importante como por exemplo a lógica de validação não será chamada na nossa aplicação Struts2 se nós ignorarmos o stack padrão (defaultStack
) dos interceptadores.
Nós podemos fazer o novo loggingStack como interceptador padrão ou podemos configurar ele em cada nível de action. A fim de faze-lo um stack padrão, nós devemos adicionar o seguinte no struts.xml
<default-interceptor-ref name="loggingStack"></default-interceptor-ref> |
Uma vez que nós adicionamos o código acima no Struts.xml, o logginStack será aplicado à todas as action daquele pacote.
Também nós talvez quiséssemos aplicar o interceptador customizado para apenas determinadas actions. Para fazer isso, nós precisamos adicionar a tag interceptor-ref na action.
<action name="login" class="net.viralpatel.struts2.LoginAction">
|
Isso é tudo pessoal
Se nós executarmos nossa aplicação StrutsHelloWorld no ecplipse e olharmos os logs do console, nós vamos encontrar as declarações de log que nós imprimimos no nosso interceptador.
Initializing MyLoggingInterceptor... ..
|
Download do código fonte
Clique aqui para fazer o download do código fonte sem os JARs (17KB)
Fonte: viralpatel.net – Viral Patel