Erro ao inserir dados no banco de dados

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.

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.

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.