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