HTTP Status 500

Estou acompanhando um tutorial que elabora uma agenda em java para web. segue abaixo o link de uma das 16 aulas.

http://www.youtube.com/watch?v=5UmMwnYPo9Y&feature=endscreen&NR=1

Fiz tudo conforme o video mandou mas quando executo a minha classe jsp da o seguinte erro abaixo.

Já colocquei o mysqlconnector na pasta lib, e também já adiconei no classpath do eclipse…


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
dao.JDBCContatoDAO.inserir(JDBCContatoDAO.java:24)
action.InserirContato.doPost(InserirContato.java:86)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.32 logs.

Apache Tomcat/7.0.32





<%@page import="model.Contato"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Agenda de Contatos</title>
</head>
<body>

<body bgcolor="#00CED1">
		
<h3>Dados de entrada:</h3>
	<form action="InserirContato" method = "post">
	Nome:<input type="text" name="nome"> <br>
	Telefone: <input type="text" name="telefone"> <br>
	Celular:<input type="text" name="celular"> <br>
	Nascimento:<input type="text" name="nascimento"> <br>
	Endereço:<input type="text" name="endereco"> <br>
	Cidade:<input type="text" name="cidade"> <br>
	Estado:<input type="text" name="estado"> <br>
	
	<input type="submit" value="Salvar">
	</form>
</body>
</html>

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import model.Contato;

public class JDBCContatoDAO implements ContatoDAO {

	Connection conexao;

	public JDBCContatoDAO(Connection conexao) {
		this.conexao = conexao;
	}

	public void inserir(Contato contato) {
		String comando = "insert into Contato (nome, telefone,celular,dataNascimento,endereco, cidade,estado)"
				+ "values(?,?,?,?,?,?,?)";

		PreparedStatement p;
		try {
			p = this.conexao.prepareStatement(comando);
			p.setString(1, contato.getNome());
			p.setString(2, contato.getTelefone());
			p.setString(3, contato.getCelular());
			p.setDate(4, new java.sql.Date(contato.getDataNascimento()
					.getTime()));
			p.setString(5, contato.getEndereco());
			p.setString(6, contato.getCidade());
			p.setString(7, contato.getEstado());
			
			p.execute();

		} catch (SQLException e) {

			e.printStackTrace();
		}

	}

	public List<Contato> listarTodos() {

		return null;
	}

}

package action;

import java.io.IOException;
import java.sql.Connection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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 model.Contato;

import dao.FabricaConexao;
import dao.JDBCContatoDAO;

/**
 * Servlet implementation class InserirContato
 */
@WebServlet("/InserirContato")
public class InserirContato extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public InserirContato() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Servelet gravando função de Contato");

		String nome = request.getParameter("nome");
		String telefone = request.getParameter("telefone");
		String celular = request.getParameter("celular");
		String nascimentost = request.getParameter("nascimento");
		String endereco = request.getParameter("endereco");
		String cidade = request.getParameter("cidade");
		String estado = request.getParameter("estado");

		// formatador de data SimpleDateFormat + parse (string )

		Date date = null;
		try {
			date = new SimpleDateFormat("dd/MM/yyyy").parse(nascimentost);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// objeto contato Contruir.

		Contato novoContato = new Contato();
		novoContato.setCelular(celular);
		novoContato.setCidade(cidade);
		novoContato.setDataNascimento(date);
		novoContato.setEndereco(endereco);
		novoContato.setEstado(estado);
		novoContato.setNome(nome);
		novoContato.setTelefone(telefone);
		

		FabricaConexao fabrica = new FabricaConexao();
		Connection conexao = fabrica.fazConexao();

		JDBCContatoDAO dao = new JDBCContatoDAO(conexao);
		dao.inserir(novoContato);

	}

}

Fico grato se puderem me ajudar…

evandro.toffuli@terra.com.br

Cara. Lê o erro:

java.lang.NullPointerException
dao.JDBCContatoDAO.inserir(JDBCContatoDAO.java:24)

Ou seja, tem algum objeto nulo na linha 24 do seu JDBCContatoDAO. Dá uma olhada no que deve estar acontecendo.

Eu dei uma olhada mas não consigo identificar qual objeto está nulo…

Poderiam me ajudar…

Debuga o código. Não tenho como adivinhar.

Me manda a linha 24 da sua classe JDBCContatoDAO.

Segue o código :

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import model.Contato;

public class JDBCContatoDAO implements ContatoDAO {

	Connection conexao;

	public JDBCContatoDAO(Connection conexao) {
		this.conexao = conexao;
	}

	public void inserir(Contato contato) {
		String comando = "insert into Contato (nome, telefone,celular,dataNascimento,endereco, cidade,estado)"
				+ "values(?,?,?,?,?,?,?)";

		
		try {
			PreparedStatement p = this.conexao.prepareStatement(comando);
			p.setString(1, contato.getNome());
			p.setString(2, contato.getTelefone());
			p.setString(3, contato.getCelular());
			p.setDate(4, new java.sql.Date(contato.getDataNascimento()
					.getTime()));
			p.setString(5, contato.getEndereco());
			p.setString(6, contato.getCidade());
			p.setString(7, contato.getEstado());
			
			p.execute();

		} catch (SQLException e) {

			e.printStackTrace();
		}

	}

	public List&lt;Contato&gt; listarTodos() {

		return null;
	}

}

a linha 24 é : ( PreparedStatement p = this.conexao.prepareStatement(comando):wink:

Quando debugo a classe no eclipse da o erro 404 .Segue abaixo o erro .

HTTP Status 404 -


type Status report

message

description The requested resource is not available.

Cara ao que parece sua conexao esta nula, ou seja, seu objetto “conexao” que é configurado com uma connection no construtor da sua classe esta com valor null. e o erro esta ocorrendo quando vc esta tentando chamar o metodo “prepareStatement” neste objeto nulo. De uma olhada na criacao dessa classe, pois esta sendo passado um valor null ao inves de um objeto de conexao.