[Resolvido]Sistema de pesquisas com jsp com jstl e servlets

Olá,boa tarde a todos.
Estou tentando fazer um sistema de busca porém não estou conseguindo setar o nome que vou pesquisar na query lá do meu dao.

esse formualrio passa o nome que eu quero pesquisar

[code]

procurar

[/code]

Esse servlet pega esse valor que eu passei pelo formulario

package br.com.zefininfo.controle;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.zefininfo.modelo.Produto;

@WebServlet("/pesquisar-produto")
public class PesquisarProdutos extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	protected void processRequest(HttpServletRequest request , HttpServletResponse response) throws ServletException , IOException{
		Produto produto = new Produto();
		try{
			String pesquisa = request.getParameter("pesquisa");
			
			produto.setNome("%" + pesquisa + "%");

			RequestDispatcher rs = request.getRequestDispatcher("lista-busca.jsp");
			rs.forward(request, response);

			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

e quero exibir o resultado da pesquisa nessa jsp

<%@page import="br.com.zefininfo.dao.ProdutoDAOImpl"%>
<%@page import="br.com.zefininfo.modelo.Produto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>    
<!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>Insert title here</title>
</head>
<body>

<jsp:useBean id="dao" class="br.com.zefininfo.dao.ProdutoDAOImpl"></jsp:useBean>
<c:forEach var="produto" items="${dao.pesquisa}" >

${produto.nome}
</c:forEach>

</body>
</html>

porém não estou conseguindo passar o valor da pesquisa(o nome) para o metodo pesquisa do produtoDao

public List<Produto> getPesquisa(Produto produto) throws SQLException{
		ArrayList<Produto> produtosPesquisa = new ArrayList<Produto>();
		conexao = Conexao.getConnection();
		PreparedStatement pstmt = conexao.prepareStatement("SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE ? ");
		//Produto produto = new Produto();
		pstmt.setString(1, produto.getNome());
		System.out.println(produto);
		ResultSet rs = pstmt.executeQuery();
		System.out.println(pstmt);
		while(rs.next()){
			Produto produto2 = new Produto();
			produto2.setId(rs.getInt("CODIGO_PRODUTO_ID"));
			produto2.setNome(rs.getString("NOME_PRODUTO_TXT"));
			produto2.setDescricao(rs.getString("DESCRICAO_PRODUTO_TXT"));
			produto2.setFabricante(rs.getString("FABRICANTE_PRODUTO_TXT"));
			produto2.setValor(rs.getDouble("VALOR_PRODUTO_NUM"));
			produto2.setCategoria(rs.getString("CATEGORIA_PRODUTO_TXT"));
			produto2.setUnidade(rs.getInt("UNIDADE_PRODUTO_NUM"));
			produtosPesquisa.add(produto2);
		}
		rs.close();
		pstmt.close();
		conexao.close();
		return produtosPesquisa;
		
	}

ele está exibindo a query : com.mysql.jdbc.JDBC4PreparedStatement@50325aa1: SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE null
ou seja,não está setando na query o valor do nome pra eu dar o like com os %% para poder pesquisar por letras,etc
eu não tenho a minima ideia de como eu posso fazer um dao de busca,então eu fiz uma mistura do dao de listar com o dao de obter,porém não está dando certo…
Alguem tem uma ideia de como eu posso fazer essa pesquisa?
desde já agradeço :slight_smile:
detalhe o crud inteiro da aplicação está funcionando 100%,o problema é só essa busca…

1 curtida

Esse setNome é um metodo de busca ou ele é um campo do seu banco?

Pois dessa forma ele está inserindo o seu valor da pesquisa no campo nome do seu banco.
Cria um método no seu DAO que efetua a busca no seu banco de acordo com a String passada.

Como eu te disse o valor digitado para buscar está chegando ai como null, pois você está fazendo de uma forma errada.

Como eu te disse o valor digitado para buscar está chegando ai como null, pois você está fazendo de uma forma errada.

[quote=marlonmaxwel]Esse setNome é um metodo de busca ou ele é um campo do seu banco?

Pois dessa forma ele está inserindo o seu valor da pesquisa no campo nome do seu banco.
Cria um método no seu DAO que efetua a busca no seu banco de acordo com a String passada.[/quote]

aqui eu seto o nome que eu quero pesquisar e pego ele quando eu faço um

PreparedStatement pstmt = conexao.prepareStatement("SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE ? "); pstmt.setString(1, produto.getNome());
Porém não está funcionando dessa forma,porque é como se eu não setase o valor do nome do produto

Coloca aqui sua classe onde você define o setNome e o getNome.

package br.com.zefininfo.modelo;

public class Produto {
		private int id;
		private String nome;
		private String descricao;
		private String fabricante;
		private double valor;
		private String categoria;
		private int unidade;
		
		public int getId(){
			return id;
		}
		
		public void setId(int id){
			this.id = id;
		}
			
		public String getNome(){
			return nome;
		}
		
		public void setNome(String nome){
			this.nome = nome;
		}
		
		public String getDescricao(){
			return descricao;
		}
		
		public void setDescricao(String descricao){
			this.descricao = descricao;
		}
		
		public String getFabricante(){
			return fabricante;
		}
		
		public void setFabricante(String fabricante){
			this.fabricante = fabricante;
		}
		
		public double getValor(){
			return valor;
		}
		
		public void setValor(double valor){
			this.valor = valor;
		}
		
		public String getCategoria(){
			return categoria;
		}
		
		public void setCategoria(String categoria){
			this.categoria = categoria;
		}
		
		public int getUnidade(){
			return unidade;
		}
		
		public void setUnidade(int unidade){
			this.unidade = unidade;
		}
		
}

vou colocar também toda minha classe dao

package br.com.zefininfo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.zefininfo.conexao.Conexao;
import br.com.zefininfo.modelo.Produto;

public class ProdutoDAOImpl implements ProdutoDAO {
	
	private Connection conexao;
	
	/**
	 * Metodo adicionar é responsavel por adicionar todos os produtos cadastrados no form-produtos.jsp
	 * no banco de dados,os dados são inseridos na classe modelo pelo Servlet de controle do produto e esses dados são coletados
	 * pelo metodos adicionar e inseridos no banco de dados.
	 */
	public int adicionar(Produto produto) throws SQLException{
		String sqlProduto = "INSERT INTO TB_PRODUTOS (NOME_PRODUTO_TXT, DESCRICAO_PRODUTO_TXT, FABRICANTE_PRODUTO_TXT, VALOR_PRODUTO_NUM, CATEGORIA_PRODUTO_TXT, UNIDADE_PRODUTO_NUM) VALUES(?, ?, ?, ?, ? ,?)";
		
		conexao = Conexao.getConnection();
		
		int i=1;
				
		PreparedStatement pstmt = conexao.prepareStatement(sqlProduto);
		pstmt.setString(i++, produto.getNome());
		pstmt.setString(i++, produto.getDescricao());
		pstmt.setString(i++, produto.getFabricante());
		pstmt.setDouble(i++, produto.getValor());
		pstmt.setString(i++, produto.getCategoria());
		pstmt.setInt(i++, produto.getUnidade());
				
		int cod = pstmt.executeUpdate();
		
		return cod;
	}
	
	
	/**
	 *Metodo alterar é responsavel por atualizar uma coluna especifica da tabela dos produtos do 
	 * banco de dados,os dados que serão alterados são inseridos no alter-produtos.jsp,logo após ele é
	 * inserido na classe modelo pelo servlet de controle do produto e o metodo alterar coleta o id
	 *  do produto que será alterado e seus novos valores,logo depois ele altera esses valores no
	 *  banco de dados.
	 */
	public int alterar(Produto produto) throws SQLException{
		String sql = "UPDATE TB_PRODUTOS SET NOME_PRODUTO_TXT=?, DESCRICAO_PRODUTO_TXT=?, FABRICANTE_PRODUTO_TXT=?, VALOR_PRODUTO_NUM=?, CATEGORIA_PRODUTO_TXT=?, UNIDADE_PRODUTO_NUM=? WHERE CODIGO_PRODUTO_ID=?";
		conexao = Conexao.getConnection();
		
		int i = 1;
		
		PreparedStatement pstmt = conexao.prepareStatement(sql);
		
		pstmt.setString(i++, produto.getNome());
		pstmt.setString(i++, produto.getDescricao());
		pstmt.setString(i++, produto.getFabricante());
		pstmt.setDouble(i++, produto.getValor());
		pstmt.setString(i++, produto.getCategoria());
		pstmt.setInt(i++, produto.getUnidade());
		pstmt.setInt(i++, produto.getId());
		
		int cod = pstmt.executeUpdate();
		
		return cod;
	}
	
	
	
	/**
	 *Metodo excluir é o metodo responsavel por pegar o id passado via get para o servlet de controle 
	 * de deletar os produtos,então o servlet de controle coleta esse id e insere na classe de modelo,
	 * então o metodo excluir coleta o id e o deleta no banco de dados 
	 */
	public int excluir(Produto produto) throws SQLException{
		String sql = "DELETE FROM TB_PRODUTOS WHERE CODIGO_PRODUTO_ID=?";
		conexao = Conexao.getConnection();
		
		PreparedStatement pstmt = conexao.prepareStatement(sql);
		int i =1;
		pstmt.setInt(i++, produto.getId());
				
		int cod = pstmt.executeUpdate();
		
		return cod;
	}
	
	
	/**
	 * Metodo obter e destinado por coletar o id de um produto especifico que deseja ser listado,então esse
	 * id é passado para a jsp responsavel por listar esse produto e o produto é listado e a jsp executa
	 * o metodo e obtem os valores desse id.
	 */
	public Produto obter(Produto produto) throws SQLException{
		String sql = "SELECT * FROM TB_PRODUTOS WHERE CODIGO_PRODUTO_ID=?";
		conexao = Conexao.getConnection();
		PreparedStatement pstmt = conexao.prepareStatement(sql);
		int i = 1;
		pstmt.setInt(i++, produto.getId());
		ResultSet rs = pstmt.executeQuery();
			if (rs.next()){
				//NOME_PRODUTO_TXT, DESCRICAO_PRODUTO_TXT, FABRICANTE_PRODUTO_TXT, VALOR_PRODUTO_NUM,
				//CATEGORIA_PRODUTO_TXT, UNIDADE_PRODUTO_NUM)
				produto.setId(rs.getInt("CODIGO_PRODUTO_ID"));
				produto.setNome(rs.getString("NOME_PRODUTO_TXT"));
				produto.setDescricao(rs.getString("DESCRICAO_PRODUTO_TXT"));
				produto.setFabricante(rs.getString("FABRICANTE_PRODUTO_TXT"));
				produto.setValor(rs.getDouble("VALOR_PRODUTO_NUM"));
				produto.setCategoria(rs.getString("CATEGORIA_PRODUTO_TXT"));
				produto.setUnidade(rs.getInt("UNIDADE_PRODUTO_NUM"));
			}
			conexao.close();
			return produto;
	}
	
	/**
	 * Metodo getLista é responsavel por listar todos os produtos do banco de dados.
	 * ele é executado dentro de uma jsp,é chamado por uma tag foreach da biblioteca jstl.	
	 */
	public List<Produto> getLista() throws SQLException{
			ArrayList<Produto> produtos = new ArrayList<Produto>();
			conexao = Conexao.getConnection();
			PreparedStatement pstmt = conexao.prepareStatement("SELECT * FROM TB_PRODUTOS");
			ResultSet rs = pstmt.executeQuery();
			System.out.println(pstmt);
			while(rs.next()){
				Produto produto = new Produto();
				produto.setId(rs.getInt("CODIGO_PRODUTO_ID"));
				produto.setNome(rs.getString("NOME_PRODUTO_TXT"));
				produto.setDescricao(rs.getString("DESCRICAO_PRODUTO_TXT"));
				produto.setFabricante(rs.getString("FABRICANTE_PRODUTO_TXT"));
				produto.setValor(rs.getDouble("VALOR_PRODUTO_NUM"));
				produto.setCategoria(rs.getString("CATEGORIA_PRODUTO_TXT"));
				produto.setUnidade(rs.getInt("UNIDADE_PRODUTO_NUM"));
				produtos.add(produto);
			}
			rs.close();
			pstmt.close();
			conexao.close();
			return produtos;
	}
		
	public List<Produto> getPesquisa(Produto produto) throws SQLException{
		ArrayList<Produto> produtosPesquisa = new ArrayList<Produto>();
		conexao = Conexao.getConnection();
		PreparedStatement pstmt = conexao.prepareStatement("SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE ? ");
		//Produto produto = new Produto();
		pstmt.setString(1, produto.getNome());
		System.out.println(produto);
		ResultSet rs = pstmt.executeQuery();
		System.out.println(pstmt);
		while(rs.next()){
			Produto produto2 = new Produto();
			produto2.setId(rs.getInt("CODIGO_PRODUTO_ID"));
			produto2.setNome(rs.getString("NOME_PRODUTO_TXT"));
			produto2.setDescricao(rs.getString("DESCRICAO_PRODUTO_TXT"));
			produto2.setFabricante(rs.getString("FABRICANTE_PRODUTO_TXT"));
			produto2.setValor(rs.getDouble("VALOR_PRODUTO_NUM"));
			produto2.setCategoria(rs.getString("CATEGORIA_PRODUTO_TXT"));
			produto2.setUnidade(rs.getInt("UNIDADE_PRODUTO_NUM"));
			produtosPesquisa.add(produto2);
		}
		rs.close();
		pstmt.close();
		conexao.close();
		return produtosPesquisa;
		
	}
}

mas como eu disse,ela está funcionando,o unico problema é esse metodo de pesquisa que eu não estou sabendo fazer

Efetue o seguinte teste:

Altere seu servlet para na parte do try catch:

[code]try{
String pesquisa = request.getParameter(“pesquisa”);

        produto.getPesquisa(pesquisa);  

        RequestDispatcher rs = request.getRequestDispatcher("lista-busca.jsp");  
        rs.forward(request, response);  

          
    }catch(Exception e){  
        e.printStackTrace();  
    } [/code]

e seu DAO para:

[code]public List getPesquisa(Produto produto, String palavra) throws SQLException{
ArrayList produtosPesquisa = new ArrayList();
conexao = Conexao.getConnection();
PreparedStatement pstmt = conexao.prepareStatement(“SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE %”+palavra+"% ");
//Produto produto = new Produto();
pstmt.setString(1, produto.getNome());
System.out.println(produto);
ResultSet rs = pstmt.executeQuery();
System.out.println(pstmt);
while(rs.next()){
Produto produto2 = new Produto();
produto2.setId(rs.getInt(“CODIGO_PRODUTO_ID”));
produto2.setNome(rs.getString(“NOME_PRODUTO_TXT”));
produto2.setDescricao(rs.getString(“DESCRICAO_PRODUTO_TXT”));
produto2.setFabricante(rs.getString(“FABRICANTE_PRODUTO_TXT”));
produto2.setValor(rs.getDouble(“VALOR_PRODUTO_NUM”));
produto2.setCategoria(rs.getString(“CATEGORIA_PRODUTO_TXT”));
produto2.setUnidade(rs.getInt(“UNIDADE_PRODUTO_NUM”));
produtosPesquisa.add(produto2);
}
rs.close();
pstmt.close();
conexao.close();
return produtosPesquisa;

}[/code]

Esse código seu da para melhorar bastante com várias técnicas.

Efetue o seguinte teste:

Altere seu servlet para na parte do try catch:

[code]try{
String pesquisa = request.getParameter(“pesquisa”);

        produto.getPesquisa(pesquisa);  

        RequestDispatcher rs = request.getRequestDispatcher("lista-busca.jsp");  
        rs.forward(request, response);  

          
    }catch(Exception e){  
        e.printStackTrace();  
    } [/code]

e seu DAO para:

[code]public List getPesquisa(Produto produto, String palavra) throws SQLException{
ArrayList produtosPesquisa = new ArrayList();
conexao = Conexao.getConnection();
PreparedStatement pstmt = conexao.prepareStatement(“SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE %”+palavra+"% ");
//Produto produto = new Produto();
pstmt.setString(1, produto.getNome());
System.out.println(produto);
ResultSet rs = pstmt.executeQuery();
System.out.println(pstmt);
while(rs.next()){
Produto produto2 = new Produto();
produto2.setId(rs.getInt(“CODIGO_PRODUTO_ID”));
produto2.setNome(rs.getString(“NOME_PRODUTO_TXT”));
produto2.setDescricao(rs.getString(“DESCRICAO_PRODUTO_TXT”));
produto2.setFabricante(rs.getString(“FABRICANTE_PRODUTO_TXT”));
produto2.setValor(rs.getDouble(“VALOR_PRODUTO_NUM”));
produto2.setCategoria(rs.getString(“CATEGORIA_PRODUTO_TXT”));
produto2.setUnidade(rs.getInt(“UNIDADE_PRODUTO_NUM”));
produtosPesquisa.add(produto2);
}
rs.close();
pstmt.close();
conexao.close();
return produtosPesquisa;

}[/code]

Esse código seu da para melhorar bastante com várias técnicas.

[quote=marlonmaxwel]Efetue o seguinte teste:

Altere seu servlet para na parte do try catch:

[code]try{
String pesquisa = request.getParameter(“pesquisa”);

        produto.getPesquisa(pesquisa);  

        RequestDispatcher rs = request.getRequestDispatcher("lista-busca.jsp");  
        rs.forward(request, response);  

          
    }catch(Exception e){  
        e.printStackTrace();  
    } [/code]

e seu DAO para:

[code]public List getPesquisa(Produto produto, String palavra) throws SQLException{
ArrayList produtosPesquisa = new ArrayList();
conexao = Conexao.getConnection();
PreparedStatement pstmt = conexao.prepareStatement(“SELECT * FROM TB_PRODUTOS WHERE NOME_PRODUTO_TXT LIKE %”+palavra+"% ");
//Produto produto = new Produto();
pstmt.setString(1, produto.getNome());
System.out.println(produto);
ResultSet rs = pstmt.executeQuery();
System.out.println(pstmt);
while(rs.next()){
Produto produto2 = new Produto();
produto2.setId(rs.getInt(“CODIGO_PRODUTO_ID”));
produto2.setNome(rs.getString(“NOME_PRODUTO_TXT”));
produto2.setDescricao(rs.getString(“DESCRICAO_PRODUTO_TXT”));
produto2.setFabricante(rs.getString(“FABRICANTE_PRODUTO_TXT”));
produto2.setValor(rs.getDouble(“VALOR_PRODUTO_NUM”));
produto2.setCategoria(rs.getString(“CATEGORIA_PRODUTO_TXT”));
produto2.setUnidade(rs.getInt(“UNIDADE_PRODUTO_NUM”));
produtosPesquisa.add(produto2);
}
rs.close();
pstmt.close();
conexao.close();
return produtosPesquisa;

}[/code]

Esse código seu da para melhorar bastante com várias técnicas.[/quote]

Então você está falando para eu criar na classe Produto um atributo pesquisa é isso?
ai no servlet eu dou get nele

(que por sinal vai estar vazio,porque ainda não setei com

e também não entendi como aquela String palavra vai ser preenchida no dao,porque,a principio,não estou inserindo nada nela…
ou estou enganado o.O

Não é atributo e sim método.
Ele já ta criado, só passei algumas modificações para você fazer.

[quote=marlonmaxwel]Não é atributo e sim método.
Ele já ta criado, só passei algumas modificações para você fazer.[/quote]
entendi,vou fazer as modificações aqui…
Só que eu acharia melhor o nome do metodo ser setPesquisa() , ai ficaria mais “legivel” porque você está setando um valor …
E getPesquisa() parece que você está pegando um valor que já foi previamente setado…
Desculpe mas,como vou setar esse valor que eu coletei com o getPesquisa lá na String palavra do dao ?

[quote=Slow17][quote=marlonmaxwel]Não é atributo e sim método.
Ele já ta criado, só passei algumas modificações para você fazer.[/quote]
entendi,vou fazer as modificações aqui…
Só que eu acharia melhor o nome do metodo ser setPesquisa() , ai ficaria mais “legivel” porque você está setando um valor …
E getPesquisa() parece que você está pegando um valor que já foi previamente setado…
Desculpe mas,como vou setar esse valor que eu coletei com o getPesquisa lá na String palavra do dao ?[/quote]

  1. No momento que vc chama o getPesquisa no Servlet da forma que eu mostrei, você passa para ele a palavra que deseja pesquisar.
  2. No seu metodo getPesquisa, você faz um SELECT de acordo com a palavra passada para o método(Repare após o LIKE):

Entendeu?

isso

[quote=marlonmaxwel][quote=Slow17][quote=marlonmaxwel]Não é atributo e sim método.
Ele já ta criado, só passei algumas modificações para você fazer.[/quote]
entendi,vou fazer as modificações aqui…
Só que eu acharia melhor o nome do metodo ser setPesquisa() , ai ficaria mais “legivel” porque você está setando um valor …
E getPesquisa() parece que você está pegando um valor que já foi previamente setado…
Desculpe mas,como vou setar esse valor que eu coletei com o getPesquisa lá na String palavra do dao ?[/quote]

  1. No momento que vc chama o getPesquisa no Servlet da forma que eu mostrei, você passa para ele a palavra que deseja pesquisar.
  2. No seu metodo getPesquisa, você faz um SELECT de acordo com a palavra passada para o método(Repare após o LIKE):

Entendeu?
[/quote]
Há,agora entedi,repare que quando você fez a primeira mudança no serlvet,ele tá dizendo que a classe produto que tem o metodo get

sendo que,para setar essa string lá , o certo seria eu instanciar o dao

e executar o metodo dele passando o valor da pesquisa

então o codigo do servlet fica assim

ProdutoDaoImpl dao = new ProdutoDaoImpl();
try{    
            String pesquisa = request.getParameter("pesquisa");    
                
            dao.getPesquisa(pesquisa);    
    
            RequestDispatcher rs = request.getRequestDispatcher("lista-busca.jsp");    
            rs.forward(request, response);    
    
                
        }catch(Exception e){    
            e.printStackTrace();    
        }   

eu me enrrolei justamente porque no meu servlet eu instancio a classe Produto e coloco a variavel produto para ele…

Funcionou?
Se sim, edite o título da sua dúvida e coloque [Resolvido]

Há,muito bom,muito bom,ele setou o valor lá na query

Porém,ele disparou uma exception lá na hora de exibir os valores por causa do foreach em jstl

org.apache.jasper.el.JspPropertyNotFoundException: /lista-busca.jsp(15,0) '${dao.pesquisa}' Property 'pesquisa' not found on type br.com.zefininfo.dao.ProdutoDAOImpl

porque a EL da jstl está procurando o metodo getPesquisa() e lá no dao está o metodo getPesquisa(String palavra) por isso ele não está achando na hora que eu faço um

<jsp:useBean id="dao" class="br.com.zefininfo.dao.ProdutoDAOImpl"></jsp:useBean>
<c:forEach var="produto" items="${dao.pesquisa}" >
${produto.nome}
</c:forEach>

axo que é esse o problema…
Se eu fizer com scriptlet

<%
String nome = (String)request.getAttribute("pesquisa");
ProdutoDAOImpl dao = new ProdutoDAOImpl();
List<Produto> produtos = dao.getPesquisa(nome);
for (Produto produto : produtos ) {
%>
<%=produto.getNome() %>
<%
}
%>

(eu salvo no request o atributo pesquisa lá no servlet)
Já funciona perfeitamente,mas eu quero botar isso pra funcionar com jstl…

Alguem tem uma ideia de como eu posso melhorar esse codigo? :smiley:

Sua pesquisa funcionou?

Pesquise sobre Refatoração(refactoring) que concerteza você vai melhorar seu código.

[quote=marlonmaxwel]Sua pesquisa funcionou?

Pesquise sobre Refatoração(refactoring) que concerteza você vai melhorar seu código.[/quote]
Sim, a pesquisa,funcionou,porém só com o scriptlet,mais valeu pela dica :smiley: