Http status 500 -socorro [resolvido]

Estou aqui de novo pedindo ajuda a vcs…tenho um servlet que estava funcionando bem, mas qdo inseri campos que utlizam numeros passou a dar este erro:
Estou entrando por uma pagina html estes dados então não sei se precisa algum tratamento especial…

java.lang.NumberFormatException: For input string: “”
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:470)
java.lang.Integer.parseInt(Integer.java:499)
Cadastra.doPost(Cadastra.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

o codigo posto abaixo e conto a ajuda de vcs mais uma vez:

classe candidato[code]
public class Candidato{
private String nome;
private String email;
private String sexo;
private String Curso;
private String endereco;
private int rg;
private int cpf;
private int cep;
private int day;
private int month;
private int year;
private int age;

public Candidato(){
	day=1;
	month=0;
	year=1;
}
public void setCep(int cep){
	this.cep = cep;
}
public void setEndereco(String endereco){
	this.endereco = endereco;
}
public void setRg(int rg){
	this.rg = rg;
}
public void setCpf(int cpf){
	this.cpf = cpf;
} 
public void setDay(int day){
	this.day = day;
	
}
public void setMonth(int month){
	this.month = month;
	
}
public void setAge(int age ){
	this.age = age;
}

public void setYear (int year){
	this.year = year;
}

public void setNome(String nome){
	this.nome = nome;
}

public void setEmail(String email){
	this.email = email;
}

public void setSexo(String sexo){
	this.sexo = sexo;
}

public void setCurso(String curso){
	this.Curso = curso;
}

public String getNome(){
	return this.nome;
}

public String getEmail(){
	return this.email;
}

public String getSexo(){
	return this.sexo;
}

public String getCurso(){
	return this.Curso;
}

public int getDay(){
	return this.day;
	
}

public int getMonth(){
	return this.month;
}

public int getYear(){
	return this.year;
}

public int getAge(){
	return this.age;
}
public int getRg(){
	return this.rg;
	
}
public int getCpf(){
	return this.cpf;
	
}
public String getEndereco(){
	return this.endereco;
}
public int getCep(){
	return this.cep;
}

}

[/code]

classe Cadastra

import java.io.*;
     import javax.servlet.*;
     import javax.servlet.http.*;
     import java.util.*;
 
     public class Cadastra extends HttpServlet{
         public void doPost(HttpServletRequest request, HttpServletResponse response)
         throws IOException, ServletException {
         	 
             response.setContentType("text/html");
             
 
         // pegamos o PrintWriter do response, através 
         // do qual escreveremos o conteudo da pagina
         
         PrintWriter out = response.getWriter();
 		 String nome = request.getParameter("nome");
 		 String sexo = request.getParameter("sexo");
 		 String email = request.getParameter("email");
 		 String endereco = request.getParameter("endereco");
 		 int rg = Integer.parseInt( request.getParameter("rg"));
 		 int cpf = Integer.parseInt ( request.getParameter("cpf"));
 		 int day = Integer.parseInt ( request.getParameter("day"));
 		 int month = Integer.parseInt ( request.getParameter("month"));
 		 int year = Integer.parseInt ( request.getParameter("year")); 
 		 int cep = Integer.parseInt ( request.getParameter("cep"));
 		 
 		 Candidato candidato = new Candidato();
 		 candidato.setNome (nome);
 		 candidato.setEmail (email);
 		 candidato.setSexo (sexo);
 		 candidato.setEndereco (endereco);
 		 candidato.setRg (rg);
 		 candidato.setCpf (cpf);
 		 candidato.setDay (day);
 		 candidato.setMonth (month);
 		 candidato.setYear (year);
 		 candidato.setCep (cep);
 		 
 		 HttpSession sessao = request.getSession();
 		 sessao.setAttribute("candidato",candidato);
         // Agora vamos escrever o conteudo da pagina
         out.println("<HTML>");
         out.println("<BODY>");
         out.println("<form action='curso' method='post'>");
         out.println("Curso:<select name=curso>");
         out.println("<option value='Basico Incompleto'>Basico Incompleto</option>");
         out.println("<option value='Basico Completo'>Basico Completo</option>");
         out.println("<option value='Medio Incompleto'>Medio Incompleto</option>");
         out.println("<option value='Medio Completo'>Medio Completo</option>");
         out.println("<option value='Superior Incompleto'>Superior Incompleto</option>");
         out.println("<option value='Superior Completo'>Superior Completo</option>");
         out.println("</select><p/>");
         out.println("<input type='submit' value='Enviar'/>");
         out.println("</body>");
         out.println("</html>");
 
         }
     } 

classe CursoServlet


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

/**
 * Servlet implementation class CursoServlet
 */
public class CursoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	PrintWriter out = response.getWriter();
	String curso = request.getParameter("curso");
	HttpSession sessao = request.getSession();
	Candidato candidato =(Candidato) sessao.getAttribute("candidato");
	candidato.setCurso(curso);
	out.println("<html>");	
	out.println("<body>");	
	out.println("Sua inscriação foi finalizada<br/>");	
	out.println("Os dados são: <br/>");	
	out.println("Nome:"+candidato.getNome()+"<br/>");	
	out.println("Data de nascimento:"+candidato.getDay()+"/"+candidato.getMonth()+"/"+candidato.getYear()+"<br/>");	
	out.println("Sexo:"+candidato.getSexo()+"<br/>");	
	out.println("email:"+candidato.getEmail()+"<br/>");	
	out.println("Endereço:"+candidato.getEndereco()+"<br/>");	
	out.println("Cep:"+candidato.getCep()+"<br/>");	
	out.println("RG:"+candidato.getRg()+"<br/>");	
	out.println("CPF:"+candidato.getCpf()+"<br/>");		
	out.println("Grau de Instrução:"+candidato.getCurso()+"<br/>");	
	out.println("<a href='index.html'>Voltar a tela Principal</a>");	
	out.println("</body>");	
	out.println("</html>");
	
	
	
	
	}

}

