Http status 500 -socorro [resolvido]

8 respostas
M

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

}

8 Respostas

F

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

R

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

M

:?: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

<!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>Insert title here</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Courier New, Courier, monospace;
	font-weight: bold;
	color: #000;
	font-size: 14px;
}
body {
	background-color: #FFF;
}
-->
</style></head>
<body>

<form action="Cadastra" method="post">
<p>&nbsp;</p>
<p>Nome:
  <input name="nome" type="text" size="40" maxlength="40"/>
  Data de nascimento:
  <input name="day" type="text" value="01" size="2" maxlength="2"/>
<input name="month" type="text" value="01" size="2" maxlength="2"/>
  <input name="year" type="text" value="1900" size="4" maxlength="4"/>
</p>
RG:<input name="rg" type="text" value=""/>CPF:<input name="cpf" type="text" value=""/>
email:
  <input name="email" type="text" value="@"/><p/>
Endereço:
<textarea name="endereco" cols="50" rows="3"></textarea>
<p/>
CEP:<input name="cep" type="text" value="00000-000"/>
<p/>
<p/>
Sexo:<select name="sexo">
	<option value="Masculino">Masculino</option>
	<option value="Feminino">Feminino</option>
	</select></p>
<input type="submit" value="enviar"/>
</form>


</body>
</html>
L

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

R

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

R

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

M

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

R

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

Criado 25 de março de 2010
Ultima resposta 26 de mar. de 2010
Respostas 8
Participantes 4