Conexão JSP + SERVLET +BANCO

14 respostas
raphael_nasci

é o seguinte pessoal estou utlizando o TOMCAT onde tenho uma página jsp que faz um request para um servlet.

Este servlet faz uma conexão com o banco e me retorna uma String como resultado a uma consulta ao banco HSQLDB.

Fiz uma Java Aplication só para ver se está funcionando corretamente a conexão com o banco e está funcionando, mas quanto tento usar este servlet chamado pelo JSP, não está retornando os registros.

Alguém poderia me ajudar ?

Eis meu código JSP

<html>
<head>
     <title>Teste de servlet</title>
</head>

<body>
     <p>Digite um texto e clique no botão para enviar ao servlet</p>
     &lt;form name="form1" method="post" action="http://localhost:8080/apteste/servlet/serv1"&gt;
          &lt;input name="texto" type="text"&gt;
          &lt;input type="submit" name="Submit" value="Enviar"&gt;
     &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Eis o meu código Servelt

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

public class serv1 extends HttpServlet {
private Connection conn;
private Statement stm;
private ResultSet rs;
private String sql;

public void doPost(HttpServletRequest request, HttpServletResponse response)
                                    throws IOException
      {
            //criado a saída
            PrintWriter out = response.getWriter();
            //pegando o texto digitado pelo usuário
            String vTexto = request.getParameter("texto");
            //escrevendo o texto digitado na saída
            out.println("Você digitou: " + vTexto);
            String s=conecta();		
	    out.println("Você digitou: " +s);
            //fechando a saída
            out.close();
      }

	public String conecta()
	{
          String s="";
   	  
	  try{	  	  	
	   Class.forName("org.hsqldb.jdbcDriver"); 
	   conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/empresa", "sa", "");
	   stm = conn.createStatement();
	   
	   sql="SELECT * FROM FRASE";
	    rs=stm.executeQuery(sql);
 	   
	   while(rs.next())
	   {	   	 
   		 s+=rs.getString(2) + "  ";	   	 
	   	 
	   }
	   
	  }
	  catch (Exception e) {
		s+="erro ";
	 }
	  return s;
        }
}

Este servlet só me traz a mensagem de erro.

Está configurado o driver de conexão no classpath.

Será que tem q configurar o drive em alguma configuração do TOMCAT ?

Valeu moçada.

14 Respostas

jgbt

qual o erro que ta dando??
vc colocou o driver de conexão no classpath???

[]'s

B

Para vc conseguir pegar o resultado na sua página jsp, vc deve setar os atributos no request…

Após o out.close(), coloque request.setAttribute(“qualquer nome”, objeto(no seu caso a String s))

Na página jsp que vai ser chamada, dá um request.getAttribute(“qualquer nome”) e utilize o atributo, atribuindo - o a uma String…

:wink:

raphael_nasci

O que está acontecendo é que está caindo no exception do meu try. Ou seja ele retorna as strings mas não consegue pegar nada do banco.

Está setado o hsqldb.jar no classpath já.

Mas não tem que configura tipo assim no server.xml alguma coisa ?
Ou em algum outro lugar ?

jgbt

ta blz, mas qual a exception???
posta o stack do erro!!!
senão fica dificil…

[]'s

raphael_nasci

Como eu faço para jogar o printStackTrace para a saída no Servlet ?

jgbt

é so printar o valor da variavel e.getMessage() ou e.printStackTrace, como vc faz com a variavel s…

e no console do tomcat tmb deve estar imprimindo o erro…

[]'s

raphael_nasci

da dando o seguinte erro.

java.lang.ClassNotFoundException: org.hsqld.jdbcDriver.

jgbt

é problema de classpath, o driver não ta sendo achado.
dentro da sua aplicação, crie uma pasta lib dentro de WEB-INF e coloque o jar nela. é o primeiro lugar que o tomcat procura.
da uma tentada ae…

[]'s

raphael_nasci

Cara não rolou, continua caindo na exceção.

Joguei o hsqldb.jar no WEB-INF da minha aplicação e não deu certo

Meu classpath do sistema está assim

C:\jboss\jboss-4.0.0RC1\server\default\lib\javax.servlet.jar;c:\Arquivos de programas\Java\jdk1.5.0_01\lib\tools.jar;c:\tomcat\jakarta-tomcat-5.5.7\common\lib\servlet-api.jar;C:\jboss\jboss-4.0.0RC1\server\default\lib\hsqldb.jar

Valeu pela força.

maikonaraujo

Imprime a stack trace no console da aplicação,
posta tbm sua estrutura de diretórios, o seu web.xml, e a msg de erro que assim fica mais fácil

jgbt

vc tem que colocar numa pasta lib dentro de WEB-INF.
o jboss não usa o classpath do siatema operacinal.
abre o jar e ve se essa classe ta la dentro.
a principio é isso, não tem misterio.

[]'s

raphael_nasci

Valeu moçada funcionou, fiz meu primeiro servlet com JSP acessando banco.

Valeu moçada eu só manjo de Java puro mesmo, agora estou migrando para o J2EE, mas ainda sou novatão na área.

Valeu este fórum é show.

Outra pergunta para cada aplicação que eu fizer eu vou ter q copiar o jar na pasta lib do WEB-INF ?

Não teria outra forma ?

maikonaraujo

Coloca o hsqldb.jar na pasta libs da sua aplicação se naum existir cria uma

jgbt

raphael_nasci:
Outra pergunta para cada aplicação que eu fizer eu vou ter q copiar o jar na pasta lib do WEB-INF ?

Não teria outra forma ?

tem uma pasta lib dentro do jboss, não lembro certo agora o caminho.
se vc colocar nessa pasta fica visivel a todas as aplicações.
da uma olhada na documentação no site do jboss.

[]'s

Criado 11 de fevereiro de 2005
Ultima resposta 11 de fev. de 2005
Respostas 14
Participantes 4