Pelo log provavelmente você esqueceu de passar o rg na sua aplicação.

request.getParameter(“rg”) está retornando uma String vazia, logo vc nao pode converter isso num Integer, então acontece a exceçao

/edit/
dps que ficar fera em servlets e jsp procure aprender algum framework mvc, vc vai ver como sua vida vai melhorar rsrs
/edit/

abrassss

:?:Renam não entendi a colocação, o valor retornado esta vazio???eu não tenho de fazer nenhum tratamento do que é inserido na pagina html para converter em inteiro não???olha minha html

[code]

Insert title here

 

Nome: Data de nascimento:

RG:CPF: email:

Endereço:

CEP:

Sexo: Masculino Feminino

[/code]

Amigo pelo que eu entendi o problema esta pq vc esta usando tipos primitivos no java
EX: int

quando vc amarra um tipo primitivo em uma caixa de texto no jsf se ele estiver em branco da erro de conversão, basta vc transformar o int para Integer que ao inves de vir em branco vira null, e no jsf quando vem null ele deixa em branco

esse erro acontece quando vc submete o form e entao o servlet é chamado, se o usuário não preencher o campo RG no caso vai acontecer a exception pq request.getParameter(“rg”) vai retornar uma String vazia “”
e quando vc converte “” com Integer.parseInt() é gerada a exception

compreendeu ?

/edit/
tente preencher os campos e vc verá que nao ocorrera mais
/edit/

abrassss

leonardobhbr O.o JSF ?!!?!?!?!?!

descobri que o problema ta na parte do cpf…se eu colocar um cpf de tamanho correto ele da aquele erro, então parece que existe a big int como declaro ela???

n… sua exceçao ocorre na linha 21, agora deve estar acontecendo outra exceçao pq vc preencheu o rg corretamente, porem esta tentando colocar na variavel int do cpf um numero maior do que ela suporta.

acredito que o melhor tipo de dado para cpf não seja algo numerico e sim string, mas isso vai da concepçao de cada um. nao exite big int no java, e sim big decimal

new BigDecilmal(param);

abrasssss