Avaliação do Framework Struts para implementação de aplicações WEB usando Padrão Modelo-Visão-Controlador Alice Alves Corrêa Resumo por Thiago Roberto dos Santos O trabalho analisa aspectos específicos do Framework Struts e propõe uma implementação para sua utilização. Com o advento de aplicações na internet surgiu a necessidade de desacoplamento da interface com o usuário para facilitar a manutenção das regras de negócio e da própria interface. Tecnologias para Desenvolvimento WEB Foram comparadas diversas tecnologias de desenvolvimento WEB, como CGI, PHP, Java Servlets, ASP, ASP.net e JSP. Ente as vantagens das JSP estão a robustez da linguagem Java, a portabilidade e sua difusão no mercado. Padrão MVC A idéia principal do padrão MVC é separar a interface com o usuário das regras de negócio das aplicações. A utilização do padrão facilita a implementação de diversas interfaces diferentes para as mesmas regras de negócio, bem como facilita a manutenção das aplicações, pois concentra as regras de negócio em classes separadas, sendo assim mais facilmente encontradas. Aplicação de MVC em Desenvolvimento WEB Em java, podemos aplica MVC implementando um Servlet que recebe as requisições do usuário, que por sua vez invoca métodos de negócio em JavaBeans e depois direciona a saída para um JSP. Dessa forma não há código de negócio nas JSPs e reduz drasticamente também a quantidade de scriptlets para lógica de interface, pois boa parte das tarefas é executada no Servler. Frameworks Frameworks são conjuntos de classes que podem ser utilizados para construir diversas aplicações de um determinado contexto. O Framework Struts foi concebido com a intenção de facilitar o desenvolvimento de aplicações WEB em Java. A idéia principal do Struts é facilitar a separação das camadas de interface com o usuário e de negócios. Embora o Struts seja construído com tecnologias J2EE, ele não faz parte da especificação padrão. O Framework usa uma combinação de JSPs, JSP tags e Servlets Java, implementando assim o padrão MVC do lado do servidor. O modelo O modelo, usualmente chamado de camada de negócio, representa a lógica de negócio das aplicações, assemelhando-se a elementos do mundo real e processos de uma organização. O modelo contém a “inteligência” da aplicação e é o que realmente a caracteriza. Dada sua importância, a organização de sua implementação e o seu uso adequado são fundamentais. As entidades são parte do modelo e podem ser persistidas em bancos de dados. Os objetos que executam as transações do negócio também compõem o modelo. Em aplicações mais completas podem ser usados recursos como os Enterprise Java Beans (EJBs). Visão O Framework Struts fornece para a camada de visão validação de dados, tratamento de erros e aceitação de entradas do usuário. Dessa forma o foco no negócio, ou seja, no modelo, se torna mais fácil. O Struts usa para a camada de visão basicamente JSPs. Alguns componentes podem ser usados em conjunto com os JSPs, como documentos HTML, JSP tags, JavaScript, Folhas de Estilo(css), classes ActionForm, para as telas de entrada, e mesmo JavaBeans para transferir resultados da camada de negócio. A classe ActionForm A maioria das aplicações precisa receber entradas de usuários. A classe ActionForm é usada para capturar dados do usuário em formulários HTML e transferi-los para a classe Action. As entradas devem ser armazenadas para, em caso de erro, retorna-las para o usuário. Jsps na camada de visão Os JSPs são ideais para a camada de visão. Páginas HTML são estáticas, o que limita a complexidade da interface. Servlets tornam o desenvolvimento e a manutenção difícil, pois a programação gráfica está dentro de classes Java, dificultando o trabalho de web designers. Usualmente são usadas tag libs junto com JSPs, pois evitam o uso de scriptlets, deixando o código mais limpo. O Controlador O controlador em aplicações WEB Java é um Servlet. Ele é responsável por receber as requisições http do cliente, traduzir a requisição numa chamada à uma rotina de negócio, selecionar a próxima visão e envia-la para o cliente. No Struts, as chamadas são interceptadas pela classe ActionServlet, que por sua vez delega a execução de uma tarefa para a classe RequestProcessor, através do método process(). Essa classe então instancia a classe Action correspondente a regra de negócio através de arquivos de configuração em XML. Como parâmetro para a classe Action é passado um objeto de uma subclasse de ActionForm, contendo a entrada de dados do usuário. A classe Action A classe Action é o coração do Framework. Ela é destinada para efetuar uma operação de negócio. Operações relacionadas podem ser agrupadas na classe DispatchAction, subclasse de Action. A regra de negócio na classe Action é acionada através do método execute(), enquanto na classe DispatchAction é possível configurar o nome do método a ser chamado para cada operação. Os métodos de operações retornam um objeto do tipo ActionForward, que encapsula a próxima visão a ser mostrada. O arquivo de configuração do Strutus O arquivo de configuração do Struts é um XML, definido por um DTD específico para cada versão. Entre as principais seções do arquivo estão a de FormBeans, de Global Forwards e Action Mappings. A seção de Form Beans contém entradas para os ActionForms. Cada FormBean é identificado por um nome lógico único e deve se referir a uma subclasse de ActionForm. A seção de Action Mappings contém as URLs para as classes Action. Nelas são associados FormBeans as Actions. Nessa seção podem ser definidos forwards que podem ser acessados dentro de uma action específica. Na seção Global Forward podem ser configurados forwards para serem usados em qualquer lugar da aplicação. Tratamento de Exceções O tratamento de erros é crucial numa aplicação. O Struts prevê um controle de erros declarativo. A declaração dos erros e suas páginas correspondentes é feita através de arquivos de configuração. Na programação ao tratar os erros dizemos de qual tipo eles são e o framework se encarrega de levá-lo a página correta. Validação O Struts possui a capacidade de validar as entradas do usuário. Caso qualquer entrada seja inválida a pagina de entrada é exibida novamente com a mensagem de erro para o usuário. A validação pode ficar tanto no lado do cliente quanto do lado do servidor. Recomenda-se que a validação sempre seja feita do lado do servidor, pois a do lado do cliente é facilmente contornada. Em alguns casos vale a pena ter a validação nos dois pontos, para evitar tráfego na rede e garantir a integridade dos dados. No Struts a validação pode ser configurada em XML, deixando assim um único ponto de manutenção. As mensagens de erro podem ser definidas para cada aplicação em arquivo de configuração. Conclusão Com o aumento da complexidade dos sistemas WEB o uso de um Framework para acelerar o desenvolvimento é de grande importância, Para o uso do Struts é necessário além de conhecimento das classes do Framework uma boa noção da arquitetura J2EE e do uso de JSPs e Servlets.