Chamar classe java via servlet

Sou um iniciante nato em java, portanto gostaria e muito do apoio de vcs!!!

fiz um JSP para um formulário de inscrição. O form do JSP ficou assim

<form method="POST" name="FICHA DE INSCRIÇÃO" action="ChamaInsercao" >

A chamada ficou Ok e deixei uma msg de teste dentro do metodo post do servlet e exibiu OK.

Acontece que tenho q inserir registro, e para isso tenho uma classe java que conecta no meu banco postgres.

        Conexao conecta = new Conexao();
        conecta.Connection();

Ja tentei de todas as formas chamar a classe java pelo servlet mas sem sucesso algum. Alguem sugere algo para que eu possa fazer diferente ou então me exemplificar.

Desde já agradeço a atenção.

Não entendi por que você não pode achar a classe dentro da servlet, Servlets são como qualquer outra classe java.

Declare a variável, use o new para instanciar, e chame seus métodos. Não esqueça de importar a classe que você quer chamar, e se usar bibliotecas externas, tenha certeza que elas estejam no classpath do teu projeto.

Poste o código da tua servlet se tiver mais dúvidas.

Na verdade pensei em deixar as coisas mais separadas possíveis, mas vc tem razão posso fazer o insert logo no servlet sem problemas.

Peguei meu código e implementei no método post do servlet. e onde eu declaro meu método “protected void doPost” está dando a mensagem:

doPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in com.meu.servlet.ChamaInsercao cannot override doPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in javax.servlet.http.HttpServletRequest; overriden method does not throw java.lang.ClassNotFoundException

/*
 * ChamaInsercao.java
 *
 * Created on 10 de Maio de 2008, 15:04
 */

package com.meu.servlet;

import com.meu.servlet.Conexao;
import java.io.*;
import java.net.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.http.*;


public class ChamaInsercao extends HttpServlet {

    private Connection conn;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, ClassNotFoundException {

      Connection con = null;   
  
      try  
      {   
          Class.forName( "org.postgresql.Driver" );
          con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/nti_desenv","dba","admin");   
 
         try
          {		
                  int n = RepositorioInscricoes.inclui(conn);
                  conn.commit();
                  System.out.println("inscricao " + n + " feita com sucesso.");

          }
          catch (SQLException e)
          {	System.out.println ('\n' + "Erro na inclusão de um empregado.");
                  e.printStackTrace();
                  System.exit(1);
          }
  
      }   
      catch(SQLException e)   
      {   
          e.printStackTrace();
      }   
      finally  
      {   
         try  
         {   
            con.close();   
         }   
         catch(SQLException onConClose)   
         {   
             System.out.println("Houve erro no fechamento da conexão");   
             onConClose.printStackTrace();   
         }   
      }

     }
        
    }

[quote=java_new]Na verdade pensei em deixar as coisas mais separadas possíveis, mas vc tem razão posso fazer o insert logo no servlet sem problemas.

Peguei meu código e implementei no método post do servlet. e onde eu declaro meu método “protected void doPost” está dando a mensagem:

doPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in com.meu.servlet.ChamaInsercao cannot override doPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in javax.servlet.http.HttpServletRequest; overriden method does not throw java.lang.ClassNotFoundException
[/quote]

O ideal é separar as classes, mas primeiro tem que aprender a como separar e usar essas classes.

Quanto ao erro, você não pode atirar a exceção ClassNotFoundException no método doPost, pois o doPost da classe que você está estendendo, a HttpServletRequest, também não atira.

se eu tiro esta exceção dá erro na linha em que registro o driver do banco

Class.forName( "org.postgresql.Driver" );

“unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown”

Use try/catch para tratar essa exceção.

[code] protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

  Connection con = null;   

  try  
  {   
      try{
              
      // Registrando driver
      Class.forName( "org.postgresql.Driver" );
      }
      catch(SQLException onClassforName)
      {
          System.out.println("erro");
      }
      // Estabelecendo conexão posgres na base de desenvolvimento
      con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/nti_desenv","dba","admin");   

[/code]

mesmo tratando com try catch, o netbeans pede para eu informar o exception no throws sublinhando a linha

Class.forName( "org.postgresql.Driver" );

e

catch(SQLException onClassforName)

dê um catch de ClassNotFoundException, não de SQLException

Valeu renrutal funcionou!!!

comecei a estudar java faz 2 semanas e espero continuar a evoluir cada dia na linguagem!!!

abraço