Experts, tudo bem?
Poderiam me dar um auxilio?
Tenho um form em JPS onde se clica no botão editar ele envia o Id do Produto para que o usuário possa fazer a edição, mas na classe controller o valor é mostrado como null no console, já olhei linha a linha, até debuguei mas não encontrei o que esta errado, não aparece erro de compilação e execução, segue:

Código: compras.jsp
`<%@page import="com.mysql.cj.protocol.x.SyncFlushDeflaterOutputStream"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="model.JavaBeans"%>
<%@ page import="java.util.ArrayList"%>
<%
ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>) request.getAttribute("produtos");
/*
for (int i = 0; i < lista.size(); i++){
out.println(lista.get(i).getIdProduto());
out.println(lista.get(i).getNomeProduto());
out.println(lista.get(i).getQuantProduto());
out.println(lista.get(i).getPrecoProduto());
}
*/
%>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Lista de Compra</title>
<link rel="icon" href="imagens/buying_car.png">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Lista de compra</h1>
<a href="novo.html" class="Botao1">Novo produto</a>
<table id="tabela">
<thead>
<tr>
<th>Código do Produto</th>
<th>Nome do Produto</th>
<th>Quantidade do Produto</th>
<th>Preço do Produto</th>
<th>Opções</th>
</tr>
</thead>
<tbody>
<%
for (int i = 0; i < lista.size(); i++) {
%>
<tr>
<td><%=lista.get(i).getIdProduto()%></td>
<td><%=lista.get(i).getNomeProduto()%></td>
<td><%=lista.get(i).getQuantProduto()%></td>
<td><%=lista.get(i).getPrecoProduto()%></td>
<td><a href="select?idProduto=<%=lista.get(i).getIdProduto() %>" class="Botao1">Editar</a></td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>
`
Controller.java:
package controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.DAO;
import model.JavaBeans;
@WebServlet(urlPatterns = { “/Controller”, “/main”, “/insert”,"/select" })
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
DAO dao = new DAO();
JavaBeans produto = new JavaBeans();
public Controller() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getServletPath();
System.out.println(action);
dao.testeConexao();
if (action.equals("/main")) {
listarProdutos(request, response);
} else if (action.equals("/insert")) {
novoProduto(request, response);
}else if (action.equals("/select")) {
editarProduto(request, response);
}else {
response.sendRedirect("index.html");
}
}
// Listar produtos
protected void listarProdutos(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Criando um objeto que irá receber os dados JavaBeans
ArrayList<JavaBeans> lista = dao.listarProdutos();
//Encaminhar a lista ao documento compra.jsp
request.setAttribute("produtos", lista);
RequestDispatcher rd = request.getRequestDispatcher("compra.jsp");
rd.forward(request, response);
//teste de recebimento da lista
for (int i = 0; i < lista.size(); i++) {
System.out.println(lista.get(i).getIdProduto());
System.out.println(lista.get(i).getNomeProduto());
System.out.println(lista.get(i).getQuantProduto());
System.out.println(lista.get(i).getPrecoProduto());
}
}
// Novo produto
protected void novoProduto(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//teste de recebimento dos dados do formulario
System.out.println(request.getParameter("nome"));
System.out.println(request.getParameter("quantidade"));
System.out.println(request.getParameter("valor"));
//setar as variáveis JavaBeans
produto.setNomeProduto(request.getParameter("nome"));
produto.setQuantProduto(request.getParameter("quantidade"));
produto.setPrecoProduto(request.getParameter("valor"));
//invocar o método inserirProduto passando o objeto produto
dao.inserirProduto(produto);
//redirecionar para o documento compra.jsp
response.sendRedirect("main");
}
//Editar produto
protected void editarProduto(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//Recebimento do id do Produto que será ediatado
String idProduto = request.getParameter("IdProduto");
System.out.println("Id do Produto: "+ idProduto);
//Setar a variavel JavaBeans
produto.setIdproduto(idProduto);
//Executar o metodo selecionarProduto (DAO)
dao.selecionarProduto(produto);
//teste de recebimento
System.out.println(produto.getIdProduto());
System.out.println(produto.getNomeProduto());
System.out.println(produto.getQuantProduto());
System.out.println(produto.getPrecoProduto());
}
}
Dao.java:
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class DAO {
// Modulo de conexão //
// Parametros de conexão
private String driver = “com.mysql.cj.jdbc.Driver”;
private String url = “jdbc:mysql://127.0.0.1:3306/dbcompras?useTimezone=true&serverTimezone=UTC”;
private String user = “root”;
private String password = “1234567”;
// Método de conexão
private Connection conectar() {
Connection con = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
return con;
} catch (Exception e) {
System.out.println(e);
return null;
}
}
/** CRUD CREATE **/
public void inserirProduto(JavaBeans produto) {
String create = "insert into produtos (nomeProduto, quantProduto, precoProduto) values (?,?,?)";
try {
// abrir a conexão
Connection con = conectar();
// Preparar a query para a execução no banco de dados
PreparedStatement pst = con.prepareStatement(create);
// Substituir os parametros (?) pelo conteudo das variaveis JavaBeans
pst.setString(1, produto.getNomeProduto());
pst.setString(2, produto.getQuantProduto());
pst.setString(3, produto.getPrecoProduto());
// Executar a query
pst.executeUpdate();
// Encerrar a conexão com o banco de dados.
con.close();
} catch (Exception e) {
System.out.println(e);
}
}/** FIM CRUD CREATE **/
/** CRUD READ **/
public ArrayList<JavaBeans> listarProdutos() {
// Criando um objeto para acessar a classe JavaBeans
ArrayList<JavaBeans> produtos = new ArrayList<>();
String read = "SELECT * FROM produtos order by nomeProduto";
try {
// abrir a conexão
Connection con = conectar();
// preparar a query para a execução no banco de dados
PreparedStatement pst = con.prepareStatement(read);
ResultSet rs = pst.executeQuery();
// o laço será executado enquanto houver produto
while (rs.next()) {
// variaveis de apoio que recebem dados do banco
String idProduto = rs.getString(1);
String nomeProduto = rs.getString(2);
String quantProduto = rs.getString(3);
String precoProduto = rs.getString(4);
// populando o ArrayList
produtos.add(new JavaBeans(idProduto, nomeProduto, quantProduto, precoProduto));
}
con.close();
return produtos;
} catch (Exception e) {
System.out.println(e);
return null;
}
}/** FIM CRUD READ **/
/**CRUD UPDATE **/
//selecionar o produto
public void selecionarProduto(JavaBeans produto) {
String read2 = "select * from produtos where idProduto = ?";
try {
Connection con = conectar();
PreparedStatement pst = con.prepareStatement(read2);
pst.setString(1, produto.getIdProduto());
ResultSet rs = pst.executeQuery();
while(rs.next()) {
//setar as variaveis JavaBeans
produto.setIdproduto(rs.getString(1));
produto.setNomeProduto(rs.getString(2));
produto.setQuantProduto(rs.getString(3));
produto.setPrecoProduto(rs.getString(4));
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
}/**FIM CRUD UPDATE **/
// teste de conexão
public void testeConexao() {
try {
Connection con = conectar();
System.out.println(con);
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}


