A página JSP fica eternamente carregando

Oi pessoal…
não entendo… uma hora minha aplicação deu certo, depois deu erro, e agora minha página JSP fica carregando e não sai disso (isso tudo sem eu mexer no código fonte)… vou postar aqui o código da minha página… será q alguem pode me ajudar???

[code]<%@page language=“Java” import=“ConexaoBD” import=“java.sql.*”%>

<%
String nome, codigo, selectFornecedores;
ResultSet rs;
ConexaBD con;

selectFornecedores = “SELECT cod_fornecedor, nome_fantasia FROM cd_fornecedor ORDER BY cod_fornecedor”;

con = null;
con = new ConexaoBD();

rs = null;
rs = con.pesquisa(selectFornecedores);

try
{

%>

Fornecedores

<%
while ( rs.next() )
{
codigo = rs.getString(“cod_fornecedor”);
nome = rs.getString(“nome_fantasia”);
%>

<% }

} catch (Exception e){
throw new Exception("erro no loop de resultados: " + e);
}

con.fechaConexao();

%>

Cód.
Fornecedores
<%= codigo %> <%= nome %>
[/code]

A minha classe ConexaoBD.class está na pasta WEB-INF/classes! vou postá-lo aqui tb!

[code]
public ConexaoBD ()
{
try
{
String url;
String usuario, senha;

                 usuario = "user";
                 senha = "user";
                 
                 Class.forName("com.mysql.jdbc.Driver");
                 
                 url = "jdbc:mysql://" + IP + ":3306/" + BD;
                 
                 con = DriverManager.getConnection(url, usuario, senha);
  
                 stmt = con.createStatement();
		
         } catch ( Exception e ) {
                 System.out.println ("\nERRO AO TENTAR SE CONECTAR:\n" + e);
         }

 } // fim do construtor

// ******************************************
public ResultSet pesquisa ( String strSql )
{
	rs = null;
	try
	{
		stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
		rs = stmt.executeQuery( strSql );
		
	} catch ( Exception e ) {
        System.out.println("\nErro ao pesquisar!");
		System.out.println(e);
    }

	return rs;
}

// ******************************************
public void executa ( String strSql )
{
	try
	{
		stmt.executeUpdate( strSql );
	} catch ( Exception e ) {
        System.out.println("\nErro ao executar uma instrução!");
		System.out.println(e);
    }
}

// ******************************************
public void fechaConexao()
{
	try
	{
		con.close();
	} catch (Exception e) {
		System.out.println("\nErro ao fechar a Conexao com o BD!");
	}
}

} // fim da classe ConexaoBD[/code]

Alice,

Tome por hábito invocar o close() também para as instâncias de Statement e ResultSet. Questão de performance e clareza de código…

Se este não for o seu problema - e eu creio que não seja - tente fazer o debug da sua aplicação. Eu olhei de relance o código e não encontrei um motivo aparente, mas se a página “fica eternamente carregando”, alguma coisa está barrando a sua renderização, provavelmente o loop que você faz em ‘while ( rs.next() )’.

Por fim, eu não sei se esse código é um teste, trabalho de faculdade, ou se é para uma aplicação real - mas existem métodos melhores de lidar com a comunicação entre banco / camada de modelo / camada visual. Sugiro que leia alguns tutoriais a respeito de padrões de design, como o mvc, vai te ajudar bastante a construir aplicativos melhores com menos esforço :wink:

Rodrigo

[quote]
[color=red]ConexaBD[/color] con;

selectFornecedores = “SELECT cod_fornecedor, nome_fantasia FROM cd_fornecedor ORDER BY cod_fornecedor”;

con = null;
con = new [color=red]ConexaoBD()[/color][/quote]

Veja essa parte do código acima, não tem nada diferente não?

String url;
String usuario, senha;

usuario = "user";
senha = "user";
Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://" + IP + ":3306/" + BD;              
con = DriverManager.getConnection(url, usuario, senha);

E esse trecho acima da tua classe de conexao, também tá tudo ok??
Onde tu tá definindo o IP e o BD??
Tu mudou os campos user e senha pra postar aqui, ou tá usando akeles dados mesmo?

No seu lugar eu retiraria esse código Java do JSP colocaria em uma classe DAO, crie um método que retorne uma lista, veja quantos registros existem nessa tabela o que pode estar causando a lentidão tente paginar.

De uma olhada no site da displaytag, ela faz esse serviço sujo por vc.

http://displaytag.homeip.net/displaytag-examples-1.1/example-paging.jsp

Nela basta vc passar uma lista por request ou sessao, ela monta o resto sozinha!

[quote=Pedrosa]No seu lugar eu retiraria esse código Java do JSP colocaria em uma classe DAO, crie um método que retorne uma lista, veja quantos registros existem nessa tabela o que pode estar causando a lentidão tente paginar.

De uma olhada no site da displaytag, ela faz esse serviço sujo por vc.

http://displaytag.homeip.net/displaytag-examples-1.1/example-paging.jsp

Nela basta vc passar uma lista por request ou sessao, ela monta o resto sozinha![/quote]

Ela tá iniciando em web.
Eu nao tenho nenhum link de uso de DAO pra passar pra ela, se tu tiver aih, posta.
Ia ser melhor mesmo se ela usava MVC… :smiley:

zirocool,

  1. qual seria o erra nessa parte da declaração da variavel do tipo ConexaoBD???
  2. eu mudei esses dados da conexao com o banco para postar aqui sim!!! Mas essa parte está certinha, pq uso a mesma classe para uma aplicação desktop e deu certo!

javaBeats,
estou pesquisando sobre mvc, e seria uma boa ideia usar struts???

Isso é o que mais tem na internet, essa apostila em especial é show, temos que incentivar as pessoas a usarem as boas práticas.

Nossa zirocool! Q lerdeza a minha!!! rsrs…

Gente, valeu pelas dicas! Vou pesquisar sobre tudo isso! Quero fazer da melhor maneira possível! valeu!

Qualquer duvido eu posto mais aqui no fórum! :slight_smile:

Sem dúvida, é pra isso que serve a comunidade :wink:

Quanto à struts, hmm… eu não quero começar uma flame war, mas vc certamente vai encontrar muita gente apontando desvantagens do framework. Framework para desenvolvimento web hoje existe de montão - o que até evidencia a complexidade de Java EE e a necessidade que os desenvolvedores têm de simplicar o processo de desenvolvimento com reutilização de componentes.

Podem querer me crucificar por indicar isso à alguém que está iniciando, mas eu te digo: vai de Java Server Faces. Se puder, use a especificação 1.2, que vem com o Glassfish, por exemplo. As IDEs hoje tem auxílio de produtividade para estas tecnologias, incluindo as gratuitas, como Netbeans e Eclipse.

Comece por exemplos simples… Usando JSTL e depois passando para JSF… Use o Java EE tutorial da Sun e seus exemplos, é um bom começo.

Rodrigo