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:
- É um desenvolvimento da Apache Foundation
- Open-Source
- As camadas são bem definidas e separadas
- Reuso do código-fonte
- Utilização de Design Pattern
- Possibilidade de gerar a saída de acordo com o dispositivo utilizado (HTML, XHTML, WML, etc)
E as desvantagens?
- 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.
- 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.
- 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
- O usuário faz uma solicitação através de uma url no browser.
- 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.
- 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.
- 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- 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.
- 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.
- 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.
- Baseado no mapeamento feito pelo o Action, o Controller faz um forward para o JSP para apresentar os dados.
- 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.
- 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/
0 comments:
Postar um comentário