Programação Web em Java
Autor: Kayo Bruno | Publicado: 2012-02-11T18:18:00-08:00

Sejam bem vindos, esta é a décima sexta aula de Programação Web em Java.

Na última aula começamos a construir o sistema de busca. Configuramos o Hibernate para uso com o Netbeans. Esta primeira aplicação é para verem tudo funcionando junto. Depois irei destrinchar com detalhes cada parte do processo.

Décima Sexta Aula: Sistema de busca última parte: Jsp e Struts

Camada Model
Hoje vamos terminar o sistema começando com a camada Model. A camada Model representa as entidades lógicas que precisamos para construir nossa aplicação. Para o funcionamento correto teremos a classe Sites, representando os sites armazenados no sistema, (isso já está pronto) e teremos também a classe MaquinaDeBusca.

A classe MaquinaDeBusca fará o trabalho pesado permitindo buscar uma lista de Sites de acordo com a palavra chave. Na verdade a classe de teste da última aula tem tudo que precisamos: A função “List buscaSites(String keyword)” realiza a busca dos itens com palavra chave igual ao parâmetro e devolve uma lista com os objetos que atendem a busca.

Camada View
A segunda camada que iremos trabalhar é a camada View. Vamos começar criando uma página JSP que apresenta um formulário para o preenchimento do usuário. Escolha “File/New File” no menu do Netbeans. Na janela “New File” selecione categoria “Web” tipo de arquivo “JSP” e clique em “Next”. Chame a página de “busca” e clique em “Finish”.

Para o formulário faremos algo bem simples:

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&nbsp; &lt;title&gt;Sistema de Busca&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp; &lt;form action="buscar.do"&gt;
&nbsp; &nbsp; &lt;input name="buscar"/&gt;
&nbsp; &nbsp; &lt;input type="submit" value="Buscar"/&gt;
&nbsp; &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
Veja que o formulário chama a ação “buscar.do”. O que será esta ação definiremos pelo framework Struts. Já vamos chegar lá. Vamos também criar um página chamada resultado.jsp que permitirá ver a lista de Sites encontrados. Para funcionar vamos supor que temos uma variável de requisição com o resultado da busca:

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%&gt;
&lt;%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%&gt;
&lt;%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&nbsp; &lt;title&gt;Sistema de Busca&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp; &lt;form action="buscar.do"&gt;
&nbsp; &nbsp; &lt;input name="buscar"/&gt;
&nbsp; &nbsp; &lt;input type="submit" value="Buscar"/&gt;
&nbsp; &lt;/form&gt;
&nbsp; &lt;logic:empty name="sites" &gt;
&nbsp; &nbsp; &lt;h5&gt;Nenhum Ítem Encontrado&lt;/h5&gt;
&nbsp; &lt;/logic:empty&gt;
&nbsp; &lt;logic:notEmpty name="sites"&gt;
&nbsp; &nbsp; &lt;table border='1'&gt;
&nbsp; &nbsp; &nbsp; &lt;tr&gt;
&nbsp; &nbsp; &nbsp; &lt;th&gt;Nome&lt;/th&gt;
&nbsp; &nbsp; &nbsp; &lt;th&gt;Descrição&lt;/th&gt;
&nbsp; &nbsp; &nbsp; &lt;th&gt;Url&lt;/th&gt;
&nbsp; &nbsp; &nbsp; &lt;th&gt;Palavras Chave&lt;/th&gt;
&nbsp; &nbsp; &nbsp; &lt;/tr&gt;
&nbsp; &nbsp; &nbsp; &lt;logic:iterate name="sites" id="site"&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;${site.nome}&lt;/td&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;${site.descricao}&lt;/td&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;${site.url}&lt;/td&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;${site.keyword}&lt;/td&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;
&nbsp; &nbsp; &nbsp; &lt;/logic:iterate&gt;
&nbsp; &nbsp; &lt;/table&gt;
&nbsp; &lt;/logic:notEmpty&gt;
&lt;/body&gt;
&lt;/html&gt;
Os tags logic:empty e logic:iterate são bastante auto explicativos. São parte da biblioteca de componentes do Struts. Veja as linhas após o @page.

Camada Control
Agora só falta juntar todas as peças. Quem faz isso é a camada Control. E esta camada é implementada pelo framework Struts. Nós temos apenas que definir o que acontecerá em cada ação possível do usuário.

A única ação deste sistema que o usuário poderá executar é clicar em buscar no formulário de busca. Então vamos gerar um Ação Struts para tratar este evento.

Escolha novamente “File/New File” no menu do Netbeans e na janela “New File” escolha categoria “Struts”, tipo de arquivo “Struts Actions”. Clique em “Next” e digite o nome do Action como “buscarAction”, o package como “sbusca” e o action Path para “/buscar”. Clique em “Next” e desligue a opção “Use ActionForm Bean”. Clique em Finish.

Modifique a função “Execute” para determinar o que acontecerá ao clicar o botão Buscar:

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
&nbsp; MaquinaDeBusca mdb=new MaquinaDeBusca(); //Prepara um objeto do modelo
&nbsp; String busca= request.getParameter("buscar"); //recupera o que o usuario digitou na caixa de texto
&nbsp; List sites=(ArrayList) mdb.buscaSites(busca); //Usa o modelo para obter os sites que batem com a palavra chave digitada pelo usuário
&nbsp; request.setAttribute("sites", sites); //armazena os sites encontrados para que a camada view (resposta.jsp) mostre a lista de sites encontrados
&nbsp; return mapping.findForward(SUCCESS); //passa a ação para o struts
}
(incluir “import java.util.*;” junto aos outros imports)

Falta muito pouco. Abra o arquivo struts-config.xml em WEB-INF na aba Project. Este arquivo está a configuração da amarração das ações com a views.

Modifique a linha &lt;action path=”/buscar” type=”sbusca.buscarAction”/&gt; para:

&lt;action path="/buscar" type="sbusca.buscarAction"&gt;
&lt;forward name="success" path="/resultado.jsp"/&gt;
&lt;/action&gt;
Isso fará com que ao final da Action “BuscarAction” a página de resposta que irá para o usuário será a “resultado.jsp”.

Aproveite e defina a página padrão modificando a linha &lt;action path=”/Welcome” forward=”/welcomeStruts.jsp”/&gt; para: &lt;action path=”/Welcome” forward=”/busca.jsp”/&gt;

Pronto, basta executar a aplicação e terá o sistema funcionando! (tecla F6 ou menu Run/Run Main Project)
Na próxima aula vamos detalhar cada parte do processo, começando com um longo artigo sobre a camada Model.