Problema com AutoComplete

Olá Senhores, estou com uma dúvida:
Quero criar a partir de um resultset um Autocomplete, com Jquery, como fazer com que a Servlet possa usar um String Sql como parâmetro?
Abaixo a Servlet que quero Reaproveitar, obs: estou usando taglibs do Google(Gson)
Logo adiante o meu resultset que usa um nome para a pesquisa de um dado:

import java.io.IOException;
import java.util.ArrayList;
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 com.google.gson.Gson;

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

protected void doGet(HttpServletRequest request,  
        HttpServletResponse response) throws ServletException, IOException {  
    String term = request.getParameter("term");  

    String[] valueBase = { "ActionScript", "AppleScript", "Asp", "BASIC",  
            "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang",  
            "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lua",  
            "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme" };  

    ArrayList<String> values = new ArrayList<String>();  
    if (term != null) {  
        for (String value : valueBase) {  
            if (value.startsWith(term)) {  
                values.add(value);  
            }  
        }  
    }  

    Gson gson = new Gson();  
    String jSon = gson.toJson(values);  
    System.out.println("term: " + term + " | json: " + jSon);  
    response.getWriter().write(jSon);  
    response.getWriter().flush();  
}  

protected void doPost(HttpServletRequest request,  
        HttpServletResponse response) throws ServletException, IOException {  
}  

}

Resultset que quero aproveitar para obter o AutoComplete.


public List<Empresa> pesquisaEmpresas(String nome) throws SQLException {

    List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();  

    ResultSet rs = getResultSet(nome);  
    while (rs.next()) {  
        Empresa empresa = new Empresa();  
        empresa = new Empresa();  

        empresa.setCod_empresa(rs.getLong("cod_empresa"));  
        empresa.setNome(rs.getString("nome"));  
        empresa.setTelefone(rs.getString("Telefone"));  
        empresa.setEmail(rs.getString("Email"));  
        empresa.setSite(rs.getString("Site"));  
        empresa.setEndereco(rs.getString("Endereco"));  
        empresa.setDescricao(rs.getString("descricao"));  
        empresa.setPrioridade(rs.getLong("prioridade"));  
        empresa.setLogo(rs.getString("logo"));  

        empresas.add(empresa);  
    }  

    return empresas;  
}  

public ResultSet getResultSet(String nome) throws SQLException {  

    String sql = "select * from empresa where nome like '%" + nome  
            + "%'order by prioridade";  

    PreparedStatement stmt = this.connection.prepareStatement(sql);  

    ResultSet rs = stmt.executeQuery();  

    return rs;  
}  

public List&lt;Empresa&gt; listaDados(Long cod_empresa) throws SQLException {  
    List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();  
    ResultSet rs = getResultSet(cod_empresa);  
    while (rs.next()) {  
        Empresa empresa = new Empresa();  
        // empresa = new Empresa();  

        empresa.setCod_empresa(rs.getLong("cod_empresa"));  
        empresa.setNome(rs.getString("nome"));  
        empresa.setTelefone(rs.getString("Telefone"));  
        empresa.setEmail(rs.getString("Email"));  
        empresa.setSite(rs.getString("Site"));  
        empresa.setEndereco(rs.getString("Endereco"));  
        empresa.setDescricao(rs.getString("descricao"));  
        empresa.setPrioridade(rs.getLong("prioridade"));  
        empresa.setLogo(rs.getString("logo"));  
        empresas.add(empresa);  
    }  
    return empresas;  
}

Você vai instanciar a sua classe de controle e fazer chamada ao método.

Enfim, qual é a dificuldade? :slight_smile:

Como fazer a instância da listagem pela qual o objeto do tipo empresa será obtido e mostrado no input.

Entendi…

Então, preciso saber, o que você implementou na sua camada de modelo.

EJB ? Hibernate? JPA? (…)

Você pode verificar no projeto, se existe alguma chamada a algum método que vá ao BD?

JDBC, vou te mandar a classe DAO agora.

[code]package br.com.lza.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.lza.modelo.Empresa;

