JSP e conexao com BD

14 respostas
Jorgev

Pessoal será que alguém poderia me explicar como é que eu faço a conexao com o banco de dados e uso a partir do jsp. eu ja tentei de todas as formas que eu conheço e uso no java normal e não da certo.

aqui estao os codigo que eu fiz, eles funcionam direito num projeto java normal, mas nao conecta quando uso pelo jsp:

/** Cria a conexção com o banco de dados*/
package webcontabil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ClasseConexao 
{
	public Connection con = null;
	static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
	static final String DATABASE_URL = "jdbc:mysql://localhost/webcontabil";
	static final String USUARIO = "root";
	static final String SENHA = "27410";
	PreparedStatement st;
	public ClasseConexao()
	{
		try
		{
			Class.forName( JDBC_DRIVER );
			con = DriverManager.getConnection( DATABASE_URL, USUARIO, SENHA );
		}
		catch( ClassNotFoundException e )
		{
			System.out.println("JDBC DRIVER NAO ENCONTRADO NO CLASS PATH" );
			System.out.println( e.getMessage() );
		}
		catch( SQLException e )
		{
			System.out.println( "NÃO CONECTADO COM O BANCO" );
		}
	}

}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="teste" class="webcontabil.TesteB"/>

<%= teste.insereB() %>

</body>
</html>

Se alguém puder ajudar eu agradeço.
Agraço.

14 Respostas

L

cade a classe TesteB lea tem um contrutor dummy?
posta o erro ai pra gente dar uma olhada

Jorgev

Amigo eu peguei esse exemplo numa apostila. Eu nao sei o que é esse construtor dummy.

Eu coloquei uma String pra retornar se deu certo ou nao e ela pega o classnotfound. Acho que da erro nessa parte.

Se vc souber como faz pra conectar me passa ai amigo.

abraço.

L

o bean que vc ta chamando tem um construtor dummy?
construtor dummy = public Clientes(){} e´um contrutor sem argumentos
posta o codigo td ai pra gente ver ai + pessoas vao te ajudar
falow t+

Jorgev

Olha esse codigo que eu postei foi um teste que eu fiz a parte so pra ver se conectava. O que eu tou fazendo é outro, eu vou postar aqui:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<%@include file='cabecalho.jsp' %>
</head>
<body>

<jsp:useBean id="testebanco" class="webcontabil.TesteB"/>
 
<% testebanco.setNome( "Jorge" );
testebanco.setCpf( "524124121" );
testebanco.setSexo( "m" );
testebanco.setPai( "Joao" );
testebanco.setMae( "Maria" );
testebanco.insere();
%>

</body>
</html>code]

[code]import java.sql.*;

public class TesteB 
{
	private String nome;
	private String cpf;
	private String sexo;
	private String pai;
	private String mae;
	PreparedStatement st;
	Connection conn = null;
	static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
	static final String DATABASE_URL = "jdbc:mysql://localhost/webcontabil";
	static final String USUARIO = "root";
	static final String SENHA = "27410";
	
	public TesteB()
	{
		try
		{
			Class.forName( JDBC_DRIVER );
			conn = DriverManager.getConnection( DATABASE_URL, USUARIO, SENHA );
		}
		catch(SQLException e )
		{
			e.printStackTrace();
		}
		catch( ClassNotFoundException e )
		{
			System.out.println("JDBC DRIVER NAO ENCONTRADO NO CLASS PATH" );
			System.out.println( e.getMessage() );
		}
	}

