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: CursoDo 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:
- struts2-blank-2.1.6/WEB-INF/lib: dentro desta pasta estão as bibliotecas necessárias para utilizar o Struts2. Caso você esteja usando uma IDE, deve configurar estes JARs como dependências do seu projeto (no Eclipse, utilize o item “Java EE Module Dependencies” dentro das propriedades do seu projeto);
- struts2-blank-2.1.6/WEB-INF/web.xml: configurações da WebApp;
- struts2-blank-2.1.6/WEB-INF/src/java/struts.xml: configurações do Struts2. Deve estar na raiz do classpath, ou seja, na raiz do diretório de classes do seu projeto.
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> "
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo