Problema no servlet

8 respostas
R

Bom dia galera…
estou com um problema nullpointerexception…
abaixo vai o erro e meu programa.

type Exception report

message

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

exception

javax.servlet.ServletException: java.lang.NullPointerException

Aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:65)

Aula02.CadastrarFuncionarioServlet.doPost(CadastrarFuncionarioServlet.java:43)

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

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

root cause

java.lang.NullPointerException

sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)

java.lang.Double.parseDouble(Unknown Source)

Aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:58)

Aula02.CadastrarFuncionarioServlet.doPost(CadastrarFuncionarioServlet.java:43)

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

Agora vai minhas linhas no Servlet

/**

  • Servlet implementation class CadastrarFuncionarioServlet
    
    */
    
    @WebServlet("/CadastrarFuncionario")
    
    public class CadastrarFuncionarioServlet extends HttpServlet {
    
    private static final long serialVersionUID = 1L;
    

    /**

    • @see HttpServlet#HttpServlet()
      */
      public CadastrarFuncionarioServlet() {
      super();
      // TODO Auto-generated constructor stub
      }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doService(request, response);
      }

    /**

    • @return
    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doService(request, response);
      }
    private void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    String nome = request.getParameter(nome);
    
    String sNascimento= request.getParameter(nascimento);
    
    String sSalario = request.getParameter(salario);
    
    String sSexo = request.getParameter(sexo);
    
    String sTemporario = request.getParameter(temporario);
    
    Funcionario funcionario = null;
     DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
     try{
     	Date nascimento = df.parse(sNascimento);
     	Double salario = Double.parseDouble(sSalario);
     	Character sexo = sSexo.charAt(0);
     	Boolean temporario = Boolean.parseBoolean(sTemporario);
     	funcionario = new Funcionario(nome,nascimento, salario, sexo, temporario);
     	
     }
     catch(Exception e) {
     	throw new ServletException(e);
     }
     		
     
     if (funcionario != null) {
     	Dados.cadastrarFuncionario(funcionario);
     	
     	response.setContentType("text/html");
     	PrintWriter out = response.getWriter();
     	out.write("<html><head><title>Funcionários Cadastrados</title></head></body>");
     	out.write("<hl>Funcionários Cadastrados</hl><ol>");
     	
     	List<Funcionario> lista = Dados.listarFuncionarios();
     	for (Funcionario f: lista) out.write("<li><p>" + f.getNome()+ "</p></li>");
     	out.write("</ol>");
     			
     	out.write("<p><hr /></p><p><a href='index.html'>Formulario de cadastro</a></p></body></html>");
     	out.close();
     	
     }
    

    }

}

Obs: quando coloco ou mouse sobre exception ele me indica as linhas do sNascimento e do sSalario

Agradeço a atenção
Abraço a tds!!!

8 Respostas

FernandoFranzini

Valores do request.getParameter não estão vindo…
Favor verificar o nomes do parâmetros HTTP com o nomes dos <input name="???"/>

R

Fernando os nomes na classe que criei as variáveis estão todas iguais…
testei as variáveis e todas estão retornando nulo…
gostaria que vc me desse uma opinião de como resolver, pois estou começando e esse erro eu não estou sabendo resolver
Agradeço a atenção

C

Então RodolphoFernando, como Fernando disse acima, realmente algum dos parametros estão vindo null, ai quando você vai realizar o parse dos valores para seus respectivos tipos acontece a exception, lendo o stacktrace acredito que o erro é na conversão da variável sSalario para Double.

Coloque o código entre as tags [code], que fica melhor de visualizar seu código.

Flw.

R
/**
 * Servlet implementation class CadastrarFuncionarioServlet
 */
@WebServlet("/CadastrarFuncionario")
public class CadastrarFuncionarioServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CadastrarFuncionarioServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}

	/**
	 * @return 
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}

	private void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String nome = request.getParameter("nome");
		String sNascimento= request.getParameter("nascimento");
		String sSalario = request.getParameter("salario");
		String sSexo = request.getParameter("sexo");
		String sTemporario = request.getParameter("temporario");
		
				
		Funcionario funcionario = null;
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		try{
			Date nascimento = df.parse(sNascimento);
			Double salario = Double.parseDouble(sSalario);
			Character sexo = sSexo.charAt(0);
			Boolean temporario = Boolean.parseBoolean(sTemporario);
			funcionario = new Funcionario(nome, nascimento, salario, sexo, temporario);
			
		}
		catch(Exception e) {
			throw new ServletException(e);
		}
				
		
		if (funcionario != null) {
			Dados.cadastrarFuncionario(funcionario);
			
			response.setContentType("text/html");
			PrintWriter out = response.getWriter();
			out.write("<html><head><title>Funcionários Cadastrados</title></head></body>");
			out.write("<hl>Funcionários Cadastrados</hl><ol>");
			
			List<Funcionario> lista = Dados.listarFuncionarios();
			for (Funcionario f: lista) out.write("<li><p>" + f.getNome()+ "</p></li>");
			out.write("</ol>");
					
			out.write("<p><hr /></p><p><a href='index.html'>Formulario de cadastro</a></p></body></html>");
			out.close();
			
		}
	}

}
FernandoFranzini

Pelo que parece os request.getParameter…estão retornando null…ou seja, não existe tal parâmetro na requisição HTTP
Veja ai…

R

Galera agradeço a atenção…
Consegui achar o erro…
Abraço a tds!!!

targas

Como conseguiu resolver?

L

Exato, coloque aí a solução :smiley:

Eu costumo sempre validar os atributos do request.getParameter antes de usá-los. Acredito que seja uma boa prática…

Criado 16 de agosto de 2011
Ultima resposta 16 de out. de 2012
Respostas 8
Participantes 5