tenho a seguinte pagina html:
<html>
<body>
<form action = "adicionaContato">
Nome: <input type = "text" name = "nome" /><br />
Email: <input type = "text" name = "email" /><br />
Endereço: <input type = "text" name = "endereco" /><br />
Data Nascimento: <input type = "text" name = "dataNascimento" /><br />
<input type = "submit" value = "Gravar" />
</form>
</body>
</html>
e a seguinte servlet criada para gravar os contatos no bd:
package br.com.caelum.agenda.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AdicionaContatoServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
//busca o writer
PrintWriter out = response.getWriter();
//buscando os parâmetros no request
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
String dataEmTexto = request.getParameter("dataNascimento");
Calendar dataNascimento = null;
//fazendo a conversão da data
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
} catch (ParseException e) {
out.println("Erro de conversão da data");
return; //para a execução do método
}
//monta um objeto contato
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
contato.setDataNascimento(dataNascimento);
//salva o contato
ContatoDAO dao = new ContatoDAO();
dao.adiciona(contato);
//imprime o nome de contato que foi adicionado
out.println("<html>");
out.println("<body>");
out.println("Contato " + contato.getNome() + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}
tenho as classes:
CONNECTIONFACTORY
package br.com.caelum.agenda.servlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection() {
System.out.println ("Conectando ao banco");
try {
return DriverManager.getConnection("jdbc:mysql://127.0.0.1/fj21", "root", "1234");
} catch (SQLException e) {
throw new RuntimeException (e);
}
}
}
CONTATO
package br.com.caelum.agenda.servlet;
import java.util.Calendar;
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
private Calendar dataNascimento;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
public Calendar getDataNascimento() {
return dataNascimento;
}
}
package br.com.caelum.agenda.servlet;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.caelum.agenda.servlet.ConnectionFactory;
import br.com.caelum.agenda.servlet.Contato;
public class ContatoDAO {
//a conexão com o banco de dados
private Connection connection;
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona (Contato contato) {
String sql = "insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)";
try {
//prepared statement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
//seta os valores
stmt.setString(1,contato.getNome());
stmt.setString(2,contato.getEmail());
stmt.setString(3,contato.getEndereco());
stmt.setDate(4, new Date( contato.getDataNascimento().getTimeInMillis()));
//executa
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public List<Contato> getLista() {
try {
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = this.connection.prepareStatement("select * from contatos");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
//criando o objeto Contato
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
//montando a data através do Calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
//adicionando o objeto à lista
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
E TENHO A SEGUINTE WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>fj21-agenda</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>AdicionaContato</servlet-name>
<servlet-class>br.com.caelum.agenda.servlet.AdicionaContatoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdicionaContato</servlet-name>
<url-pattern>/adicionaContato</url-pattern>
</servlet-mapping>
</web-app>
Eu soh nao entendo o que pode ta dando errado. Porque quando eu boto o servidor pra rodar aparece essa msg pra mim:
[url]
http://localhost:8080/fj21-agenda/adicionaContato?nome=BIANCA+FRANCISCO+F%C9LIX+DA+SILVA&email=gabi_1283%40hotmail.com&endereco=RUA+DR.+SOBRAL+PINTO+-+6+FUNDOS&dataNascimento=21%2F05%2F1965[/url]
HTTP STATUS 500
alguem pode me ajudar?