Java.lang.NullPointerException

Olá Pessoal!

Estou desenvolvendo uma tela de vendas em JSP, e ao inserir um item no detalhe da nota, surge o seguinte erro:

  • no browser aparece o seguinte:

HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
br.com.jairo.dao.ItensVendaDAO.getListaItensVenda(ItensVendaDAO.java:74)
br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:113)
br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

  • No log da IDE netbeans informa o seguinte:

SEVERE: null
org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:218)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at br.com.jairo.dao.ItensVendaDAO.getListaItensVenda(ItensVendaDAO.java:58)
at br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:113)
at br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:133)

  • Pagina JSP:

Nova Venda de Mercadorias

Codigo da Venda <input type="text" name="vencodigo" id="vencodigo" size="5" maxlength="" disabled="disabled" Value="<% if (request.getParameter("vencodigo") != null) { out.println(request.getParameter("vencodigo")); } else if (request.getAttribute("sessaoUltimoRegistroVenda") != null) { out.println(request.getAttribute("sessaoUltimoRegistroVenda")); }
       %>"
       />
<label for="vendata">Data da Venda</label>
<input type="date" name="vendata" id="vendata" value="${param.vendata}" /><br/>
<label for="clicodigo">Codigo do Cliente</label>
<input type="text" name="clicodigo" id="clicodigo" size="5" value="${param.clicodigo}"/>
<select name="selectCliente" id="selectCliente">
    <tagsJairo:listaClienteSelect/>
</select><br/>
<label for="venvalortotal">Valor Total da Venda</label>
<input type="text" name="venvalortotal" id="venvalortotal" value="${param.venvalortotal}" />
<input type="hidden" name="acao" value="novo" />
<input type="submit" value="Gerar Venda e Inserir Itens na Nota" />
>

Produtos da Venda

Sequencia Codigo da Venda <input type="text" name="vencodigo" id="vencodigo" Value="<% if (request.getParameter("vencodigo") != null) { out.println(request.getParameter("vencodigo")); } else if (request.getAttribute("sessaoUltimoRegistroVenda") != null) { out.println(request.getAttribute("sessaoUltimoRegistroVenda")); }
%>" readonly="readonly"/><br/>
<label for="prodcodigo">Codigo do Produto</label>
<input type="text" name="prodcodigo" id="prodcodigo" size="5" value="${param.prodcodigo}"/>
<select name="selectProduto" id="selectProduto">
    <tagsJairo:listaProdutoSelect/>
</select><br/>
<label for="venquantidade">Quantidade</label>
<input type="text" name="venquantidade" id="venquantidade" value="${param.venquantidade}"/>
<label for="ventotal">Total</label>
<input type="text" name="ventotal" id="ventotal" value="${param.ventotal}"/>
<input type="hidden" name="codigovenda" value="<%
            if (request.getAttribute("sessaoUltimoRegistroVenda") != null) {
                out.println(request.getAttribute("sessaoUltimoRegistroVenda"));
            }
       %>" />
<input type="hidden" name="clicodigo" id="clicodigo" value="${param.clicodigo}"/>
<input type="hidden" name="vendata" id="vendata" value="${param.vendata}" />
<input type="hidden" name="venvalortotal" id="venvalortotal" value="${param.venvalortotal}" />
<input type="hidden" name="acao" value="novoItemVenda" />
<input type="submit" value="Inserir" /><br>
<%
            if (request.getAttribute("sessaoListaItensVenda") != null) {
                java.util.List listaItensVenda = (java.util.List) request.getAttribute("sessaoListaItensVenda");

                out.println("<table border='1'>");

                out.println("<tr><td>Sequencia</td><td>Numero da NF</td><td>Codigo do Produto</td><td>Quantidade</td><td>Total</td></tr>");

                for (java.util.Iterator iterator = listaItensVenda.iterator(); iterator.hasNext();) {
                    br.com.jairo.modelo.ItensVenda itensVenda = (br.com.jairo.modelo.ItensVenda) iterator.next();

                    out.println("<tr>");
                    String sequencia = String.valueOf(itensVenda.getItensCodigo());
                    String nf = String.valueOf(itensVenda.getVenCodigo());
                    String produto = String.valueOf(itensVenda.getProdCodigo());
                    String quantidade = String.valueOf(itensVenda.getVenQuantidade());
                    String total = String.valueOf(itensVenda.getVenTotal());
                    out.println("<td>" + sequencia + "</td>");
                    out.println("<td>" + nf + "</td>");
                    out.println("<td>" + produto + "</td>");
                    out.println("<td>" + quantidade + "</td>");
                    out.println("<td>" + total + "</td>");

                    out.println("</tr>");
                }


                out.println("</table>");
            }