	public void insere()
	{
		try
		{
			st = conn.prepareStatement("insert into teste(nome, cpf, sexo, pai, mae)" +
					" values(?,?,?,?,?)");
			
			st.setString(1, getNome() );
			st.setString(2, getCpf() );
			st.setString(3, getSexo() );
			st.setString(4, getPai() );
			st.setString(5, getMae() );
			
			st.executeUpdate();
			
			st.close();
			
			
		}
		catch(SQLException e )
		{
			e.printStackTrace();
		}
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	public String getPai() {
		return pai;
	}

	public void setPai(String pai) {
		this.pai = pai;
	}

	public String getMae() {
		return mae;
	}

	public void setMae(String mae) {
		this.mae = mae;
	}
	
}

e isso é o que aparece no browser:

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /confirm_pf.jsp at line 16

13: testebanco.setSexo( "m" );
14: testebanco.setPai( "Joao" );
15: testebanco.setMae( "Maria" );
16: testebanco.insere();
17: %>
18: 
19: </body>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

java.lang.NullPointerException
	webcontabil.TesteB.insere(TesteB.java:41)
	org.apache.jsp.confirm_005fpf_jsp._jspService(confirm_005fpf_jsp.java:84)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
Jorgev

Mais uma pergunta, onde é que eu coloco o conector do mysql? porque eu sempre coloco no proprio projeto e da certo, mas quando eu tou fazendo um projeto sem jsp.

Abraço.

L

Vc vai ter que deixar o construtor da classe teste tipo assim public TesteB(){} e criar um metodo ou uma classe conexao separada fora do contrutor por que o bean necessita de um contrutor dummy
ai no bean vc chama primeiro o metodo setConexao() e depois seta os valores tenta ai eu ja fiz algo assim antes

Jorgev

lgweb:
Vc vai ter que deixar o construtor da classe teste tipo assim public TesteB(){} e criar um metodo ou uma classe conexao separada fora do contrutor por que o bean necessita de um contrutor dummy
ai no bean vc chama primeiro o metodo setConexao() e depois seta os valores tenta ai eu ja fiz algo assim antes

Perdoe amigo, mas eu nao entendi direito. eu vou deixar o construtor sem conteudo e criar um metodo setConexao() que vai fazer a conexao?
é isso?
e onde é que eu chamo esse metodo?

Jair_Rillo_Junior

Jorgev:
Mais uma pergunta, onde é que eu coloco o conector do mysql? porque eu sempre coloco no proprio projeto e da certo, mas quando eu tou fazendo um projeto sem jsp.

Abraço.

Poe dentro do diretorio WEB-INF/lib do seu projeto.

Outra coisa, é muito feio misturar a camada de interface, com regras de negocio, com banco de dados e etc :twisted:

Jorgev

ManchesteR:
Jorgev:
Mais uma pergunta, onde é que eu coloco o conector do mysql? porque eu sempre coloco no proprio projeto e da certo, mas quando eu tou fazendo um projeto sem jsp.

Abraço.

Poe dentro do diretorio WEB-INF/lib do seu projeto.

Outra coisa, é muito feio misturar a camada de interface, com regras de negocio, com banco de dados e etc :twisted:

Eu fiz assim, coloquei ele no WEB-INF/lib e depois fui la em propriedades e adicionar .jars, ai ele foi pra Referenced libraries.

É assim?

e quanto ao codigo, eu preciso conseguir conectar com o banco, depois eu dou um jeito de limpar o codigo. Mas no momento eu preciso conectar com o banco de qualquer jeito.

Abraço.

L

Amigo da uma olhada aqui nesta apostila da caelum ela vai te ajudar bastante ,
acho que vc esta precisando.

Jorgev

Olha eu fiz mais um teste com o jsp puro pra ver se dava certo:

<%@ page contentType="text/html" language="java" import="java.sql.*"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>

<body>
<%   
   Connection con;   
   Statement stm;   
      
   try {   
  
      Class.forName("com.mysql.jdbc.Driver");   
      con = DriverManager.getConnection("jdbc:mysql://localhost/webcontabil", "root", "27410");   
      stm = con.createStatement();    
      out.println("Conexão efetuada com sucesso");   
            
   } catch (Exception e) {   
      out.println("Não foi possível conectar ao banco " + e.getMessage());   
   }   
%>   

</body>
</html>

e aparece isso no browser:

Não foi possível conectar ao banco com.mysql.jdbc.Driver
L

o seu banco nao escuta em nenhuma porta ? pois o meu necessita da porta para conexao?

Jorgev

lgweb:

DriverManager.getConnection(“jdbc:mysql://localhost/webcontabil”, “root”, “27410”);


o seu banco nao escuta em nenhuma porta ? pois o meu necessita da porta para conexao?

a porta do banco é: 3306.

Mas nos outros projetos funciona sem ela, será que no jsp tem que ter?
e eu coloco ela em que parte?

Jorgev

Galera eu consegui resolver o problema, era só colocar o mysqlConector na pasta lib do tomcat.

obrigado a todos.

Criado 30 de outubro de 2007
Ultima resposta 31 de out. de 2007
Respostas 14
Participantes 3