Criando funcionalidade para criar contato

4 respostas
T

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;
	}
	

}
CONTATODAO
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?

4 Respostas

T

pessoal, preciso muito q alguem me ajude pq eu to quebrando a cabeça nesse codigo e nao to axando o q possa ta dando erro com o servidor.

brigado

kenneth

Fala brow,

Tenta isso aqui:
http://www.guj.com.br/posts/list/74205.java

Ou isso:
http://www.guj.com.br/posts/list/215564.java

Abraco!

T

pow cara…brigado

isso me ajudou um pouco sim

ja ta rodando perfeitamente!

freitasgts

thursilva você poderia me ajudar em um problema da formatação de datas?
Tipo queria deixa ela com o formato (“dd/MM/yyyy”).
A minha classe ContatoDAO é a mesma que a sua só que no método getLista eu queria formatar a data…

estou tentando algo como

//Montando a data através do Calendar

//Calendar data = Calendar.getInstance();

<a href="//data.setTime">//data.setTime</a>(rs.getDate(“dataNascimento”));

<a href="//contato.setDataNascimento">//contato.setDataNascimento</a>(data);
Calendar data = Calendar.getInstance();

SimpleDateFormat sdf = new SimpleDateFormat(dd/MM/yyyy);

data.setTime(rs.getDate(dataNascimento));
Criado 24 de novembro de 2010
Ultima resposta 3 de dez. de 2010
Respostas 4
Participantes 3