%>
  • no servlet:

public class VendaCRUD extends HttpServlet {

/** 
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, ParseException, SQLException {

    String venCodigo = request.getParameter("vencodigo");
    String venData = request.getParameter("vendata");
    String cliCodigo = request.getParameter("clicodigo");
    String venValorTotal = request.getParameter("venvalortotal");
    RequestDispatcher rd = null;

    Vendas vendas = new Vendas();

    if (venCodigo != null) {
        vendas.setVenCodigo(Integer.parseInt(venCodigo));
    }

    DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
    if (venData != null) {
        Date venDataFormatada = formatoData.parse(venData);
        vendas.setVenData(venDataFormatada);
    }

    if (cliCodigo != null) {
        vendas.setCliCodigo(Integer.parseInt(cliCodigo));
    }

    if (venValorTotal != null) {
        vendas.setVenValorTotal(Double.parseDouble(venValorTotal));
    }

    VendaDAO vendaDAO = new VendaDAO();

    String codigoVenda = request.getParameter("vencodigo");
    String prodCodigo = request.getParameter("prodcodigo");
    String venQuantidade = request.getParameter("venquantidade");
    String venTotal = request.getParameter("ventotal");

    ItensVenda itensVenda = new ItensVenda();

    if (codigoVenda != null) {
        itensVenda.setVenCodigo(Integer.parseInt(codigoVenda));
    }

    if (prodCodigo != null) {
        itensVenda.setProdCodigo(Integer.parseInt(prodCodigo));
    }

    if (venQuantidade != null) {
        itensVenda.setVenQuantidade(Integer.parseInt(venQuantidade));
    }

    if (venTotal != null) {
        itensVenda.setVenTotal(Double.parseDouble(venTotal));
    }

    ItensVendaDAO itensVendaDAO = new ItensVendaDAO();

    //verificar qual é a ação
    String acao = request.getParameter("acao");
    if (acao == null) {
        acao = "listarVenda";
    }

    if (acao.equals("alterar")) {
        //clienteDAO.alteraCliente(clientes);
        //rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
    } else if (acao.equals("excluir")) {
        //clienteDAO.excluiCliente(clientes);
        //rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
    } else if (acao.equals("novo")) {
        vendaDAO.novaVenda(vendas);
        request.setAttribute("sessaoUltimoRegistroVenda", vendaDAO.ultimoRegistro());
        rd = request.getRequestDispatcher("/venda.jsp");
    } else if (acao.equals("novoItemVenda")) {
        itensVendaDAO.novoItemVenda(itensVenda);
        List listaItensVenda = itensVendaDAO.getListaItensVenda(Integer.parseInt(codigoVenda));
        request.setAttribute("sessaoListaItensVenda", listaItensVenda);
        //request.setAttribute("sessaoUltimoRegistroVenda", vendaDAO.ultimoRegistro());
        rd = request.getRequestDispatcher("/venda.jsp");
    }
    rd.forward(request, response);
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** 
 * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    try {
        processRequest(request, response);
    } catch (ParseException ex) {
        Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
    }
}

/** 
 * 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 {
    try {
        processRequest(request, response);
    } catch (ParseException ex) {
        Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
    }
}

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

}

  • no DAO:

public class ItensVendaDAO {

private Connection connection;

public ItensVendaDAO() {
    this.connection = new ConnectionFactory().getConnection();
}

//metodo para incluir novo item da venda
public void novoItemVenda(ItensVenda itensVendas) throws SQLException {
    String sql = "insert into itensvenda (vencodigo, prodcodigo, venquantidade, ventotal) values(?,?,?,?)";
    PreparedStatement ps = null;
    try {
        ps = connection.prepareStatement(sql);
        ps.setInt(1, itensVendas.getVenCodigo());
        ps.setInt(2, itensVendas.getProdCodigo());
        ps.setInt(3, itensVendas.getVenQuantidade());
        ps.setDouble(4, itensVendas.getVenTotal());
        //System.out.println("SQL Novo Item Venda->"+ps.toString());
        ps.execute();
    } catch (SQLException ex) {
        Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        connection.close();
        ps.close();
    }
}

//metodo que retorna a lista de itens vendidos do banco de dados
public List getListaItensVenda(int codigoVenda) throws SQLException {
    String sql = "select * from itensvenda where vencodigo = "+codigoVenda;
    PreparedStatement ps = null;
    ResultSet rs = null;
    List<ItensVenda> listaItensVenda = new ArrayList<ItensVenda>();
    try {
        ps = connection.prepareStatement(sql);
        rs = ps.executeQuery();
        while (rs.next()) {
            ItensVenda itensVenda = new ItensVenda();
            itensVenda.setItensCodigo(rs.getInt("itenscodigo"));
            itensVenda.setVenCodigo(rs.getInt("vencodigo"));
            itensVenda.setProdCodigo(rs.getInt("prodcodigo"));
            itensVenda.setVenQuantidade(rs.getInt("venquantidade"));
            itensVenda.setVenTotal(rs.getDouble("ventotal"));
            listaItensVenda.add(itensVenda);
        }
        return listaItensVenda;
    } catch (SQLException er) {
        Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, er);
    } finally {
        connection.close();
        ps.close();
        rs.close();
    }
    return null;
}

}

  • no MODEL

public class ItensVenda {
private int itensCodigo;
private int venCodigo;
private int prodCodigo;
private int venQuantidade;
private double venTotal;

/**
 * @return the itensCodigo
 */
public int getItensCodigo() {
    return itensCodigo;
}

/**
 * @param itensCodigo the itensCodigo to set
 */
public void setItensCodigo(int itensCodigo) {
    this.itensCodigo = itensCodigo;
}

/**
 * @return the venCodigo
 */
public int getVenCodigo() {
    return venCodigo;
}

/**
 * @param venCodigo the venCodigo to set
 */
public void setVenCodigo(int venCodigo) {
    this.venCodigo = venCodigo;
}

/**
 * @return the prodCodigo
 */
public int getProdCodigo() {
    return prodCodigo;
}

/**
 * @param prodCodigo the prodCodigo to set
 */
public void setProdCodigo(int prodCodigo) {
    this.prodCodigo = prodCodigo;
}

/**
 * @return the venQuantidade
 */
public int getVenQuantidade() {
    return venQuantidade;
}

/**
 * @param venQuantidade the venQuantidade to set
 */
public void setVenQuantidade(int venQuantidade) {
    this.venQuantidade = venQuantidade;
}

/**
 * @return the venTotal
 */
public double getVenTotal() {
    return venTotal;
}

/**
 * @param venTotal the venTotal to set
 */
public void setVenTotal(double venTotal) {
    this.venTotal = venTotal;
}

}

