Ir para conteúdo
Entre para seguir isso  
phpbrasil

servlet

Recommended Posts

Pessoal,

Boa Tarde

 

Estou fazendo um programa simples de cadastro usando jsp. servlet e jdbc...mas quando clico em cadastrar, para jogar pro banco, aparece essa tela de erro:

 

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

modelo.Conexion.cerrarConexion(Conexion.java:25)

modelo.Usuario.agregarUsuario(Usuario.java:23)

vista.ServletRegistro.doPost(ServletRegistro.java:48)

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

Apache Tomcat/7.0.12

 

Poderiam me ajudar? Já quebrei a cabeça aqui mas nao esta dando certo =/

 

Seguem os codigos:

 

INDEX.JSP

<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Agenda de Contatos</title>
</head>
<body>
<form action="ServletRegistro" method="post">
  <div align="center">
    <table>
      <tr>
        <td colspan="2" align=center><p>AGENDA TELEFONICA</p>
        
          <p>Uezo</p>
          <p> </p>
        <p>Adicionar Novo Contato:</p></td>
      </tr>
      <tr>
        <td colspan="2"><hr /></td>
      </tr>
      <tr>
        <td bgcolor="#FFFFCC">Nome:</td>
        <td bgcolor="#FFFFCC"><input name="nome" type="text" id="nome" /></td>
      </tr>
      <tr>
        <td bgcolor="#FFFFCC">Telefone:</td>
        <td bgcolor="#FFFFCC"><input name="telefone" type="text" id="telefone" /></td>
      </tr>
      <tr>
        <td bgcolor="#FFFFCC">Celular:</td>
        <td bgcolor="#FFFFCC"><input name="celular" type="text" id="celular" /></td>
      </tr>
    
      
      <tr>
        <td colspan="2" align=center bgcolor="#FFFFCC"><input type="submit" name="add" id="add"  value="Adicionar Contato"/></td>
      </tr>
  </table>
  </div>
</form>

</body>
</html>
SERVLETREGISTRO

package vista;

import java.io.IOException;
import java.io.PrintWriter;

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.Usuario;

