Struts

Olá galerinha, estou de volta!

Antes de começar vem uma maravilhosa observação: Existem diversas integrações com o Struts, bem como outras 'quase versões', Struts com utilização de annotation por exemplo. 
Mas o exemplo utilizado aqui é puro e simples Struts, sem variações ok!

Sem perder tempo, vamos começar!


O Struts é um framework que foi desenvolvido para desenvolvimento de aplicações web em Java. Ele é fortemente
baseado nos padrões MVC e Front Controller.

O Framework Struts é um framework de código aberto que amplia a API do Servlet Java e implanta uma arquitetura MVC.

Este padrão é utilizado de forma massiva no mercado, porém em alguns casos ele é visto apenas em projetos estruturantes e/ou legados.

Claro que existem vantagens de se utilizar o Struts, são elas:

  1. É um desenvolvimento da Apache Foundation
  2. Open-Source
  3. As camadas são bem definidas e separadas
  4. Reuso do código-fonte
  5. Utilização de Design Pattern
  6. Possibilidade de gerar a saída de acordo com o dispositivo utilizado (HTML, XHTML, WML, etc)

E as desvantagens? 

  1. A dificuldade no modelo utilizado pelo Struts. É preciso estar confortável com o padrão JSP, Servlet APIs, pois querendo ou não é um Framework grande e elaborado.
  2. Comparado com o servlet padrão e APIs JSP, Struts tem menos recursos on-line, e muitos usuários de primeira viagem encontram a documentação do Apache que é confusa e um pouco mal organizada.
  3. Com aplicações Struts, há muito mais acontecendo nos bastidores do que com os aplicativos da Web normais baseadas em Java, o que torna difícil entender o Framework.

Então, vamos para a arquitetura dele?

Abaixo, observamos o fluxo de navegação dos componentes do Struts


  1.  O usuário faz uma solicitação através de uma url no browser.
  2.  Se for a primeira solicitação que o container recebeu para esta aplicação, ele irá invocar o método init() da ActionServlet (controller da Struts) e irá carregar as configurações do arquivo struts-config.xml em estruturas de dados na memória. Vale lembrar que esta passagem só será executada uma única vez, pois nas solicitações subsequentes, a servlet consulta estas estruturas na memória para decidir o fluxo a ser seguido.
  3. Baseado no fluxo definido no arquivo struts-config.xml, e que neste momento já se encntra carregado em estruturas na memória, o ActionSerlet identificará qual o ActionForm (classe para a validação dos dados) irá invocar. A classe ActionForm através do método validate irá verificar a integridade dos dados que foram recebidos na solicitação que vem do browser.
  4. O controle da aplicação é retomado pelo ActionServlet, que verifica o resultado da verificação do ActionForm. Condicional-->  Se faltou alguma coisa (campo não preenchido, valor inválido, etc), o usuário recebe um formulário html (geralmente o mesmo que fez a solicitação), informando o motivo do não atendimento da solicitação, para que o usuário possa preencher corretamente os dados para fazer uma nova solicitação. Condicional-->  Se não faltou nenhuma informação, ou seja, todos os dados foram enviados corretamente, o controller passa para o proximo passo (Action).
  5. 5- O ActionServlet, baseado no fluxo da aplicação (estruturas já carregadas em memória) invoca uma classe Action. A classe Action passará pelo método execute que irá delegar a requisição para a camada de negócio.
  6. A camada de negócio irá executar algum processo (geralmente popular um bean, ou uma coleção). O resultado da execução deste processo (objetos já populados) será usado na camada de apresentação para exibir os dados.
  7. Quando o controle do fluxo da aplicação votar ao Action que invocou o processo da camada de negócio, será analisado o resultado, e definido qual o mapa adotado para o fluxo da aplicação. Neste ponto, os objetos que foram populados na camada de negócio serão "atachados" como atributos no request ou sessão do usuário.
  8. Baseado no mapeamento feito pelo o Action, o Controller faz um forward para o JSP para apresentar os dados.
  9. Na camada de apresentação (View), os objetos que foram setados como atributos do request ou sessão do usuário serão consultados para montar o html para o browser.
  10. Chega o html da resposta requisitada pelo usuário.
Fechou galerinha?!

Deixarei para o próximo post comparação entre o Struts 1 e 2.

Então, até a próxima! 
o/

About thallitaceleste

0 comments:

Postar um comentário