Esse artigo faz parte da revista WebMobile Edição 07. Clique aqui para ler todos os artigos desta edição

wm07_capa.JPG

lor=#000000> Boa parte do framework Struts foi desenvolvido entre maio de 2000 e junho de 2001, quando sua primeira versão foi lançada. A responsabilidade esteve com uma equipe de aproximadamente 30 desenvolvedores, sendo que Craig R. MacClanahan foi o primeiro arquiteto e desenvolvedor do framework. Após quatro anos de estrada, o Struts tornou-se padrão de mercado para aplicações web em java. Atualmente, vários frameworks são apontados como substitutos para o Struts, como o Java Server Faces, de responsabilidade do próprio Craig MacClanahan. No entanto, a procura por profissionais com conhecimento neste framework deve continuar por muitos anos.

A estrada para o sucesso das aplicações web é um caminho árduo, despendendo suor de pesquisadores e também do próprio desenvolvedor. Neste caso, como aplicação web fica subentendido de que esta não é apenas uma aplicação trivial, composta por um formulário contendo dois ou três campos que são armazenados em um banco de dados. Mas sim uma aplicação robusta que atravessa diversas camadas, utiliza diferentes tecnologias, cobertas por análise e utilização de padrões (design-patterns).

O projeto e desenvolvimento deste tipo de aplicação levam os desenvolvedores para o limite da lógica. Soluções mirabolantes são criadas para resolução de certos problemas. Algumas destas soluções funcionam, outras não.

O framework Struts, criado por Craig R. McClanahan e doado para a fundação Apache (Apache Software Foundation) em 2000 é uma implementação de código aberto do Modelo 2, bastante similar ao modelo MVC (Model, View and Controller – design pattern para que as camadas de regra de negócio, visualização e controle estejam bem separadas na aplicação).

Neste contexto, ao longo desse artigo serão abordadas as tecnologias envolvidas no framework struts, já que este não é uma tecnologia específica, mas sim um conjunto de tecnologias que tornam o seu aprendizado ainda mais desafiador.

Frameworks

Um framework pode ser entendido como sendo uma aplicação reutilizável e semi-completa que pode ser especializada para produzir softwares personalizados. As aplicações construídas com o apoio de um framework são, de um modo geral, bastante semelhantes.

Os desenvolvedores que trabalham em aplicações eletrônicas convencionais estão acostumados a kits de ferramentas e a ambientes de desenvolvimento que aproveitam a igualdade entre as aplicações. Os frameworks da aplicação fornecem uma base comum reutilizável podendo servir como fundação para um produto específico.

Um framework de aplicação deve possuir as seguintes características:

·         compreender múltiplas classes ou componentes, cada qual provendo uma abstração de um conceito em particular;

·         definir como estes conceitos trabalharão juntos para resolver um determinado problema;

·         possuir componentes reutilizáveis;

·         permitir um alto nível de padronização.

Framework Jakarta Struts

O Struts é um framework para web que se tornou padrão na comunidade JEE (Java Enterprise Edition). O Struts provê uma implementação do modelo MVC-2 (ver Nota 1) para construções de aplicações web.

 

Nota 1. Modelo MVC-2 x Modelo MVC

O termo Modelo 2 (ou MVC-2) surgiu na especificação 0.92 da Servlet/JSP. Este modelo era especificado como uma arquitetura que utiliza servlets e as páginas JSP juntas na mesma aplicação. No modelo 2, os servlets são responsáveis pelo acesso a dados e também pelo fluxo navegacional, enquanto as páginas JSP lidam com a apresentação. Este modelo permite que engenheiros Java e os desenvolvedores HTML trabalhem cada um em sua parte da aplicação. Desta forma, a aparência da aplicação pode ser alterada (HTML) sem que a sua funcionalidade ou fluxo de navegação precise acompanhar as alterações.

O framework Struts é baseado na arquitetura do modelo 2. Fornece um servlet controlador para lidar com o fluxo navegacional e as classes especiais para ajudar com o acesso dos dados. Uma biblioteca de tags personalizadas é enviada com o framework para tornar o Struts ainda mais fácil de usar com as páginas JSP. Pode-se observar que o Struts implementa o pattern MVC, onde as camadas de Modelo, Visualização e Controle devem ser implementadas separadamente na aplicação.

 

Mas qual a finalidade do Struts? Da mesma forma que a construção de uma casa, ponte e prédio necessitam de uma base mantenedora, os desenvolvedores utilizam o Struts para suportar cada camada de uma aplicação. O nome Struts deve-se ao papel por ele desempenhado nas aplicações web, o de fornecer toda a estrutura inicial. O Struts implementa o controlador da aplicação (a letra C da sigla MVC-2), sendo este controlador o responsável por toda a logística e também pela integração das camadas de visualização e regra de negócio do sistema.

Struts de ponta a ponta

Para facilitar o entendimento do Struts, observe na Figura 1 o fluxo normal de uma aplicação utilizando o Struts, e também quais tecnologias estão envolvidas em cada uma das etapas.

Figura 1. Fluxo de uma aplicação Struts.

As etapas estão descritas a seguir, de acordo com a numeração indicada na Figura 1:

1.       Cada solicitação HTTP tem que ser respondida neste mesmo protocolo. Desta forma, inicia-se uma aplicação que utiliza o Struts. Esta solicitação normalmente é definida como requisicao.do, que é um nome lógico para a requisição do usuário.

