NullPointerException quando envio jsp

9 respostas
R

Blz pessoal, quando envio uma requisição para o servidor via,jsp
da um erro de nullpointerException,mas não tem nenhum valor nulo.
estou postando abaixo o trecho da jsp,o trecho do servlet e do dao.
Se alguem poder da uma força agradeço.

OBS:se tiro a chamada para o metodo da dao ele executa sem o erro

--------------------------------------------------------------------------------

type Exception report

message 

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

exception 

java.lang.NullPointerException
	br.com.oriom.CotacaoWeb.serveletes.Servelet_ProdutoC.processRequest(Servelet_ProdutoC.java:140)
	br.com.oriom.CotacaoWeb.serveletes.Servelet_ProdutoC.doPost(Servelet_ProdutoC.java:152)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
//trecho a ser executado na dao
 public Fornecedor_Bean listaForne(Fornecedor_Bean fornecedor) throws Exception {
        Connection conex = null;
        PreparedStatement pst = null;
        ResultSet rst = null;

        if (fornecedor == null) {
            throw new Exception("Valor nao pode ser nulo");
        }

        String query = "SELECT * FROM fornecedores WHERE id_forn=?";
        conex = this.conn;

        try {
            pst = conex.prepareStatement(query);
            pst.setInt(1,fornecedor.getId_Fornecedor());
            rst = pst.executeQuery();

            
                int codigo = rst.getInt(1);
                String nome = rst.getString(2);
                String contato = rst.getString(3);
                String tel = rst.getString(4);
                String endereco = rst.getString(5);
                String cidade=rst.getString(6);
                String email = rst.getString(7);
            
            return new Fornecedor_Bean(codigo,nome,contato,tel,endereco,cidade,email);

        } finally {
            Fabrica_Conexao.close(conn, pst, rst);
        }


    }
/*
 * Este servelt controla as ruizicoes
 * para manipular dados sobre fornecedores
 */
package br.com.oriom.CotacaoWeb.serveletes;

import br.com.oriom.CotacaoWeb.auxiliar.Validador;
import br.com.oriom.CotacaoWeb.dao.Dao_Fornecedor;
import br.com.oriom.CotacaoWeb.dao.Dao_FornecedorImp;
import br.com.oriom.bean.Fornecedor_Bean;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;

/**
 *
 * @author Administrador
 */