import controlador.BeanUsuario;

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

	/**
	 * @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 {
		
		String nome=request.getParameter("nome");
		  String telefone=request.getParameter("telefone");
		  String celular=request.getParameter("celular");
		  
		  if(!nome.equalsIgnoreCase("") && !telefone.equalsIgnoreCase("") && !celular.equalsIgnoreCase("")){
		   BeanUsuario busuario=new BeanUsuario(nome, telefone, celular);
		   boolean sw=Usuario.agregarUsuario(busuario);
		   if(sw){
		    request.getRequestDispatcher("Mensajem.jsp").forward(request, response);
		   }else{
		    PrintWriter out=response.getWriter();
		    out.println("Erro");
		   }
		  }
	}
}
		 
		
BeanUsuario

package controlador;

public class BeanUsuario {
	
	private int id;
	 private String nome;
	 private String telefone;
	 private String celular;
	 
	 
	public int getId() {
		return id;
	}
public void setId(int id) {
		
	
	this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getCelular() {
		return celular;
	}
	public void setCelular(String celular) {
		this.celular = celular;
	}
	public BeanUsuario(String nome, String telefone,
			   String celular) {
			  super();
			  //this.id = id;
			  this.nome = nome;
			  this.telefone = telefone;
			  this.celular = celular;
			 
			 }
			}
	 
	 

 
Conexion

package modelo;

import java.sql.*;

public class Conexion {
	
	private Connection con = null;
	 public Conexion() {
	  try {
	   Class.forName("org.postgresql.Driver").newInstance();
	   con = DriverManager.getConnection("jdbc:mysql://localhost:5432/agenda", "postgres","adm");
	  } catch (InstantiationException | IllegalAccessException
	    | ClassNotFoundException | SQLException e) {
	   // TODO Auto-generated catch block
	   e.printStackTrace();
	  }
	 }
	 
	 public Connection getConexion(){
	  return con;
	 }
	 
	 public void cerrarConexion(){
	  try {
	   con.close();
	  } catch (SQLException e) {
	   e.printStackTrace();
	  }
	 }
	} 
Usuario

package modelo;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import controlador.BeanUsuario;

public class Usuario {
	
	public static boolean agregarUsuario(BeanUsuario usuario){
		  boolean agregado=false;
		  try {
		   Conexion c=new Conexion();
		   Connection con=c.getConexion();
		   if(con!=null){
		    Statement st;
		    st = con.createStatement();
		    st.executeUpdate("INSERT INTO contato(`nome`,`telefone`,`celular`) VALUES ('"+usuario.getNome()+"','"+usuario.getTelefone()+"',"+usuario.getCelular()+"')");
		    		agregado=true;
		    st.close();
		   }
		   c.cerrarConexion();
		  } catch (SQLException e) {
		   agregado=false;
		   e.printStackTrace();
		  }
		  return agregado;
		 }

}

Obrigada Editado por Mário Monteiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cade a sua classe de conexão, e sua classe de inserção ?

 

O NullPointerException é uma excessão lançada pelo Java quando o programa tenta acessar um objeto da memoria que ainda não foi instanciado (inicializado), ou seja, o objeto está VAZIO.

 

Caso queira saber mais segue link: http://www.pognotfound.com/entendendo-o-null-pointer-exception/

Editado por jorge danilo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cade a sua classe de conexão, e sua classe de inserção ?

 

O NullPointerException é uma excessão lançada pelo Java quando o programa tenta acessar um objeto da memoria que ainda não foi instanciado (inicializado), ou seja, o objeto está VAZIO.

 

Caso queira saber mais segue link: http://www.pognotfound.com/entendendo-o-null-pointer-exception/

Coloquei a classe de inserção e de conexao

Compartilhar este post


Link para o post
Compartilhar em outros sites
public void cerrarConexion(){ 
   try {
      if(con != null) // verificação.
         con.close();
   } catch (SQLException e) {
      e.printStackTrace();
   }
}

Tenta isto.

 

Nao deu certo =/

Aparece o mesmo erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esta utlizando qual banco de dados ? Se for mysql o codigo

Class.forName("org.postgresql.Driver").newInstance();

Está "carregando" o driver do postgresql, e não o do mysql como vc "apontou" na url do banco.

 con = DriverManager.getConnection("jdbc:mysql://localhost:5432/agenda", "postgres","adm");

Você colocou o .jar do banco de dados na sua aplicação ? dentro da pasta WebApps > lib > .jar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esta utlizando qual banco de dados ? Se for mysql o codigo

Class.forName("org.postgresql.Driver").newInstance();

Está "carregando" o driver do postgresql, e não o do mysql como você "apontou" na url do banco.

 con = DriverManager.getConnection("jdbc:mysql://localhost:5432/agenda", "postgres","adm");

Você colocou o .jar do banco de dados na sua aplicação ? dentro da pasta WebApps > lib > .jar ?

Coloquei o .jar na lib sim...

 

O que voce falou, tem razao.....tirei o mysql e coloquei o postgresql, pois é o banco que estou utilizando...

 

agora quando tento salvar aparece escrito ERRO(essa parte do codigo):

 

}else{

PrintWriter out=response.getWriter();

out.println("Erro");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola na classe Usuário a concatenação estava errada, execute o método abaixo, pois no meu aqui resolveu com:

st.executeUpdate("INSERT INTO contato(nome, telefone,celular) VALUES ('"
						+ usuario.getNome()
						+ "','"
						+ usuario.getTelefone()
						+ "','" + usuario.getCelular() + "')");

O mesmo estava faltando uma aspa de fechamento. Verifique !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola na classe Usuário a concatenação estava errada, execute o método abaixo, pois no meu aqui resolveu com:

st.executeUpdate("INSERT INTO contato(nome, telefone,celular) VALUES ('"
						+ usuario.getNome()
						+ "','"
						+ usuario.getTelefone()
						+ "','" + usuario.getCelular() + "')");

O mesmo estava faltando uma aspa de fechamento. Verifique !

Deu certo Jorge =)

Muito Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.