2.       A solicitação requisicao.do é mapeada no arquivo struts-config.xml. Neste arquivo estão todas as definições do controlador do framework. O arquivo é então lido por um ActionServlet (que fará efetivamente o papel do controlador da aplicação) na inicialização da aplicação criando então um banco de objetos com o arquivo de configuração. No arquivo de configuração são definidos os Actions (requisições dos usuários) para cada solicitação.

3.       O ActionServlet (que faz o papel do controlador da aplicação), define o Action correspondente para a solicitação. Um Action pode validar a entrada de dados e acessar a camada de negócios para recuperar as informações nos bancos de dados e outros serviços de dados.

4.       A requisição HTTP pode ser feita também através de um formulário HTML. Em vez de fazer com que cada Action retire os valores do campo da solicitação, o ActionServlet coloca a entrada em um JavaBean. Estes JavaBeans são definidos como FormBeans no Struts e estendem a classe org.apache.struts.action.ActionForm (os Actions e FormBeans serão abordados com maiores detalhes no decorrer do artigo).

5.       O Action pode acessar o FormBean, efetuar qualquer operação e armazenar o resultado em um ResultBean.

6.       O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada.

 

Em geral, o Struts não apresenta a resposta em si, mas envia a solicitação para outro recurso, como uma página JSP. O Struts fornece a classe ActionForward que pode ser usada para armazenar o caminho para uma página sob um nome lógico. Desta forma, o endereço ficará oculto para o usuário. Este visualizará apenas o nome definido para o caminho (por exemplo, resposta.do). Este recurso evita que o usuário possa estar visualizando uma versão desatualizada da aplicação, já que as requisições serão feitas apenas para nomes lógicos.

Ao completar a lógica de negócio, o Action selecionará e retornará um ActionForward para o servlet. Então, o servlet usará o caminho armazenado no objeto ActionForward para chamar a página e completar a resposta.

Estes detalhes logísticos da aplicação são definidos no objeto ActionMapping. Cada ActionMapping está relacionado a um caminho específico. Quando este caminho for selecionado, como requisicao.do, o servlet irá recuperar o objeto ActionMapping. O mapeamento informará ao servlet quais Actions, ActionForms e ActionForwards usar.

Ambiente de desenvolvimento

Para desenvolver uma aplicação que utilize o framework Struts,são necessários que sejam instalados e configurados os seguintes pacotes:

·         JSE – Java Standard Edition (kit de desenvolvimento Java);

·         Servlet Container, como o TOMCAT;

·         Apache Ant (opcional – ferramenta de build);

·         Framework Struts.

 

Todas as ferramentas que compõem este ambiente de desenvolvimento podem ser obtidas gratuitamente. A partir deste ponto, o leitor deverá estar com o kit de desenvolvimento Java, Apache ANT e também com o Tomcat devidamente instalados e configurados, já que a instalação e configuração destes pacotes não serão abordadas neste artigo.

Para desenvolvimento da aplicação de exemplo deste artigo foram utilizadas as seguintes versões:

·         JSE – Java Standard Edition 1.5.0_04 (kit de desenvolvimento Java): pode ser obtido em http://java.sun.com/j2se/1.5.0/download.jsp.

·         Servlet Container Tomcat 5.5: pode ser obtido em http://jakarta.apache.org/tomcat/index.html.

·         Apache Ant – 1.6.5: pode ser obtido em http://ant.apache.org.

·         Framework Struts 1.2.7: pode ser obtido em http://struts.apache.org.

Obtendo e instalando o Struts

O Struts é mantido pelo Apache Software Foundation e possui a licença Apache, sendo esta OpenSource. A licença Apache possibilita que o framework seja distribuído juntamente com a aplicação sem que seja necessário efetuar qualquer pagamento à fundação.

O Struts pode ser obtido no site oficial do projeto, http://struts.apache.org. Os arquivos binários são distribuídos em diversos formatos na página de download http://struts.apache.org/acquiring.html. Nesta página, selecione a versão 1.2.7, e o formato que desejar, como jakarta-struts-1.2.7.tar.gz.

O processo de instalação e configuração do Struts é bastante simples: basta descompactá-lo em um diretório qualquer, como /usr/local/jakarta-struts-1.2.7 (caso esteja utilizando o linux) ou c:\apache\jakarta-struts-1.2.7 (caso esteja utilizando o Windows).

Após descompactar o Struts, será necessário adicionar o arquivo $STRUTS_HOME/lib/struts.jar no CLASSPATH, onde $STRUTS_HOME é o diretório principal onde o Struts foi descompactado. Veja o comando abaixo para editar o classpath:

·         Se estiver utilizando o Linux, abra uma sessão no console (shell) e digite o comando:

 

CLASSPATH=/usr/local/strtus.1.2.7/lib/struts.jar:$CLASSPATH

export CLASSPATH.

 

·         Se estiver utilizando o Windows, abra uma sessão do prompt de ms-dos, e digite o comando:

 

set CLASSPATH=c:\struts1.2.7\struts.jar;%CLASSPATH%.

Testando a instalação do Struts

O Struts fornece uma aplicação semi-pronta que pode ser evoluída (exatamente o que faremos na aplicação de exemplo). Esta aplicação também pode ser utilizada para testar a instalação do Struts. Para isto, o arquivo $STRUTS_HOME/webapps/struts-blank.war deve ser copiado para o diretório webapps do Tomcat, $TOMCAT_HOME/webapps (observe que $STRUTS_HOME e $TOMCAT_HOME equivalem ao diretório de instalação do Struts e Tomcat, respectivamente). ...

Quer ler esse conteúdo completo? Tenha acesso completo