Artigo Java Magazine 74 - WebApps com Struts² – Parte 1

Acompanhe o desenvolvimento de uma aplicação completa com o framework Struts2 e descubra todas as facilidades que ele traz ao desenvolvimento para a web.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Artigo no estilo: Curso

De que se trata o artigo:

Do Struts2, um framework que facilita o desenvolvimento de aplicações web ao aplicar o padrão MVC à arquitetura da aplicação, substituindo Servlets por classes de ação, deixando às páginas JSP apenas lógica de apresentação e provendo uma série de facilidades para tarefas comuns em WebApps, como conversão de tipos, validação, internacionalização, etc.

Para que serve:

Serve para aumentar a produtividade das equipes de desenvolvimento web, propondo, ao mesmo tempo, uma organização maior dos artefatos de código a partir da separação das responsabilidades de apresentação, controle e negócio e da existência de diversas funcionalidades prontas, comumente utilizadas em aplicações deste tipo.

Em que situação o tema é útil:

Quando devemos construir aplicações web de médio a grande porte e o tempo investido no aprendizado do framework é justificado por uma maior produtividade no desenvolvimento e na manutenção.

Aplicações Web com Struts2:

O Struts2 é um dos frameworks web mais conhecidos e utilizados atualmente. Ele provê uma série de facilidades para a construção de aplicações web, melhorando a produtividade da equipe e diminuindo custos de manutenção devido a uma melhor organização do código. Neste artigo, mostramos como criar a aplicação mais simples possível com o Struts2, o "Hello, World!" (Listagens 1 a 4), em seguida preparamos esta mesma aplicação para o desenvolvimento de um exemplo simples, mas com utilidade real, o Bookshelf (Listagens 5 e 6), dando a ele um leiaute profissional (Listagens 7 a 9 e Figura 1). Com a WebApp preparada, começamos o desenvolvimento da sua primeira funcionalidade, o cadastro do administrador do sistema (Listagens 10 a 17 e Figura 2) e melhoramos esta mesma funcionalidade, pouco a pouco, mostrando as facilidades oferecidas pelo Struts2, como: abordagem dirigida ao modelo (Listagens 18 e 19), uso de interceptadores e definição de múltiplos resultados (Listagens 20 e 21), validação do formulário (Listagens 22 e 23 e Figura 3) e internacionalização das mensagens (Listagens 24 a 31). Em futuros artigos sobre este mesmo tema, continuaremos o desenvolvimento do Bookshelf e mostraremos outras funções do framework Struts2.

A World Wide Web, ou simplesmente Web, nasceu no início da década de 1990. Em 1993, surge o padrão Common Gateway Interface (CGI), como uma forma de, ao invés de mostrar uma página HTML estática, executar um programa e exibir seu resultado (por exemplo, uma página HTML gerada dinamicamente).

Desde então, as tecnologias para desenvolvimento de aplicações web (WebApps) dinâmicas continuaram a evoluir rapidamente. Na plataforma Java, depois do surgimento das tecnologias Servlet e JSP, a arquitetura MVC (Model-View-Controller) foi usada como base para a criação do que foi chamado “Model 2” (segundo modelo) para a arquitetura de aplicações web. Este novo modelo foi tão bem aceito que logo dezenas de frameworks foram criados para o desenvolvimento de WebApps usando esta arquitetura.

Um dos frameworks pioneiros e mais conhecidos e utilizados é o Struts. Um projeto da Apache Software Foundation, o Struts hoje se divide em duas distribuições: o clássico e o Struts2. Este último é o produto da união dos projetos Struts e WebWork, que é um projeto da OpenSymphony. O Struts2 já foi apresentado na Edição 41 da Java Magazine, mas sofreu algumas alterações até a sua versão atual.

Em uma série de artigos, em que esta é a primeira parte, apresentaremos novamente o framework Struts2 por meio de exemplos, construindo uma aplicação web simples. Começaremos com a instalação do framework e a cada passo do projeto mostraremos uma nova funcionalidade. Esperamos convencer o leitor que o uso de um framework MVC como o Struts2 provê diversos benefícios como a melhor modularização, mais fácil manutenção, maior produtividade no desenvolvimento, dentre outras.

Instalação

Um framework é um artefato de código que provê componentes prontos (ex.: classes) que podem ser reutilizados mediante configuração, composição ou herança. Para “instalar” um framework, portanto, basta que estes componentes prontos estejam disponíveis para uso na aplicação que está sendo desenvolvida.

Utilizaremos a versão estável (GA) mais recente do Struts2 no momento da escrita deste artigo: a 2.1.6. Visite o site do Struts2 (veja Links), escolha a versão e faça o download do arquivo struts-2.1.6-all.zip. Descompacte este arquivo em um diretório da sua escolha, criando a pasta struts-2.1.6, onde encontraremos todos os arquivos relativos ao framework.

Duas ferramentas serão utilizadas para construção e execução da WebApp: um ambiente de desenvolvimento (IDE) e um container (servidor) web Java. O leitor fica livre para escolher aquele de sua preferência. Recomendamos a IDE Eclipse for Java EE Developers (versão Galileo) e o servidor Apache Tomcat 6. O foco deste artigo é no Struts2, portanto não entraremos em detalhes com relação à instalação e uso do Eclipse ou do Tomcat.

Criação da WebApp e “Hello, Struts2!”

Desenvolveremos como exemplo uma aplicação web simples chamada Bookshelf (estante de livros), que permite gerenciar uma biblioteca pequena, como a de um professor universitário que coordena um laboratório onde vários alunos trabalham e pegam os livros do laboratório emprestados.

Antes de desenvolver as funcionalidades do Bookshelf, porém, começaremos nossa aplicação com o clássico exemplo “Hello, World!”. Para utilizar o Struts2, é preciso fazer algumas alterações no arquivo web.xml e ainda criar um arquivo de configuração struts.xml. Felizmente, a distribuição do Struts2 já traz um exemplo pronto que nos ajuda a começar. Procure pelo arquivo struts-2.1.6/apps/struts2-blank-2.1.6.war.

A extensão WAR representa Web Archives, que são aplicações web compactadas e prontas para serem implantadas em containers web (no Tomcat, por exemplo, basta copiar um arquivo WAR para a pasta webapps para a aplicação ser implantada). Arquivos WAR, contudo, são como arquivos ZIP com outra extensão e podem ser abertos pelo seu programa de (des)compactação favorito.

Extraia o conteúdo do arquivo struts2-blank-2.1.6.war para uma pasta qualquer do seu computador. Você pode dar o nome a esta pasta de “Bookshelf” e desenvolver sua aplicação em cima dela ou então criar uma aplicação web em sua IDE favorita (no Eclipse, crie um “Dynamic Web Project”) e copiar os arquivos importantes da aplicação em branco para seu projeto web. Estamos interessados nos seguintes arquivos:

O arquivo web.xml da aplicação em branco já está pronto para a utilização do Struts2 em nosso projeto (se quiser, altere apenas o nome da aplicação na tag <display-name />). Para usar o Struts2, é preciso configurar um filtro para ser ativado em todas as requisições, como mostra a Listagem 1.

Listagem 1. Configuração da aplicação Web no arquivo web.xml.

<?xml version="1.0" encoding="UTF-8"?> <web-app id="Bookshelf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Bookshelf</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> "

[...] continue lendo...

Artigos relacionados