Apostila Caelum FJ-21: Erro HTTP 500 Conversão de data

4 respostas
alexandre.marques

Alguém pode me ajudar com esse código? Sou iniciante em Java, e estou aprendendo Java para Web. Estou usando a apostila FJ-21 da Caelum, que na minha opinião é ótima. Fiz algumas alterações no código pois estou implementando uma mini loja, estou com problemas para converter a data, e algumas outras coisas que não estou entendendo. Ex: Não sei se minha conexão está estabelecendo corretamente, gostaria de saber também, como eu devo mapear tudo isso no web.xml.

Se alguém que ja passou por isso puder me ajuda eu ficarei muito grato! :wink:

Abraço!

[b]Estou usando Eclipse Indigo, MySQL 5.5 e o connector mysql-connector-java-5.1.15 e Apache Toncat 7

Mensagem de erro:

HTTP Status 500 - :?: :?: :?:

Tipo de relatório de exceção

mensagem

Descrição O servidor encontrou um erro interno () que o impediu de cumprir este pedido.

exceção

java.lang.NullPointerException
java.text.SimpleDateFormat.parse (SimpleDateFormat.java: 1235)
java.text.DateFormat.parse (DateFormat.java: 335)
Controle.AdicionaCliente.service (AdicionaCliente.java: 47)
javax.servlet.http.HttpServlet.service (HttpServlet.java: 722)
Nota O rastreamento de pilha completa da causa raiz está disponível no Tomcat/7.0.19 Apache logs.

Apache Tomcat/7.0.19

Código com erro Servlet:[/b]

package Controle;     
     
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.annotation.WebServlet;     
import javax.servlet.http.HttpServlet;     
import javax.servlet.http.HttpServletRequest;     
import javax.servlet.http.HttpServletResponse;     
import Modelo.Clientes;     
     
@WebServlet("/AdicionaCliente")     
public class AdicionaCliente extends HttpServlet {     
     
    private static final long serialVersionUID = 1L;     
     
    protected void service(HttpServletRequest request, HttpServletResponse response)     
            throws ServletException, IOException {     
             
        //Busca o whiter     
             
        PrintWriter out = response.getWriter();     
             
        //Buscando os parametros no request     
             
        String nome = request.getParameter("nome");     
        String email = request.getParameter("email");     
        String endereco = request.getParameter("endereco");     
        String cep = request.getParameter("cep");     
        String bairro = request.getParameter("bairro");     
        String cidade = request.getParameter("cidade");     
        String estado = request.getParameter("estado");     
        String pais = request.getParameter("pais");     
        String complemento = request.getParameter("complemento");     
        String telefone = request.getParameter("telefone");     
        String dataTexto = request.getParameter("data_cadastro");     
        String senha = request.getParameter("senha");     
        Calendar data_cadastro = null;     
             
        //Fazendo a conversão da data.     
             
        try {       
            Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataTexto);       
            data_cadastro = Calendar.getInstance();       
            data_cadastro.setTime(date);         
        } catch (ParseException e) {       
            out.println("Erro na conversão da Data!");       
            return; // Para a execução do Metodo       
        }     
             
             
        //Monta um objeto clientes.     
        Clientes clientes = new Clientes();     
             
        clientes.setNome(nome);     
        clientes.setEmail(email);     
        clientes.setEndereco(endereco);     
        clientes.setCep(cep);     
        clientes.setBairro(bairro);     
        clientes.setCidade(cidade);     
        clientes.setEstado(estado);     
        clientes.setPais(pais);     
        clientes.setComplemento(complemento);     
        clientes.setTelefone(telefone);     
        clientes.setData_cadastro(data_cadastro);     
        clientes.setSenha(senha);     
             
        Cliente_DAO dao = new Cliente_DAO();     
             
        dao.adiciona(clientes);     
     
        //Imprime na tela.     
             
