Erro ao efetuar um cadastro pelo servlet

Nesse código é necessário que ao inserir os dados e pressionar o botão de efetuar cadastro na aba de cadastro, seja enviado esses dados para o bd que criei responsável por armazenar esses dados, contudo está dando esse erro e com isso não efetua o cadastro, do que se trata esse erro e como posso corrigi-lo ?
image

O html principal é esse

Mercearia

Tela Inicial

	<a href= "http://localhost:8080/TesteWeb/CadastrarProduto.html">CadastroDeProdutos</a><br>
	<br>
	
	<a href="http://localhost:8080/TesteWeb/ListarProduto">Listar Produto</a>
</html

O da tela de Cadastro é esse abaixo:

CadastroDeProdutos

Cadastrar Produtos


Descrição:

Valor do Custo:

Valor de Venda:

Garantia(Em Meses):

Estoque:

Código de Barras:

Nome do Vendedor:
	<br>
	<br><input type="submit" value="Efetuar Cadastro">
</form>

E o executor do servlet é esse:
public class CadastrarProduto extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter gravador = resp.getWriter();
Produto produto = new Produto();
Connection conexao = ConnectionFactory.getConnection();

	// Descrição
	if (req.getParameter("descricaoDoProduto").isEmpty()) {

	} else {
		produto.setDescricao(req.getParameter("descricaoDoProduto").trim());
	}

	// Valor do custo
	if (req.getParameter("valorDoCusto").isEmpty()) {

	} else {
		try {
			produto.setValorDeCusto(Double.parseDouble(req.getParameter("valorDoCusto")));
		} catch (NumberFormatException erro) {

		}
	}

	// Valor de Venda
	if (req.getParameter("valorDeVenda").isEmpty()) {

	} else {
		try {
			produto.setValorDeVenda(Double.parseDouble(req.getParameter("valorDeVenda")));
		} catch (NumberFormatException erro) {

		}

	}

	// Garantia
	if (req.getParameter("garantia").isEmpty()) {

	} else {
		try {
			produto.setGarantia(Integer.parseInt(req.getParameter("garantia").trim()));
		} catch (NumberFormatException erro) {

		}
	}

	// Estoque
	if (req.getParameter("estoque").isEmpty()) {

	} else {
		try {
			produto.setEstoque(Integer.parseInt(req.getParameter("estoque").trim()));
		} catch (NumberFormatException erro) {

		}

	}

	// Codigo de barras
	if (req.getParameter("codigoDeBarras").isEmpty()) {

	} else {
		produto.setCodigoDeBarras(req.getParameter("codigoDeBarras").trim());
	}

	// Nome do Vendedor
	if (req.getParameter("nomeDoVendedor").isEmpty()) {

	} else {
		produto.setNomeDoVendedor(req.getParameter("nomeDoVendedor").trim());
	}
	
	try {
		ProdutoDAO produtodao = new ProdutoDAO(conexao);
		produtodao.cadastrar(produto);
		System.out.println("Produto inserido com sucesso");
		conexao.close();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(null, e.getStackTrace(), null, JOptionPane.ERROR_MESSAGE);

	}

	// Código em html
	gravador.println("<html>");
	gravador.println("<head><title>Produto Cadastrado</title></head>");
	gravador.println("<body>");
	gravador.println("<h1>Produto Cadastrado Com Sucesso</h1><br><br/>");
	gravador.println("<a href=http://localhost:8080/TesteWeb/Mercearia.html>Voltar</a><br>");
	gravador.println("</body>");
	gravador.println("</html>");

}

}

No arquivo web.xml está da seguinte forma:

terceiro servlet.CadastrarProduto
<servlet-mapping>
	<servlet-name>terceiro</servlet-name>
	<url-pattern>/cadastra_produto</url-pattern>
</servlet-mapping>

A exceção está acontecendo dentro do método cadastrar do ProdutoDAO posta o código.

Outra coisa, você não deve usar JOptionPane em uma aplicação Web, você está ciente que esse código roda no servidor?
Não vai adiantar nada abrir telas no servidor, o cliente não vai ver.

Esse JOption eu coloquei apenas para poder ver que erro que estava dando, não sabia que rodava no servidor, obg por avisar.

O código do ProdutoDAO é o seguinte:
public class ProdutoDAO {
private Connection conexao;

public ProdutoDAO(Connection conexao) {
	this.conexao = conexao;
}

public void cadastrar(Produto produto) throws SQLException {
	String sql = "insert into produto (Descricao, ValCusto, ValVenda, Garantia, Estoque, CodigoDeBarras, NomeDoVendedor) values(?,?,?,?,?,?,?) ";
	PreparedStatement comando = conexao.prepareStatement(sql);
	comando.setString(1, produto.getDescricao());
	comando.setDouble(2, produto.getValorDeCusto());
	comando.setDouble(3, produto.getValorDeVenda());
	comando.setInt(4, produto.getGarantia());
	comando.setInt(5, produto.getEstoque());
	comando.setString(6, produto.getCodigoDeBarras());
	comando.setString(7, produto.getNomeDoVendedor());
	
	comando.execute();
}

}

No mysql o bd está da seguinte forma:
image

Experimenta utilizar o método executeUpdate().