Erro no servlet

eu estou aprendendo servlet e tenho um problema.
se eu rodar a classe via terminal eu consigo fazer um insert corretamente, porem quando jogo para uma pagina html ele n roda.

Minha classe para adicionar o contato.
package br.com.razios.biblioteca.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;

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.razios.DAO.funcoesDAO;
import br.com.razios.contato.*;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import br.com.razios.contato.Contato;

@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// busca o writer
PrintWriter out = response.getWriter();

	// buscando os parâmetros no request
	String setor = request.getParameter("setor");
	String ramal = request.getParameter("ramal");
	String telefone = request.getParameter("telefone");
	String celular = request.getParameter("celular");

	// monta um objeto contato
	Contato a = new Contato(setor,ramal,telefone,celular);

	// salva o contato
	funcoesDAO salvar = new funcoesDAO();
	salvar.incluirAgenda(a);

	// imprime o nome do contato que foi adicionado
	out.println("<html>");
	out.println("<body>");
	out.println("Contato " + a.getSetor() + " adicionado com sucesso");
	out.println("</body>");
	out.println("</html>");
}

}

Minha classe DAO

package br.com.razios.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import br.com.razios.conexao.Conexao;
import br.com.razios.contato.Contato;

public class funcoesDAO {

public void incluirAgenda(Contato c){        
    Connection connection = Conexao.getConnection();
  
    try{
        PreparedStatement pstmt = connection.prepareStatement("INSERT INTO Agenda (setor,ramal,telefone,celular) VALUES (?,?,?,?)");
        
        pstmt.setString(1, c.getSetor());
        pstmt.setString(2, c.getRamal());
        pstmt.setString(3, c.getTelefone());
        pstmt.setString(4, c.getCelular());
        pstmt.executeUpdate();
                        
        pstmt.close();
        connection.close();
        
    } catch (Exception e){
        System.out.println("Inclui Agenda: " + new java.util.Date() + " " + e);
    }
   
}

}

Minha pagina html

Página Inicial

Agenda de Ramais

Setor:
Ramal:
Telefone:
Celular:

porem a mesma retorna a mensagem:
SQLException (Wed Oct 11 16:48:45 BRT 2017): java.sql.SQLException: No suitable driver found for jdbc:firebirdsql:localhost/3050:C:/Banco/Agenda.FDBInclui Agenda: Wed Oct 11 16:48:45 BRT 2017 java.lang.NullPointerException

Faltou o fonte da classe Conexao.
A mensagem de erro diz que não encontrou o driver JDBC do seu banco.

1 curtida

a classe de conexao e esta porem funciona com a mesma classe se fizer via terminal executa na boa.

package br.com.razios.conexao;

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

public class Conexao {
private static Connection db;

public static Connection getConnection(){
try {
String ServerName = “localhost”;
String Porta = “3050”;
String database = “C:/Banco/Agenda.FDB”;
String usuario = “SYSDBA”;
String senha = “masterkey”;
String url = “jdbc:firebirdsql:” + ServerName + “/” + Porta + “:” + database;
db = DriverManager.getConnection(url, usuario, senha);;
} catch (SQLException e ) {
System.out.print(“SQLException (” + new java.util.Date() + "): " + e);
}
return db;
}
}

Antes do
DriverManager.getConnection

deveria haver uma chamada ao
Class.forName("classe do driver JDBC de seu banco de dados").newInstance();

quando eu mando instanciar essa classe ele da um monte de erro, pois tenho q adicionar.

package br.com.razios.conexao;

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

public class Conexao {
private static Connection db;

public static Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
try {
String ServerName = “localhost”;
String Porta = “3050”;
String database = “C:/Banco/Agenda.FDB”;
String usuario = “SYSDBA”;
String senha = “masterkey”;
String url = “jdbc:firebirdsql:” + ServerName + “/” + Porta + “:” + database;
Class.forName(“org.firebirdsql.jdbc.FBDriver”).newInstance();
db = DriverManager.getConnection(url, usuario, senha);;
} catch (SQLException e ) {
System.out.print(“SQLException (” + new java.util.Date() + "): " + e);
}
return db;
}
}

classe para adicionar

package br.com.razios.biblioteca.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;

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.razios.DAO.funcoesDAO;
import br.com.razios.contato.*;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import br.com.razios.contato.Contato;

@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// busca o writer
PrintWriter out = response.getWriter();

	// buscando os parâmetros no request
	String setor = request.getParameter("setor");
	String ramal = request.getParameter("ramal");
	String telefone = request.getParameter("telefone");
	String celular = request.getParameter("celular");

	// monta um objeto contato
	Contato a = new Contato(setor,ramal,telefone,celular);

	// salva o contato
	funcoesDAO salvar = new funcoesDAO();
	try {
		salvar.incluirAgenda(a);
	} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	// imprime o nome do contato que foi adicionado
	out.println("<html>");
	out.println("<body>");
	out.println("Contato " + a.getSetor() + " adicionado com sucesso");
	out.println("</body>");
	out.println("</html>");
}

}

classe DAO.