Alguem pode me ajudar a corrigir este erro?!

A exception é clara, e te da linha ainda
br.com.jairo.dao.ItensVendaDAO.getListaItensVenda(ItensVendaDAO.java:74)
Análise a mesma.

finally {
connection.close();
ps.close();
rs.close();
}

Imagina que vc foi abrir a connection e deu exception … tá fechando tudo, e nem sabe se tem a referência deles.
Se vc abriu a connection primeiro, fecha por último.
Não concatena sql, vc tá usando preparedStatement.
https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html
A doc é sua amiga :slight_smile:

1 curtida

Olá igomes!

Corrigiu o problema te agradeço, mas surgiu outro após esta correção.
O erro agora é o listado abaixo:

java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:504)
java.lang.Integer.parseInt(Integer.java:527)
br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:79)
br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:138)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

Abaixo segue o erro listado no log do NetBeans:

SEVERE: Servlet.service() for servlet VendaCRUD threw exception
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:79)
at br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:138)

Percebi que estou tentando passar algo nulo mas não consigo localizar onde!

Se você não começar a ler, nunca vai aprender.
Ele te a linha da EXCEPTION, mais a EXCEPTION que é bem clara por sinal.
Método processRequest linha 79

Olá igomes!

Fiz o seguinte fiz uma nova tabela no bd com alteração no índice de sequencial para não sequencial, pois acho que o erro está envolvido com isto. Irei testar hoje!

Olá Pessoal!