public class Servelet_Fornecedor extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        List lista;
        RequestDispatcher rd = null;
        String fmd = request.getParameter("fmd");
        HttpSession sessiom = request.getSession(true);
        Validador valida = new Validador();

        if (fmd == null || fmd.trim().equalsIgnoreCase("")) {
            fmd = "listar";//pagina padrao
        }
        Fornecedor_Bean fornecedor = new Fornecedor_Bean();
        Dao_Fornecedor daoF = new Dao_FornecedorImp();

        if (fmd.equalsIgnoreCase("cadastro")) {
            fornecedor.setNome_Fornecedor(request.getParameter("nome"));
            fornecedor.setContato_Fornecedor(request.getParameter("contato"));
            fornecedor.setFone_Fornecedor(request.getParameter("tel"));
            fornecedor.setEndereco_Fornecedor(request.getParameter("endereco"));
            fornecedor.setCidade_Fornecedor(request.getParameter("cidade"));
            fornecedor.setEmail_Fornecedor(request.getParameter("email"));
            if (valida.validaCampos(request, rd)) {
                //devolve uma pagina com os campos ja preenchidos
                sessiom.setAttribute("fornecedor", fornecedor);
                JOptionPane.showMessageDialog(null, "Todos os campos sao de preenchimento obrigatorio!", "Oriom", JOptionPane.INFORMATION_MESSAGE);
                rd = request.getRequestDispatcher("/clone_cad_fornecedor.jsp");
            } else {
                try {
                    daoF.cadastraFornecedor(fornecedor);
                    rd = request.getRequestDispatcher("/cadastro_fornecedor.jsp");
                } catch (Exception ex) {
                }

            }
        } else if (fmd.equalsIgnoreCase("procura")) {
            String filtroId = request.getParameter("filterID");


            if (!filtroId.equals("")) {
                try {
                    fornecedor.setId_Fornecedor(Integer.parseInt(filtroId));
                    lista = daoF.forneID(fornecedor);
                    sessiom.setAttribute("lista", lista);
                    rd = request.getRequestDispatcher("/consulta_fornecedor.jsp");
                } catch (NumberFormatException nun) {
                    JOptionPane.showMessageDialog(null, "Numero mal formatado!", "Oriom", JOptionPane.INFORMATION_MESSAGE);
                } catch (Exception ex) {
                }
            } else {
                try {
                    fornecedor.setNome_Fornecedor(request.getParameter("filterDes"));
                    lista = daoF.forneDesc(fornecedor);
                    sessiom.setAttribute("lista", lista);
                    rd = request.getRequestDispatcher("/consulta_fornecedor.jsp");
                } catch (Exception ex) {
                }
            }
        } else if (fmd.equalsIgnoreCase("atualizar")) {
            try {
                fornecedor.setId_Fornecedor(Integer.parseInt(request.getParameter("id")));
                daoF.atualizaFornecedor(fornecedor);
                rd = request.getRequestDispatcher("/consulta_fornecedor.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado!", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
            }
        } else if (fmd.equalsIgnoreCase("deleta")) {
            try {
                fornecedor.setId_Fornecedor(Integer.parseInt(request.getParameter("id")));
                daoF.deletaFornecedor(fornecedor);
                rd = request.getRequestDispatcher("/consulta_fornecedor.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado!", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
            }

        } else if (fmd.equalsIgnoreCase("listar")) {
            rd = request.getRequestDispatcher("/index.jsp");

        }else if(fmd.equalsIgnoreCase("atu")){//aqui
             try {
                fornecedor.setId_Fornecedor(Integer.parseInt(request.getParameter("id")));
                fornecedor=daoF.listaForne(fornecedor);[b]//se tiro esta chamada executa sem erro[/b]
                HttpSession sessao = request.getSession(true);
                sessao.setAttribute("fornecedor",fornecedor);
                rd = request.getRequestDispatcher("/form_atu_fornecedor.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
            }
       }

        rd.forward(request, response);

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

9 Respostas

robinsonbsilva

Jovem, já que vc está certo que não há valor nulo, tente olhar o timeout da sessão…
quem sabe esteja curto demais, assim ele inválida e quando vc vai usar…“caiu”…

wandersonxs

A merda parece que está dentro do servlet Servelet_ProdutoC.

Posta o código deste servlet e destaque onde está a chamada para ele.

Assim facilita para a gente te ajudar.

Abraços

PS: Detalhe se ta dizendo que é NullPointerException então é NullPointerException. A JVM nunca mente… rs :twisted: :twisted:

Abraços
Wanderson 8)

R

O cara obrigado pela rapidez em responder,mas só abusando como faço para veriguar o timeout.

posto abaixo também o servelet_Produto,que tambem da o mesmo erro só que é quando tento atualizar o registro.

/**
 * Este servlet,é o controle para a requisição que vem do formulario
 * para trabalhar com a parte de cadastro,atualização,deletar,e listar produtos
 * chamando o bean e o dao para fazer a persitencia dos dados no banco de dados.
 * toda a requisição para este servlet vem com uma string,onde o servlet faz a averiguação
 * e de acordo com a string toma a decisão necessaria.TAMBEM VALIDA OS CAMPOS,chamando
 * o metodo validaCampos da classe validaForm.
 */
package br.com.oriom.CotacaoWeb.serveletes;

import br.com.oriom.CotacaoWeb.*;
import br.com.oriom.CotacaoWeb.auxiliar.Validador;
import br.com.oriom.bean.Produto_Bean;
import br.com.oriom.CotacaoWeb.dao.*;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;

/**
 *
 * @author robertob
 */
public class Servelet_ProdutoC extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        List lista;
        RequestDispatcher rd = null;//para redirecionar a requisição
        String cmd = request.getParameter("cmd");//recebe o parametro do formulario
        Validador valida = new Validador();


        if (cmd == null || cmd.trim().equalsIgnoreCase("")) {
            cmd = "listar";//pagina padrao
        }
        Produto_Bean produto = new Produto_Bean();//para modelo dos dados
        Dao_Produto dao = new Dao_ProdutoImp();//para persistencia dos dados

        //preencho o bean com os valores do formulario
        if (cmd.equalsIgnoreCase("cadastro")) {//formulario cadastro
            if (valida.validaCampos(request, rd)) {//verdade quando tiver campo vazio
                produto.setDescricao_Produto(request.getParameter("produto"));
                produto.setEmbalagem_Produto(request.getParameter("embalagem"));
                HttpSession sessao = request.getSession(true);
                sessao.setAttribute("produto", produto);
                JOptionPane.showMessageDialog(null, "Todos os campos são de preenchimento obrigatório!", "Oriom", JOptionPane.INFORMATION_MESSAGE);
                rd = request.getRequestDispatcher("/clone_cad_produto.jsp");
            } else {
                try {

                    produto.setDescricao_Produto(request.getParameter("produto"));
                    produto.setEmbalagem_Produto(request.getParameter("embalagem"));
                    dao.cadastraProduto(produto);
                    rd = request.getRequestDispatcher("/cadastro_produto.jsp");

                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.INFORMATION_MESSAGE);
                }
            }


        } else if (cmd.equalsIgnoreCase("procura")) {//formulario de consulta de produtos
            String filtroId = request.getParameter("filterID");

            if (!filtroId.equals("")) {
                try {
                    produto.setId_Produto(Integer.parseInt(filtroId));
                    lista = dao.listaProdutoID(produto);
                    request.setAttribute("lista", lista);

                    rd = request.getRequestDispatcher("/consulta_produto.jsp");
                } catch (NumberFormatException num) {
                    JOptionPane.showMessageDialog(null, "Numero mal formatado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.INFORMATION_MESSAGE);
                }
            } else {
                try {
                    produto.setDescricao_Produto(request.getParameter("filterDes"));
                    lista = dao.listaProdutoDesc(produto);
                    request.setAttribute("lista", lista);

                    rd = request.getRequestDispatcher("/consulta_produto.jsp");
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.INFORMATION_MESSAGE);
                }
            }

        } else if (cmd.equalsIgnoreCase("atualizar")) {//formulario de atualização de produto
            try {
                produto.setId_Produto(Integer.parseInt(request.getParameter("cod")));
                produto.setDescricao_Produto(request.getParameter("produto"));
                produto.setDescricao_Produto(request.getParameter("embalagem"));
                dao.AtualizaProduto(produto);
                rd = request.getRequestDispatcher("/consulta_produto.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.INFORMATION_MESSAGE);
            }
        } else if (cmd.equalsIgnoreCase("deletar")) {
            try {
                produto.setId_Produto(Integer.parseInt(request.getParameter("id")));
                dao.deleteProduto(produto);
                rd = request.getRequestDispatcher("/consulta_produto.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.INFORMATION_MESSAGE);
            }

        } else if (cmd.equalsIgnoreCase("atu")) {
            //chama e prepara o formulario para atalizar o registro

            try {
                produto.setId_Produto(Integer.parseInt(request.getParameter("id")));
                produto.setDescricao_Produto(request.getParameter("nome"));
                produto.setEmbalagem_Produto(request.getParameter("emb"));
                HttpSession sessao = request.getSession(true);
                sessao.setAttribute("produto", produto);
                rd = request.getRequestDispatcher("/form_atu_produto.jsp");
            } catch (NumberFormatException num) {
                JOptionPane.showMessageDialog(null, "Numero mal formatado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            } catch (Exception ex) {
            }


        } else if (cmd.equalsIgnoreCase(
                "listar")) {
            rd = request.getRequestDispatcher("/index.jsp");
        }

        rd.forward(request, response);//faz o redirecionameto para as paginas
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}
M

Roberto,

Pq ao invés de vc passar o fornecedor para o método listaForne, vc passar o Id que vem da tela e ficando assim:

fornecedor=daoF.listaForne(Integer.parseInt(request.getParameter("id")));

e retira a linha:

fornecedor.setId_Fornecedor(Integer.parseInt(request.getParameter("id")));

e mudar o metodo que busca as informações do Fornecedor para alteração receber como parametro inteiro assim:

public Fornecedor_Bean listaForne(int idFornecedor) throws Exception { ....

Veja se funciona blz,

Abraços!!!

R

Cara,ainda não deu certo.

Mas obrigado,se der para vcs continuarem a me ajudar vai ser uma mão na roda.

R

Olá senhores.alguem poderia me dar uma luz aqui neste problema?

luistiagos

Olhando por cima acho que o seu problema é que sua String cmd esta diferente que qualquer condição que vc testa… procure debugar e ver o valor de cmd no Servelet_ProdutoC… caso ela for diferente que a condição de todos os seus ifs quando vc vai fazer isto:
rd.forward(request, response); seu rd estara nulo e com isto explode o NullPointer… tente depurar e ver se quando chegar a esta linha do: rd.forward(request, response); sua rd não esta nula… caso ela esteja o problema é com a String cmd que deve ter vindo com um valor diferente daqueles que vc testa ou em branco…

R

Obrigado luis estava errado o valor que vinha da pagina para o servelet,
mas isto no produto,no fornecedor da o mesmo erro,se que la ta certo,mas vou seguir suas dicas e depurar o servelet,apesar
de não saber usar direito(mas tudo se aprende).Valeu a dica dos outros que responderam,pois me alertou para erros que certamante iram futuramente acontecer.

luistiagos

provavelmente é o mesmo problema…

Criado 3 de setembro de 2009
Ultima resposta 4 de set. de 2009
Respostas 9
Participantes 5