Cursos / Informática para Internet / Desenvolvimento Web II / Aula

arrow_back Aula 11 - Projeto (Parte 2): Incorporando o Banco de Dados

Implementar a Busca de Produtos

Na implementação atual da livraria, quando o usuário inicia as compras, todos os livros são listados e a partir daí ele pode selecionar qual dos livros ele deseja adicionar no seu carrinho de compras.

O problema dessa funcionalidade é que em sistemas reais existem milhares de produtos a serem vendidos e mostrar todos na página principal não é uma opção muito adequada. A solução para esse problema é implementar algo parecido com o que é feito em sites similares, tais como http://www.livrariacultura.com.br/ e http://www.amazon.com/. Nesses dois casos, como você pode perceber, existe um campo de texto onde o usuário pode digitar uma palavra-chave e buscar. A lista resultante só vai conter itens que contenham a palavra-chave informada pelo usuário.

Nessa parte do projeto, o objetivo é implementar essa mesma funcionalidade. Iremos sugerir alguns passos que devem ser feitos, mas não iremos indicar a solução completa. Por isso, usem os seus conhecimentos e um pouco de criatividade para implementar esse novo requisito da maneira como você julgar mais interessante.

Como sugestão, você pode se orientar pelos passos seguintes.

  1. Adicionar um método public List<Livro> buscarLivros(String palavra) na sua classe RepositorioLivrosJDBC que realiza a consulta no banco de dados pela palavra-chave e retornar a lista de livros cujo título contém essa palavra (você pode incrementar esse recurso buscando por outros campos além do título):
  1. Na classe Livraria, adicione um novo método que, simplesmente, chama o método criado no passo 1.

Repare que os livros resultantes da busca agora são adicionados no request scope (request.setAttribute("livros", livros);) portanto isso deve ser levando em conta no JSP que o vai exibir (catalogo.jsp)

  1. No ServletControlador adicione o seguinte trecho de código relacionado ao tratamento da ação “/livros/catalogo”.

Como pode ser visto, nessa ação modificamos o primeiro teste condicional, pois existirão situações em que o parâmetro Add será null. Além disso, incluímos uma segunda parte da condição indicando que, quando não for uma adição de um item ao carrinho, pode ser uma busca. Neste caso, fazemos a consulta na livraria (usando o método que foi criado no passo anterior) e depois adicionamos o resultado da busca  como atributo do request para que o jsp possa recuperar essa lista ao montar a página.

  1. No catalogo.jsp, modifique a linha do loop (<c:forEach>) de modo que, ao invés de recuperar todos os livros, ele acesse o objeto que foi adicionado no escopo do request.

Implementadas essas quatro modificações, o requisito de filtrar os livros na página principal estará praticamente atendido. Dessa forma quando você simplesmente acessar o catálogo nenhum livro aparecerá (pois não foi feita uma busca), porém se você adicionar na URL buscar=ALGUMA_PALAVRA o resultado da busca será exibido. Teste por exemplo com a URL: http://localhost:8080/livraria/livros/catalogo?Add=&buscar=Desenvolvendo

Você pode ainda alterar o catalog.jsp e adicionar um formulário de busca para que não seja necessário sempre digitar a palavra que se deseja na URL. Adicione antes da tabela que lista os livros o seguinte form:

Repare que o form tem o método “GET” e a omissão do seu action faz com que ele seja a própria página atual (catalogo.jsp) e além do campo “buscar” existe um campo escondido chamado “Add” sem valor para que o sistema funcione como o esperado, ou seja, sem adicionar nenhum livro no carrinho somente pelo fato de se realizar uma busca. O resultado da busca por “Head First” deve retornar somente 1 livro:

Resultado da busca

Ainda são muitas as possibilidades que podem ser implementadas para melhorar o sistema da livraria. Vale lembrar estamos explorando uma integração básica de um sistema com banco de dados e que para se criar um sistema completo para o mercado muitos recursos precisam ser implementados utilizando os conhecimentos que você está aprendendo.

Versão 5.3 - Todos os Direitos reservados