Realmente a solução fi encontrada no BD. Removi da tabela itensvenda a chave primaria de uma coluna sequencial e coloquei duas chaves primarias sendo uma o numero da NF e a outra codigo do produto (estas duas tambem são são Foreingkey.
As alterações das classes e paginas do sistema ficaram da seguinte forma:

Venda.jps:

<%–
Document : index
Created on : 28/11/2015, 12:56:05
Author : Jairo
–%>
<%@page import=“java.util.Iterator”%>
<%@page import=“java.util.List”%>
<%@page import=“java.sql.ResultSet”%>
<%@page import=“java.sql.PreparedStatement”%>
<%@page import=“java.sql.Connection”%>
<%@page import=“java.sql.SQLException”%>
<%@page import=“java.sql.DriverManager”%>
<%@taglib tagdir="/WEB-INF/tags" prefix=“tagsJairo”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
tagsJairo:VerificaSessao/
<c:import url=“cabecalho.jsp”/>

Nova Venda de Mercadorias

Codigo da Venda " /> Data da Venda
Codigo do Cliente
Valor Total da Venda >

Produtos da Venda

Codigo da Venda " readonly="readonly"/>
Codigo do Produto
Quantidade Total " /> <% if (request.getAttribute("sessaolistaItensVenda") != null) { java.util.List listaItensVenda = (java.util.List) request.getAttribute("sessaolistaItensVenda");
            out.println("<table border='1'>");

            out.println("<tr><td>Numero da NF</td><td>Codigo do Produto</td><td>Quantidade</td><td>Total</td></tr>");

            for (java.util.Iterator iterator = listaItensVenda.iterator(); iterator.hasNext();) {
                br.com.jairo.modelo.ItensVenda itensVenda = (br.com.jairo.modelo.ItensVenda) iterator.next();

                out.println("<tr>");
                int codigoVenda = itensVenda.getVenCodigo();
                int codigoProduto = itensVenda.getProdCodigo();
                int quantidade = itensVenda.getVenQuantidade();
                double total = itensVenda.getVenTotal();
                out.println("<td>" + codigoVenda + "</td>");
                out.println("<td>" + codigoProduto + "</td>");
                out.println("<td>" + quantidade + "</td>");
                out.println("<td>" + total + "</td>");

                out.println("</tr>");
            }
            out.println("</table>");
        }

%>

<c:import url=“rodape.jsp”/>

ItensVendaDAO:
/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.jairo.dao;

import br.com.jairo.fabrica.ConnectionFactory;
import br.com.jairo.modelo.ItensVenda;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*

  • @author Jairo
    */
    public class ItensVendaDAO {

    private Connection connection;

    public ItensVendaDAO() {
    this.connection = new ConnectionFactory().getConnection();
    }

    //metodo para incluir novo item da venda
    public void novoItemVenda(ItensVenda itensVendas) throws SQLException {
    String sql = “insert into itensvenda values(?,?,?,?)”;
    PreparedStatement ps = null;
    try {
    ps = connection.prepareStatement(sql);
    ps.setInt(1, itensVendas.getVenCodigo());
    ps.setInt(2, itensVendas.getProdCodigo());
    ps.setInt(3, itensVendas.getVenQuantidade());
    ps.setDouble(4, itensVendas.getVenTotal());
    //System.out.println(“SQL Novo Item Venda->”+ps.toString());
    ps.execute();
    } catch (SQLException ex) {
    Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
    //connection.close();
    //ps.close();
    }
    }

    //metodo que retorna a lista de itens vendidos do banco de dados
    public List getListaItensVenda(int codigoVenda) throws SQLException {
    String sql = "select * from itensvenda where vencodigo = "+codigoVenda;
    PreparedStatement ps = null;
    ResultSet rs = null;
    List listaItensVenda = new ArrayList();
    try {
    ps = connection.prepareStatement(sql);
    rs = ps.executeQuery();
    while (rs.next()) {
    ItensVenda itensVenda = new ItensVenda();
    itensVenda.setVenCodigo(rs.getInt(“vencodigo”));
    itensVenda.setProdCodigo(rs.getInt(“prodcodigo”));
    itensVenda.setVenQuantidade(rs.getInt(“venquantidade”));
    itensVenda.setVenTotal(rs.getDouble(“ventotal”));
    listaItensVenda.add(itensVenda);
    }
    return listaItensVenda;
    } catch (SQLException er) {
    Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, er);
    } finally {
    // connection.close();
    // ps.close();
    // rs.close();
    }
    return null;
    }
    }

Servlet:

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.jairo.controle;

