davd
Janeiro 7, 2015, 3:45pm
#1
ola pessoal, sou novo aqui no forum peço desculpas se ja existe algum topico relacionado a esse assunto.
estou com um problema para inserir dados no banco de dados atraves de requisição, fiz todo codigo do DAO, da Conexao, toda servlet direitinho o html mais na hora de gravar no banco de dados da sempre o mesmo erro no navegador.
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
br.com.JavaWeb.jdbc.ContatoDAO.cadastro(ContatoDAO.java:18)
br.com.JavaWeb.servlet.adicionaContato.service(adicionaContato.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.55 logs.
espero que alguem possa mim ajudar, obrigado.
Posta seu Codigo pra entender, esse erro está dando por que alguma variavel não está setada na hora de salvar.
davd
Janeiro 7, 2015, 9:42pm
#3
codigo da Servlet:
import java.io.IOException;
import java.io.PrintWriter;
import javax.jws.WebService;
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.JavaWeb.entidade.Contato;
import br.com.JavaWeb.jdbc.ContatoDAO;
public class adicionaContato extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
ContatoDAO contatoDAO = new ContatoDAO();
contatoDAO.cadastro(contato);
out.println("<html>");
out.println("<body>");
out.println("Contato " + contato.getNome() + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}
Codigo do DAO:
package br.com.JavaWeb.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.JavaWeb.entidade.Contato;
public class ContatoDAO {
private Connection con = new Conexao().getConnection();
public void cadastro(Contato contato){
String sql = "insert into contato (nome, endereco, email) values (?,?,?)";
try {
PreparedStatement preparador = con.prepareStatement(sql);
preparador.setString(1, contato.getNome());
preparador.setString(2, contato.getEndereco());
preparador.setString(3, contato.getEndereco());
preparador.execute();
preparador.close();
System.out.println("Contato cadastrado com sucesso");
} catch (SQLException e) {
System.out.println("Erro ao cadastrar contato" + e.getMessage());
e.printStackTrace();
}
}
}
Provavelmente a linha new Conexao().getConnection(); está retornando null.
Sempre que for postar código, use as tags code, assim ele fica formatado igual o exemplo que eu coloquei acima.
davd
Fevereiro 17, 2015, 11:14pm
#5
continua dando o mesmo erro aqui, vou postar todo o codigo agora. passei um tempo sem net e retornei agora.
codigo da conexao com o banco
package br.com.JavaEE.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conexao {
public Connection getConnection(){
try {
return DriverManager.getConnection("jdbc:postgresql://localhost:5432/agenda", "postgres", "1993");
} catch (SQLException e) {
throw new RuntimeException(e.getMessage());
}
}
}
Codigo do Dao
package br.com.JavaEE.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.JavaEE.entidades.Contato;
public class ContatoDao {
Connection con = new Conexao().getConnection();
public void adiciona(Contato contato) throws SQLException{
String sql = "INSERT INTO CONTATO(nome, email, endereco) values(?,?,?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.execute();
stmt.close();
}
Codigo da servlet
package br.com.JavaEE.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
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.JavaEE.entidades.Contato;
import br.com.JavaEE.jdbc.ContatoDao;
@WebServlet("/addcontato")
public class ServletContato extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter saida = response.getWriter();
String nome = request.getParameter("nome");
String email = request.getParameter("email");
String endereco = request.getParameter("endereco");
Contato contato = new Contato();
contato.setNome(nome);
contato.setEmail(email);
contato.setEndereco(endereco);
ContatoDao contDao = new ContatoDao();
try {
contDao.adiciona(contato);
} catch (SQLException e) {
e.printStackTrace();
}
saida.println("nome: " + nome + "email: " + email + "endereco" + endereco);
}
}
Cogido do html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insere Contato</title>
</head>
<body>
<form action="addcontato">
nome: <input type="text" name="nome" /><br />
emaill: <input type="text" name="email" /><br />
endereco: <input type="text" name="endereco" /><br />
<input type="submit" value="Gravar" />
</form>
</body>
</html>
desculpas ai pela demora nas postagens, mas tava sem net, so agora consegui retornar.