1
resposta

MVC - Struts

Boa tarde

Utilizo o framework Struts 1.0 e uso o padrão Action- Service - DAO.

Dúvidas: 1 - Meu Controlador seriam as classes Action mais o struts-config.xml que faz o redirecionamento?

2- Classes service eu entendo que serve para fazer a ligação entre a Action e a DAO. Classes services também fazem parte do controlador?

3 - Classes DAO fazem parte do Modelo, certo?

4 - Classes formBean fazem parte do Modelo?

5- Classes VO fazem parte do Modelo?

Obrigado

Att. Marcos Santiago

1 resposta

Olá Marcos, tudo bem? Eu particularmente não utilizo o Struts, mas vou tentar ajudar da melhor forma possível! Bem como mostra a imagem abaixo:

Visão geral de uma aplicação que utiliza Struts

O ponto de entrada para acessar a partir do cliente é o ActionServlet que por padrão fica registrado no web.xml da aplicação, e então o ActionServlet utiliza o arquivo struts-config.xml para fazer o mapeamento das rotas de entrada do objeto Action que é o que recebemos do cliente, e esse Action também nos permite criar objetos do tipo ActionForm que é onde ficam temporariamente armazenados os dados do formulário, e o próprio objeto Action processa a solicitação por meio do método execute usando os dados do objeto ActionForm ou Bean do formulário e após a conclusão ele armazena novamente os dados no Bean ou em outro novo Bean e por fim ele encaminha os dadoa para a view indicada.

Respondendo suas dúvidas:

1 - Sim, nesse framework o controller são os objetos do tipo Action, mas o mapeamento das rotas é feito apenas dentro do arquivo struts-config.xml;

2 - Nesse caso depende, você ainda pode implementar esses dois tipos de classes para fazer essa função, no esquema que comentei acima não fala sobre Service ou DAO, apenas que o Action processa a requisição, e ai você pode colocar tudo nele (o que não recomendo) ou então criar outros objetos responsáveis para essas funções.

3 - Não, as classes ou objetos DAO são da camada de acesso ao banco de dados, como o próprio nome indica (Data Access Object - DAO);

4 - Depende, poderíamos dizer que sim, mas as boas práticas e padrões de projetos indicam para não fazermos dessa forma, já que o formBean vem com os dados da requisição e voltam com os dados também seria interessante eles serem utilizados apenas para esse fluxo e os modelos serem outras classes, isso também deixa o código mais desacoplado e vai facilitar a manutenção;

5 - Segue a mesma linha da resposta anterior (4), na minha visão não é interessante sejam os modelos, mas nada impede que na sua aplicação sejam da camada de modelo, nos projetos mais atuais eles estão mais para classes tipo DTO - Data Transfer Object, que são apenas para transferência dos dados do objeto.

Espero ter ajudado!