import br.com.jairo.dao.ItensVendaDAO;
import br.com.jairo.dao.VendaDAO;
import br.com.jairo.modelo.ItensVenda;
import br.com.jairo.modelo.Vendas;
import java.io.IOException;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*

  • @author Jairo
    */
    public class VendaCRUD extends HttpServlet {

    /**

    • Processes requests for both HTTP GET and POST methods.

    • @param request servlet request

    • @param response servlet response

    • @throws ServletException if a servlet-specific error occurs

    • @throws IOException if an I/O error occurs
      */
      protected void processRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException, ParseException, SQLException {

      RequestDispatcher rd = null;
      String venCodigo = request.getParameter(“vencodigo”);
      String venData = request.getParameter(“vendata”);
      String cliCodigo = request.getParameter(“clicodigo”);
      String venValorTotal = request.getParameter(“venvalortotal”);

      Vendas vendas = new Vendas();

      if (venCodigo != null) {
      vendas.setVenCodigo(Integer.parseInt(venCodigo));
      }

      DateFormat formatoData = new SimpleDateFormat(“dd/MM/yyyy”);
      if (venData != null) {
      Date venDataFormatada = formatoData.parse(venData);
      vendas.setVenData(venDataFormatada);
      }

      if (cliCodigo != null) {
      vendas.setCliCodigo(Integer.parseInt(cliCodigo));
      }

      if (venValorTotal != null) {
      vendas.setVenValorTotal(Double.parseDouble(venValorTotal));
      }

      VendaDAO vendaDAO = new VendaDAO();

      ItensVenda itensVenda = new ItensVenda();

      String codigoVenda = request.getParameter(“vencodigo”);
      String prodCodigo = request.getParameter(“prodcodigo”);
      String venQuantidade = request.getParameter(“venquantidade”);
      String venTotal = request.getParameter(“ventotal”);

      if (codigoVenda != null) {
      itensVenda.setVenCodigo(Integer.parseInt(codigoVenda));
      }

      if (prodCodigo != null) {
      itensVenda.setProdCodigo(Integer.parseInt(prodCodigo));
      }

      if (venQuantidade != null) {
      itensVenda.setVenQuantidade(Integer.parseInt(venQuantidade));
      }

      if (venTotal != null) {
      itensVenda.setVenTotal(Double.parseDouble(venTotal));
      }

      ItensVendaDAO itensVendaDAO = new ItensVendaDAO();

      //verificar qual é a ação
      String acao = request.getParameter(“acao”);
      if (acao == null) {
      acao = “listarVenda”;
      }

      if (acao.equals(“alterar”)) {
      //clienteDAO.alteraCliente(clientes);
      //rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
      } else if (acao.equals(“excluir”)) {
      //clienteDAO.excluiCliente(clientes);
      //rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
      } else if (acao.equals(“novo”)) {
      vendaDAO.novaVenda(vendas);
      request.setAttribute(“sessaoUltimoRegistroVenda”, vendaDAO.ultimoRegistro());
      rd = request.getRequestDispatcher("/venda.jsp");
      } else if (acao.equals(“novoItemVenda”)) {
      itensVendaDAO.novoItemVenda(itensVenda);
      List listaItensVenda = itensVendaDAO.getListaItensVenda(Integer.parseInt(codigoVenda));
      request.setAttribute(“sessaolistaItensVenda”, listaItensVenda);
      //request.setAttribute(“sessaoUltimoRegistroVenda”, vendaDAO.ultimoRegistro());
      rd = request.getRequestDispatcher("/venda.jsp");
      }
      rd.forward(request, response);
      }

    //
    /**

    • Handles the HTTP GET 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 doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      try {
      processRequest(request, response);
      } catch (ParseException ex) {
      Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
      } catch (SQLException ex) {
      Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
      }
      }

    /**

    • Handles the HTTP POST 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 {
      try {
      processRequest(request, response);
      } catch (ParseException ex) {
      Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
      } catch (SQLException ex) {
      Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
      }
      }

    /**

    • Returns a short description of the servlet.
    • @return a String containing servlet description
      */
      @Override
      public String getServletInfo() {
      return “Short description”;
      }//
      }

ItensVendaModel:

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.jairo.modelo;

/**
*

  • @author Jairo
    */
    public class ItensVenda {
    private int venCodigo;
    private int prodCodigo;
    private int venQuantidade;
    private double venTotal;

    /**

    • @return the venCodigo
      */
      public int getVenCodigo() {
      return venCodigo;
      }

    /**

    • @param venCodigo the venCodigo to set
      */
      public void setVenCodigo(int venCodigo) {
      this.venCodigo = venCodigo;
      }

    /**

    • @return the prodCodigo
      */
      public int getProdCodigo() {
      return prodCodigo;
      }

    /**

    • @param prodCodigo the prodCodigo to set
      */
      public void setProdCodigo(int prodCodigo) {
      this.prodCodigo = prodCodigo;
      }

    /**

    • @return the venQuantidade
      */
      public int getVenQuantidade() {
      return venQuantidade;
      }

    /**

    • @param venQuantidade the venQuantidade to set
      */
      public void setVenQuantidade(int venQuantidade) {
      this.venQuantidade = venQuantidade;
      }

    /**

    • @return the venTotal
      */
      public double getVenTotal() {
      return venTotal;
      }

    /**

    • @param venTotal the venTotal to set
      */
      public void setVenTotal(double venTotal) {
      this.venTotal = venTotal;
      }
      }

Com estas alterações o sistema funcionou perfeitamente!