/**

  • Classe que instancia a conex�o com o banco de dados

*/
public class EmpresaDAO {
private Connection connection;

public EmpresaDAO() throws SQLException {

	this.connection = new ConnectionFactory().getConnection();

}

/**
 * Inclui um objeto empresa no banco de dados
 * 
 * @param empresa
 * @throws SQLException
 */
public void adiciona(Empresa empresa) throws SQLException {
	String sql = "insert into empresa (nome,endereco,telefone,email,site, descricao, logo, prioridade )values (?,?,?,?,?,?,?,?)";
	PreparedStatement stmt = connection.prepareStatement(sql);

	stmt.setString(1, empresa.getNome());
	stmt.setString(2, empresa.getEndereco());
	stmt.setString(3, empresa.getTelefone());
	stmt.setString(4, empresa.getEmail());
	stmt.setString(5, empresa.getSite());
	stmt.setString(6, empresa.getDescricao());
	stmt.setString(7, empresa.getLogo());
	stmt.setLong(8, empresa.getPrioridade());
	stmt.execute();
	stmt.close();
}

/**
 * Cria um lista de objetos empresa
 * 
 * @return
 * @throws SQLException
 */
long incremento;
long limite = incremento;
long index = limite + 30;

public List&lt;Empresa&gt; getLista() throws SQLException {
	PreparedStatement stmt = this.connection
			.prepareStatement("SELECT * FROM empresa order by nome LIMIT "
					+ limite + ", " + index);

	ResultSet rs = stmt.executeQuery();
	List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();
	while (rs.next()) {
		Empresa empresa = new Empresa();
		empresa.setCod_empresa(rs.getLong("cod_empresa"));
		empresa.setPrioridade(rs.getLong("prioridade"));
		empresa.setNome(rs.getString("nome"));
		empresa.setEndereco(rs.getString("endereco"));
		empresa.setTelefone(rs.getString("telefone"));
		empresa.setEmail(rs.getString("email"));
		empresa.setSite(rs.getString("site"));
		empresa.setDescricao(rs.getString("Descricao"));
		empresa.setLogo(rs.getString("logo"));
		empresas.add(empresa);

	}
	rs.close();
	stmt.close();
	stmt.close();
	return empresas;
}

/**
 * Atualiza o objeto no banco de dados com um sql update
 * 
 * @param empresa
 */
public void altera(Empresa empresa) throws SQLException {
	PreparedStatement stmt = connection
			.prepareStatement("update empresa set nome=Upper(?), endereco=?, telefone=?, email=lower(?), site=lower(?), descricao=?, prioridade=?, logo=lower(?) where cod_empresa=?");
	stmt.setString(1, empresa.getNome());
	stmt.setString(2, empresa.getEndereco());
	stmt.setString(3, empresa.getTelefone());
	stmt.setString(4, empresa.getEmail());
	stmt.setString(5, empresa.getSite());
	stmt.setString(6, empresa.getDescricao());
	stmt.setLong(7, empresa.getPrioridade());
	stmt.setString(8, empresa.getLogo());
	stmt.setLong(9, empresa.getCod_empresa());
	stmt.execute();
	stmt.close();
}

/**
 * Apaga o objeto empresa do banco de dados passando o c&#65533;digo
 * 
 * @param empresa
 * @throws SQLException
 */
public void remove(Empresa empresa) throws SQLException {
	PreparedStatement stmt = connection
			.prepareStatement("delete from empresa where cod_empresa=?");
	stmt.setLong(1, empresa.getCod_empresa());
	stmt.execute();
	stmt.close();
}

/**
 * Consulta um objeto Empresa com o parametro nome da Empresa usando like
 * para banco de dados
 * 
 * @param nome
 * @return
 * @throws SQLException
 */

/**
 * Consulta um objeto Empresa com o parametro nome da Empresa usando like
 * para banco de dados
 * 
 * @param nome
 * @return
 * @throws SQLException
 */
public List&lt;Empresa&gt; pesquisaEmpresas(String nome) throws SQLException {

	List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();

	ResultSet rs = getResultSet(nome);
	while (rs.next()) {
		Empresa empresa = new Empresa();
		empresa = new Empresa();

		empresa.setCod_empresa(rs.getLong("cod_empresa"));
		empresa.setNome(rs.getString("nome"));
		empresa.setTelefone(rs.getString("Telefone"));
		empresa.setEmail(rs.getString("Email"));
		empresa.setSite(rs.getString("Site"));
		empresa.setEndereco(rs.getString("Endereco"));
		empresa.setDescricao(rs.getString("descricao"));
		empresa.setPrioridade(rs.getLong("prioridade"));
		empresa.setLogo(rs.getString("logo"));

		empresas.add(empresa);
	}

	return empresas;
}

public ResultSet getResultSet(String nome) throws SQLException {

	String sql = "select * from empresa where nome like '%" + nome
			+ "%'order by prioridade";

	PreparedStatement stmt = this.connection.prepareStatement(sql);

	ResultSet rs = stmt.executeQuery();

	return rs;
}

public List&lt;Empresa&gt; listaDados(Long cod_empresa) throws SQLException {
	List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();
	ResultSet rs = getResultSet(cod_empresa);
	while (rs.next()) {
		Empresa empresa = new Empresa();
		// empresa = new Empresa();

		empresa.setCod_empresa(rs.getLong("cod_empresa"));
		empresa.setNome(rs.getString("nome"));
		empresa.setTelefone(rs.getString("Telefone"));
		empresa.setEmail(rs.getString("Email"));
		empresa.setSite(rs.getString("Site"));
		empresa.setEndereco(rs.getString("Endereco"));
		empresa.setDescricao(rs.getString("descricao"));
		empresa.setPrioridade(rs.getLong("prioridade"));
		empresa.setLogo(rs.getString("logo"));
		empresas.add(empresa);
	}
	return empresas;
}

public ResultSet getResultSet(Long Cod_empresa) throws SQLException {
	String sql = "select * from empresa where cod_empresa =?";
	PreparedStatement stmt = this.connection.prepareStatement(sql);
	stmt.setLong(1, Cod_empresa);
	ResultSet rs = stmt.executeQuery();
	return rs;
}

}[/code]

esta, abaixo é a servlet pela qual estancio o método pelo qual obtenho as empresas pelo nome:

package br.com.lza.visao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.lza.dao.EmpresaDAO;
import br.com.lza.modelo.Empresa;

public class PesquisaEmpresaLogic implements BusinessLogic {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		System.out.println("Executando a lógica e redirecionando...");

		List&lt;Empresa&gt; empresas = new ArrayList&lt;Empresa&gt;();
		String nome = (request.getParameter("nome"));

		request.setAttribute("nome", nome);

		EmpresaDAO empresadao;

		try {

			empresadao = new EmpresaDAO();

			empresas = empresadao.pesquisaEmpresas(nome);
			if (empresas.isEmpty()) {
				RequestDispatcher rd = request
						.getRequestDispatcher("erropesq.jsp");
				rd.forward(request, response);
			} else {
				request.setAttribute("empresa", empresas);

				RequestDispatcher rd = request
						.getRequestDispatcher("resultpesq.jsp");
				rd.forward(request, response);
			}
		} catch (SQLException e) {
		}
	}
}