Jump to content
Sign in to follow this  
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 Edited by Mário Monteiro

Share this post


Link to post
Share on other 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/

Edited by jorge danilo

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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");

}

Share this post


Link to post
Share on other 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 !

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.