         out.println("<html>");     
         out.println("<body>");     
         out.println("Cliente " + clientes.getNome() + " Adicionado com sucesso!");     
         out.println("</body>");     
         out.println("</html>");     
             
    }     
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response)     
            throws ServletException, IOException {     
         
    }     
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response)     
            throws ServletException, IOException {     
         
    }     
     
}

Classe Cliente DAO:

package Controle;     

import java.sql.Connection;     
import java.sql.Date;     
import java.sql.SQLException;     
import Modelo.Clientes;     
     
public class Cliente_DAO {     
     
    private Connection connection;     
         
    public Cliente_DAO(){     
        this.connection = new Fabrica_Conexao().getConnection();     
    }     
         
    public void adiciona(Clientes clientes){     
             
        String sql = "insert into clientes(nome, email, endereco, cep, " +     
   "bairro, cidade, estado, pais, complento, telefone, data_cadastro, senha) values (?,?,?,?,?,?,?,?,?,?,?,?)";     
        try{     
                 
            java.sql.PreparedStatement stmt = connection.prepareStatement(sql);     
                 
            stmt.setString(1,clientes.getNome());     
            stmt.setString(2,clientes.getEmail());     
            stmt.setString(3, clientes.getEndereco());     
            stmt.setString(4,clientes.getCep());     
            stmt.setString(5, clientes.getBairro());     
            stmt.setString(6, clientes.getCidade());     
            stmt.setString(7, clientes.getEstado());     
            stmt.setString(8, clientes.getPais());     
            stmt.setString(9, clientes.getComplemento());     
            stmt.setString(10, clientes.getTelefone());     
            stmt.setDate(11, new Date(clientes.getData_cadastro().getTimeInMillis()));     
            stmt.setString(12, clientes.getSenha());     
                             
            stmt.execute();     
            stmt.close();     
                 
        }catch(SQLException e){     
            throw new RuntimeException(e);     
        }     
             
    }     
     
}

Classe que fabrica as conexões:

package Controle;     

import java.sql.DriverManager;     
import java.sql.SQLException;     
import java.sql.Connection;     
     
public class Fabrica_Conexao {     
         
    public Connection getConnection(){     
        System.out.println("Conectando ao Banco");     
        try{     
            return DriverManager.getConnection("jdbc:mysql://localhost/loja_virtual","root","");     
        }catch(SQLException e){     
            throw new RuntimeException(e);     
        }     
    }     
     
}

Classe JavaBeans Cliente:

package Modelo;     

import java.util.Calendar;     
     
public class Clientes {     
         
    private long id_cliente;     
    private String nome;     
    private String email;     
    private String endereco;     
    private String cep;     
    private String bairro;     
    private String cidade;     
    private String estado;     
    private String pais;     
    private String complemento;     
    private String telefone;     
    private Calendar data_cadastro;     
    private String senha;     
         
    public long getId_cliente() {     
        return id_cliente;     
    }     
    public void setId_cliente(long id_cliente) {     
        this.id_cliente = id_cliente;     
    }     
    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 String getCep() {     
        return cep;     
    }     
    public void setCep(String cep) {     
        this.cep = cep;     
    }     
    public String getBairro() {     
        return bairro;     
    }     
    public void setBairro(String bairro) {     
        this.bairro = bairro;     
    }     
    public String getCidade() {     
        return cidade;     
    }     
    public void setCidade(String cidade) {     
        this.cidade = cidade;     
    }     
    public String getEstado() {     
        return estado;     
    }     
    public void setEstado(String estado) {     
        this.estado = estado;     
    }     
    public String getPais() {     
        return pais;     
    }     
    public void setPais(String pais) {     
        this.pais = pais;     
    }     
    public String getComplemento() {     
        return complemento;     
    }     
    public void setComplemento(String complemento) {     
        this.complemento = complemento;     
    }     
    public String getTelefone() {     
        return telefone;     
    }     
    public void setTelefone(String telefone) {     
        this.telefone = telefone;     
    }     
    public Calendar getData_cadastro() {     
        return data_cadastro;     
    }     
    public void setData_cadastro(Calendar data_cadastro) {     
        this.data_cadastro = data_cadastro;     
    }     
    public String getSenha() {     
        return senha;     
    }     
    public void setSenha(String senha) {     
        this.senha = senha;     
    }     
     
}