package br.com.razios.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;

import javax.swing.JOptionPane;

import br.com.razios.conexao.Conexao;
import br.com.razios.contato.Contato;

public class funcoesDAO {

public void incluirAgenda(Contato c) throws InstantiationException, IllegalAccessException, ClassNotFoundException{        
    Connection connection = Conexao.getConnection();
    
    try{
        PreparedStatement pstmt = connection.prepareStatement("INSERT INTO Agenda (setor,ramal,telefone,celular) VALUES (?,?,?,?)");
        
        pstmt.setString(1, c.getSetor());
        pstmt.setString(2, c.getRamal());
        pstmt.setString(3, c.getTelefone());
        pstmt.setString(4, c.getCelular());
        pstmt.executeUpdate();
                        
        pstmt.close();
        connection.close();
        
    } catch (Exception e){
        System.out.println("Inclui Agenda: " + new java.util.Date() + " " + e);
    }
   
}

}

E o erro q fica
INFORMAÇÕES: Server startup in 2441 ms
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at br.com.razios.conexao.Conexao.getConnection(Conexao.java:19)
at br.com.razios.DAO.funcoesDAO.incluirAgenda(funcoesDAO.java:14)
at br.com.razios.biblioteca.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Você tem que pôr o JAR do driver JDBC do Firebird no classpath de sua aplicação.

Pior q elw ta la, utilizo o jaybird3.2 :thinking:

Fala @raiduarte!

Apesar de estar lá, continua aparecendo o erro como se não estivesse.

  • Visitei o site do Firedird Firebird Class 4 JCA-JDBC Driver Downloads e reparei que existem versões distintas para o JDK 1.7 e 1.8. Já verificou se está usado o adequado para a sua instalação?

  • Outra boa verificação é ver se você está usando o jaybird-3.0.2.jar e não o jaybird-full-3.0.2.jar conforme mencionado na documentação.

Documentação:

Jaybird 3.0.2 Release Notes
2.1.2 Download

You can download the latest versions from https://www.firebirdsql.org/en/jdbc-driver/

If you deploy your application to a Java EE application server, then you must use jaybird-3.0.2.jar (not -full!), and not include connector-api-1.5.jar as this dependency will be provided by your application server.

Obs.: Trecho extraído do arquivo release_notes.html que vem dentro do arquivo .zip do driver de conexão do Firebird

  • Se estiver usando o Eclipse, veja se o .jar do driver está aparecendo na aba Libraries no item Java Build Path. Caso não esteja, selecione add jar e aponte para o arquivo.

Avise aqui caso tenha alguma novidade.

Abraço!

estou usando o jaybird-full-3.0.2.jar
A principio mesmo ele dizendo que nao o acha, está lá.
segue aqui link do download do meu projeto com o ,jar do jaybird
https://mega.nz/#!vEcT2YTK!HNRBdH6G9oroOBDUDuK-O_mDWwKJrHEz9NfpQ5EfFGA

Aqui não deu o erro java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver.
O erro que deu foi porque eu não tenho o Firebird instalado.

Erros que aparecem ao importar o seu projeto:

Description Resource Path Location Type

1 - Project ‘Agenda’ is missing required library: ‘K:\JAVA\eclipse\firebird\jaybird-full-3.0.2.jar’ Agenda Build path Build Path Problem

2 - Project ‘Agenda’ is missing required library: ‘K:\JAVA\Java Complementos\mysql-connector-java-5.1.23-bin.jar’ Agenda Build path Build Path Problem

Os erros 1 e 2 são os .jar que estão faltando. Copiei o jaybird-full-3.0.2.jar para a pasta lib dentro de WEB-INF, cliquei com o botão direito do mouse e Build Path > add to Build Path (ignorei o mysql-connector-java-5.1.23-bin.jar).

3 - The project cannot be built until build path errors are resolved Agenda Unknown Java Problem

O 3 está relacionado aos erros 1 e 2, que após solucionados também eliminará o 3.

4 - Unbound classpath container: ‘JRE System Library [jre1.8.0_144]’ in project ‘Agenda’ Agenda Build path Build Path Problem

O 4 é devido a minha versão do jdk ser diferente da que está no seu projeto.

De acordo com o seu arquivo, o .jar está dentro da sua pasta workspace e não no Build Path da sua aplicação.

Acredito que se você seguir os passos da resposta dos itens 1 e 2, você deixará de receber o erro java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver.

Veja o projeto que testei aqui em: https://www.dropbox.com/s/02obu4jjl5p7e7x/Agenda.war?dl=0

Obrigado a todos que me deram opniõese tentaram ajudar, Juliano Canuto era isso mesmo, eu clicava em build path e simplismente clicava em add external .jar o que ocasionava em o mesmo colocar a jar dentro de referenced library fiz o procedimento de arrastar o jar ate a o local web-content>web-inf>lib e mandei rodar, funcionou perfeitamente, ja tinha perdido a conta de quantas vezes havia mudado o codigo e nada resolvia e o danado so tava no local errado kkkkkkkk
adm pode dar o tópico como resolvido.