Skip to content

21. Conclusão

Recapitulemos o que foi apresentado neste documento:

  • os fundamentos da programação web em Java com servlets e páginas JSP
  • uma introdução à arquitetura MVC
  • uma introdução à arquitetura de três camadas
  • uma introdução ao Spring IoC
  • exemplos para ilustrar estes pontos

Consideramos que o leitor que chegou até aqui está pronto para desenvolver por si próprio as suas próprias aplicações web em Java. Está igualmente pronto para abordar outros métodos de desenvolvimento semelhantes aos estudados neste documento. Recorde-se a arquitetura das aplicações web aqui desenvolvidas:

Para aplicações simples, esta arquitetura é suficiente. Quando se escrevem várias aplicações deste tipo, percebe-se que os servlets de duas aplicações diferentes:

  1. têm o mesmo mecanismo para determinar qual o método [doAction] que deve ser executado para processar a ação solicitada pelo utilizador
  2. na verdade, diferem apenas pelo conteúdo desses métodos [doAction]

A tentação é então grande de:

  • fatorizar o processamento (1) numa servlet genérica, independente da aplicação que a utiliza
  • delegar o processamento (2) a classes externas, uma vez que o servlet genérico não sabe em que aplicação está a ser utilizado
  • estabelecer a ligação entre a ação solicitada pelo utilizador e a classe que deve processá-la, utilizando um ficheiro de configuração

Surgiram ferramentas, frequentemente denominadas «frameworks», para proporcionar essas facilidades aos programadores. O mais antigo e, provavelmente, o mais conhecido deles é o Struts (http://struts.apache.org/). O Jakarta Struts é um projeto da Apache Software Foundation (www.apache.org). Este framework é descrito em (http://tahe.developpez.com/java/struts/).

Surgido mais recentemente, o framework Spring (http://www.springframework.org/) oferece funcionalidades semelhantes às do Struts. Na realidade, trata-se do seu módulo Spring MVC. A sua utilização foi descrita em vários artigos (http://tahe.developpez.com/java/springmvc-part1/).

O Spring não se limita apenas ao conceito MVC da camada [web] de uma aplicação de três camadas. É útil mesmo em aplicações fora da Web.

Assim, concluímos o nosso curso implementando uma arquitetura MVC numa arquitetura de três camadas [web, metier, dao], com base num exemplo básico de gestão de uma lista de pessoas.

Na versão 1 da aplicação, a lista de pessoas era mantida na memória e desaparecia quando a aplicação web era encerrada. Nas outras versões, a lista de pessoas é mantida numa tabela da base de dados. Utilizámos quatro SGBD diferentes: Firebird, Postgres, MySQL e SQL Server Express.

Graças ao Spring IoC, a camada [web] da versão 1 pôde ser mantida na íntegra nas versões seguintes. Assim, demonstrámos que era possível construir arquiteturas ntier com camadas independentes.

Com as versões que utilizam uma base de dados, demonstrámos a contribuição do Spring para a construção das camadas [dao] e [service]. Graças à integração do Spring com o iBATIS, conseguimos construir quatro versões que diferem apenas nos seus ficheiros de configuração. A mesma classe [DaoImplCommon] foi utilizada para implementar a camada [dao] nas quatro versões. Para resolver um problema específico do SGBD Firebird, tivemos de derivar esta classe, mas sem a alterar.

Por fim, demonstrámos como o Spring nos permitiu gerir as transações de forma declarativa ao nível da camada [service].

O leitor é encorajado a descobrir todas as funcionalidades oferecidas por este produto.