4 Respostas

Hebert_Coelho
String dataTexto = request.getParameter("data_cadastro");

Esse valor seu não está vindo da página.

Por isso esse erro.

java.lang.NullPointerException java.text.SimpleDateFormat.parse (SimpleDateFormat.java: 1235) java.text.DateFormat.parse (DateFormat.java: 335) Controle.AdicionaCliente.service (AdicionaCliente.java: 47)

alexandre.marques

Tem razão, eu alterei o nome das variaveis do e da Servlet, e não deu o erro, na conversão da Data, porém, apareceu outro erro que eu não entendi bem, me parece que a conecção não foi estabelecida. Da uma olhada…

eu estou usando o drive mysql-connector-java-5.1.15 :frowning:

Erro:

[b]HTTP Status 500 -


type Exception report

message

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

exception

java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘complento’ in ‘field list’

Controle.Cliente_DAO.adiciona(Cliente_DAO.java:46)

Controle.AdicionaCliente.service(AdicionaCliente.java:74)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘complento’ in ‘field list’

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

java.lang.reflect.Constructor.newInstance(Constructor.java:513)

com.mysql.jdbc.Util.handleNewInstance(Util.java:407)

com.mysql.jdbc.Util.getInstance(Util.java:382)

com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)

com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)

com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)

com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)

com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)

com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)

Controle.Cliente_DAO.adiciona(Cliente_DAO.java:42)

Controle.AdicionaCliente.service(AdicionaCliente.java:74)

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.19 logs.


Apache Tomcat/7.0.19[/b]

Formulário:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Loja virtual</title>
<link href="file:C:\eclipse_J2EE_JBOSS\Projetos_JBOSS\Loja_Virtual_MySQL\WebContent\CSS/css.css" rel="stylesheet" type="text/css" />
</head>

<body>	
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" style="border:#006699 solid 1px">
  <tr>
    <td height="73" colspan="2" bgcolor="#006699" class="titulo2"><div align="center">Bem vindo a minha loja virtual!</div></td>
  </tr>
  <tr>
    <td width="24" valign="top"></td>
    <td width="734" valign="top">
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="149" align="center" valign="top">
            <form action="AdicionaCliente" method="get" name="form1" id="form1">
              <table width="577" align="center">
                <tr valign="baseline">
                  <td height="31" colspan="2" align="right" valign="middle" nowrap="nowrap" class="menuadm"><div align="center">Preencha corretamente o formul &aacute;rio abaixo para cadastrar-se em nossa loja!</div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">&nbsp;</td>
                  <td>&nbsp;</td>
                </tr>
                <tr valign="baseline">
                  <td width="128" align="right" nowrap="nowrap" class="menuadm">Nome:</td>
                  <td width="437"><div align="left">
                    <input type="text" name="nome" value="" size="45" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Email:</td>
                  <td><div align="left">
                    <input type="text" name="email" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Endereco:</td>
                  <td><div align="left">
                    <input type="text" name="endereco" value="" size="50" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Cep:</td>
                  <td><div align="left">
                    <input type="text" name="cep" value="" size="15" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Bairro:</td>
                  <td><div align="left">
                    <input type="text" name="bairro" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Cidade:</td>
                  <td><div align="left">
                    <input type="text" name="cidade" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Estado:</td>
                  <td><div align="left">
                    <input type="text" name="estado" value="" size="5" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Pais:</td>
                  <td><div align="left">
                    <input type="text" name="pais" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Complemento:</td>
                  <td><div align="left">
                    <input type="text" name="complemento" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Telefone:</td>
                  <td><div align="left">
                    <input type="text" name="telefone" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Data do Cadastro</td>
                  <td><div align="left">
                  <input type = "text" name="dataCadastro" size="10" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td align="right" nowrap="nowrap" class="menuadm">Senha:</td>
                  <td><div align="left">
                    <input type="password" name="senha" value="" size="32" />
                  </div></td>
                </tr>
                <tr valign="baseline">
                  <td nowrap="nowrap" align="right">&nbsp;</td>
                  <td><input type="submit" value="Cadastrar" /></td>
                </tr>
              </table>
              <input type="hidden" name="MM_insert" value="form1" />
            </form>
          <p>&nbsp;</p></td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td height="29" colspan="2" bgcolor="#006699"><div align="center" class="menuadm">Todos os direitos reservados</div></td>
  </tr>
