Sejam bem vindos, esta é a décima sexta aula de Programação Web em Java, para saber mais sobre o curso, começe em Curso de Programação Web em Java – CPWJ
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.
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:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sistema de Busca</title>
</head>
<body>
<form action="buscar.do">
<input name="buscar"/>
<input type="submit" value="Buscar"/>
</form>
</body>
</html>
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:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sistema de Busca</title>
</head>
<body>
<form action="buscar.do">
<input name="buscar"/>
<input type="submit" value="Buscar"/>
</form>
<logic:empty name="sites" >
<h5>Nenhum Ítem Encontrado</h5>
</logic:empty>
<logic:notEmpty name="sites">
<table border='1'>
<tr>
<th>Nome</th>
<th>Descrição</th>
<th>Url</th>
<th>Palavras Chave</th>
</tr>
<logic:iterate name="sites" id="site">
<tr>
<td>${site.nome}</td>
<td>${site.descricao}</td>
<td>${site.url}</td>
<td>${site.keyword}</td>
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
</body>
</html>
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 {
MaquinaDeBusca mdb=new MaquinaDeBusca(); //Prepara um objeto do modelo
String busca= request.getParameter("buscar"); //recupera o que o usuario digitou na caixa de texto
List sites=(ArrayList) mdb.buscaSites(busca); //Usa o modelo para obter os sites que batem com a palavra chave digitada pelo usuário
request.setAttribute("sites", sites); //armazena os sites encontrados para que a camada view (resposta.jsp) mostre a lista de sites encontrados
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 <action path=”/buscar” type=”sbusca.buscarAction”/> para:
<action path="/buscar" type="sbusca.buscarAction">
<forward name="success" path="/resultado.jsp"/>
</action>
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 <action path=”/Welcome” forward=”/welcomeStruts.jsp”/> para: <action path=”/Welcome” forward=”/busca.jsp”/>
Pronto, basta executar a aplicação e terá o sistema funcionando! (tecla F6 ou menu Run/Run Main Project)
Sei que vão pintar milhares de dúvidas, porém estou aqui para esclarecer. (no fórum).
Na próxima aula vamos detalhar cada parte do processo, começando com um longo artigo sobre a camada Model.