[RESOLVIDO]Servlet retornando um valor nulo

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:


Screenshot_3

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

}

idProduto e IdProduto são duas coisas diferentes…

2 curtidas

Meu amigo pmlm, muito obrigado, estou até com vergonha rs!

Que coisa ridícula, por um siples detalhe perdemos muito tempo… mas dentro do olho do furacão não enxergamos

Muito obrigado pelo seu olho clinico…

1 curtida

É normal estarmos tão concentrados num problema complexo que não vemos o simples