</table>
</body>
</html>

Cliente DAO:

package Controle;

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 Modelo.Clientes;

public class Cliente_DAO {

	private Connection connection;
	
	public Cliente_DAO(){
		this.connection = new Fabrica_Conexao().getConnection();
	}
	
	public void adiciona(Clientes clientes){
		
		String sql = "insert into clientes(nome, email, endereco, cep, " +
   "bairro, cidade, estado, pais, complento, telefone, data_cadastro, senha) values (?,?,?,?,?,?,?,?,?,?,?,?)";	
		try{
			
			java.sql.PreparedStatement stmt = connection.prepareStatement(sql);
			
			stmt.setString(1,clientes.getNome());
			stmt.setString(2,clientes.getEmail());
			stmt.setString(3, clientes.getEndereco());
			stmt.setString(4,clientes.getCep());
			stmt.setString(5, clientes.getBairro());
			stmt.setString(6, clientes.getCidade());
			stmt.setString(7, clientes.getEstado());
			stmt.setString(8, clientes.getPais());
			stmt.setString(9, clientes.getComplemento());
			stmt.setString(10, clientes.getTelefone());
			stmt.setDate(11, new Date(clientes.getData_cadastro().getTimeInMillis())); 
			stmt.setString(12, clientes.getSenha());
						
			stmt.execute();
			stmt.close();
			
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
	}
	
	public List<Clientes> getLista(){
		
		try{
			List<Clientes> lista_cliente = new ArrayList<Clientes>();
			PreparedStatement stmt = this.connection.prepareStatement("select * from clientes");
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				Clientes clientes = new Clientes();
				clientes.setId_cliente(rs.getLong("id_cliente"));
				clientes.setNome(rs.getString("nome"));
				clientes.setEmail(rs.getString("email"));
				clientes.setEndereco(rs.getString("endereco"));
				clientes.setCep(rs.getString("cep"));
				clientes.setBairro(rs.getString("bairro"));
				clientes.setCidade(rs.getString("cidade"));
				clientes.setEstado(rs.getString("estado"));
				clientes.setPais(rs.getString("pais"));
				clientes.setComplemento(rs.getString("complemento"));
				clientes.setTelefone(rs.getString("telefone"));
				
				//Montando a data através do Calendar
				
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("data_cadastro"));
				clientes.setData_cadastro(data);
				
				//Inserindo o objeto a lista
				
				lista_cliente.add(clientes);	
			}
			
			rs.close();
			stmt.close();		
			return lista_cliente;
			
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
	}

}

Fabrica de Conexão:

package Controle;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class Fabrica_Conexao {
	
	public Connection getConnection(){
		System.out.println("Conectando ao Banco");
		try{
			return DriverManager.getConnection("jdbc:mysql://localhost/loja_virtual","root","m4ckintox");
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}

}
Hebert_Coelho

Cara, você tem que ler melhor seus erros. Eles estão gritando o que está errado…

------>java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'complento' in 'field list' <----- MOTIVO ----->Controle.Cliente_DAO.adiciona(Cliente_DAO.java:46) <------ LINHA DO ERRO Controle.AdicionaCliente.service(AdicionaCliente.java:74) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

alexandre.marques

O cara! rsrsrsr verdade, Atenção é tudo!!! Deu certo meu querido! uhuuuuuuu… kkkk agora posso dar continuidade no processo…

Valeu pelo feedback, um Abraço!!! :lol: :roll:

Criado 22 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 4
Participantes 2