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

imagem.JPG

st-font-family: Times; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: #0400; mso-bidi-font-weight: normal">Conheça na prática algumas das novas funcionalidades para construir aplicações web

 

No primeiro artigo sobre o Struts 2 exploramos todos os conceitos fundamentais para que seja possível iniciar o desenvolvimento de aplicações web utilizando a nova versão do Struts. Foi apresentado também um histórico completo sobre o framework e um guia para a migração de aplicações construídas com o Struts 1.x para o Struts 2. Nessa edição exploraremos com mais detalhes as principais features da nova versão, incluindo: Ajax, Annotations, Debugging, Tunning, etc.

Para demonstrar todas as features já mencionadas, criaremos uma aplicação de exemplo que utilizará todos os conceitos chave do framework. O sistema consiste em um cadastro de ferramentas, carros, clientes e fornecedores para uma oficina. As aplicações são apenas CRUDs que serão responsáveis por criar, recuperar, atualizar e excluir informações da base de dados. A parte referente à persistência será implementada utilizando o Hibernate, um framework Java para mapeamento objeto-relacional. Utilizaremos ainda o suporte ao Hibernate e o suporte à injeção de dependências do Spring Framework. Esses dois frameworks serão utilizados simultaneamente para que seja possível demonstrar toda a flexibilidade do Struts 2 em relação à integração com os mais variados frameworks disponíveis.

Para codificar as classes e JSPs do sistema, você pode utilizar o IDE (em português, ambiente de desenvolvimento integrado) de sua preferência. O sistema de exemplo foi construído usando o Eclipse Europa, a nova versão do IDE mais famoso para desenvolvimento Java. Para o desenvolvimento web, foi utilizado o plugin WTP (Web Tools Plataform). Consulte a seção Links para obter outras informações sobre o Eclipse e seus Plugins.

Iniciando o desenvolvimento

O primeiro artigo sobre o Struts 2, publicado na edição 15 da revista WebMobile, contém mais informações sobre a instalação e configuração do Struts 2. Utilize-o para consultar tais informações. Neste artigo, partiremos do principio de que o Struts já está instalado e configurado.

A Figura 1 mostra detalhadamente como é a estrutura e como estão organizados os arquivos de configuração do projeto.

 

Figura 1. Estrutura organizacional do projeto.

 

Para iniciarmos o desenvolvimento do sistema, tomaremos como exemplo a aplicação que mantém os clientes da oficina. Criaremos essa aplicação, destacando os pontos onde podem ser introduzidas algumas das principais features do Struts 2. Ao final do desenvolvimento da aplicação, veremos dois tópicos importantes: Debugging e Tuning, para que seja possível realizar configurações de otimização da aplicação.

O primeiro passo a ser tomado é codificar a action que atuará como controller. A Listagem 1 mostra a action ClienteAction.

 

Listagem 1. Action responsável por manter os clientes

public class ClienteAction extends BaseAction {

 

         private Cliente cliente;

         private ClienteDAO clienteDAO;

         private List<Cliente> listClientes;

         private List<Cliente> listClientesSearch;

 

         public String save() throws Exception {

                   clienteDAO.save(cliente);

                   addActionMessage(getText("save.success"));

                   return SUCCESS;

         }

 

         public String update() throws Exception {

                   clienteDAO.update(cliente);

                   addActionMessage(getText("update.success"));

                   return SUCCESS;

         }

 

         public String delete() throws Exception {

                   clienteDAO.delete(cliente);

                   addActionMessage(getText("delete.success"));

                   return SUCCESS;

         }

 

         public String findAll() throws Exception {

                   listClientes = clienteDAO.findAll(cliente, Cliente.class);

                   return SUCCESS;

         }

 

         public String findById() throws Exception {

                   cliente = clienteDAO.findById(cliente.getId(), Cliente.class);

                   return SUCCESS;

         }

 

         public String findClientes() throws Exception {

                   listClientesSearch = clienteDAO.findClientes(Cliente.class);

                   return SUCCESS;

         }

}

 

Na Listagem 1 podemos observar que foram criados métodos para realizar a persistência dos dados da aplicação com a classe Clientes, ou seja, operações de inserção, atualização, exclusão e pesquisa. O Struts 2 possui uma maneira de configurar uma action de forma que cada método possa ser acionado como uma action individual. Dessa forma, é possível reduzir o número de actions a serem desenvolvidas para o sistema. Em vez de criar as actions: InserirClienteAction, DeletarClienteAction e AtualizarClienteAction, podemos criar uma simples action chamada ClienteAction que possui métodos que fazem a mesma coisa que todas essas classes juntas. A Listagem 2 mostra como é feita essa configuração. Ao utilizar o atributo method da tag <action> informamos ao Struts 2 que o método selecionado deverá ser acionado.

 

Listagem 2. Configurando os métodos da action ClienteAction

<struts>

         <package name="cliente" extends="struts-default">

                   <default-interceptor-ref name="basicStack" />

 

                   <action name="saveCliente"

                            class="com.portaljava.action.ClienteAction" method="save">

                            <result name="input">inserir-cliente.jsp</result>

                            <result name="success">inserir-cliente.jsp</result>

                   </action>

                   <action name="prepareUpdateCliente"

                            ...

Quer ler esse conteúdo completo? Tenha acesso completo