Servlet com JSP não funciona [Resolvido]

Olá pessoal!

Criei uma aplicação com JSP e servlet, mas ao clicar nos botões de incluir produto, alterar produto e excluir produto, nada acontece, segue o código:

Classe incProduto.java

<div>
       <form name="form1" method="post" action="/ControlePdt">
   
   <p class="esquerda">Descri&ccedil;&atilde;o <input
       type="text"
       name="descricao"
       size="40"
       maxlength="40"
        value="${ param.descricao}"></p>
      Quantidade <input
       type="text"
       name="quantidade"
       size="5"
       maxlength="5"
       value="${param.quantidade }">
       <p class="esquerda">Estoque <input
       type="text"
       name="estoque"
       size="5"
       maxlength="5"
       value="${param.estoque }"></p>

   <input type="hidden" name="cmd" value="inc" />
   
   </form>

   <div>
      <button
      onclick="document.getElementById('form1').submit();">Incluir Produto</button>
      <button
      onclick="document.location.href='cadastro.jsp';">Retornar</button>

O servlet ControlePdt.java

public class ControlePdt extends HttpServlet {
  
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         /* Instancia objeto de ProdutoDao */
      ProdutoDAO produtoDAO = new ProdutoDAO();

      /* Instancia objeto de modelo de Produto */
      Produto produto = new Produto();

      /* Cria objeto despachante de requisição */
      RequestDispatcher rd = null;

      /*================================================================
       * Primeira parte: executa o método validar, através de uma estru-
       * tura "try-catch-finally", para verfificar se os dados enviados
       * estão corretos. Se estiver tudo OK (validar retornou "true",
       * executa o if do try. Caso contrário, executa o catch, cria
       * ojeto com mensagem de erro e executa de novo a view que chamou
       * esta classe controladora.
       =================================================================*/

      try {
        if ( validar( request )){

            //produto.setCodigo(Integer.parseInt(request.getParameter("codigo")));

            produto.setDescricao(request.getParameter("descricao"));

            produto.setQuantidade(Integer.parseInt(
            request.getParameter("quantidade")));

            produto.setEstoque(Integer.parseInt(request.getParameter("estoque")));

            /* Só coloca valor em codigo se for alteraçào ou
               exclusão */
            if ( request.getParameter("codigo") != null )
                produto.setCodigo(Integer.parseInt(
                      request.getParameter("codigo")));
          }
      }
      catch ( ExcecaoOblivion ex){
        /* Se entrou no catch, algum erro aconteceu (ver método
          validar ao final desta classe). A seguir, é criado o
          objeto "erro", contendo a exceção lançada no método validar. */
        request.setAttribute( "erro", ex);

        /* Verifica qual formulário acionou esta classe, e o executa de
           novo, desta vez enviando a mensagem de erro */
        if ( request.getParameter("cmd").equals("inc"))
           rd = request.getRequestDispatcher("/incProduto.jsp");
        else if ( request.getParameter("cmd").equals("alt"))
           rd = request.getRequestDispatcher("/altProduto.jsp");
        else if ( request.getParameter("cmd").equals("exc"))
           rd = request.getRequestDispatcher("/excProduto.jsp");

        /* Executa o formulário definido nos ifs acima */
        rd.forward( request , response);
      }

    /*===============================================================
     * Segunda parte: se chegar aqui, significa que nenhum erro
     * foi encontrado pelo método validar. Então, o programa verifica
     * qual a ação que deve ser executada (inclusão, alteração ou
     * exclusão), testando o campo invisível de formulário enviado
     * (cmd).
     ================================================================*/

     if ( request.getParameter("cmd").equals("inc")) {
         /*
          * try-catch-finally de INCLUSÃO (usando método incluir
          * do objeto produtoDAO).
         */
         rd = request.getRequestDispatcher("/incProduto.jsp");
         try {
            produtoDAO.incluir(produto);
            Mensagem mens = new Mensagem();
            mens.setMensagem("Inclusão realizada com sucesso!");
            request.setAttribute( "msg" , mens );
         }
         catch (ExcecaoOblivion ex)  {
            request.setAttribute("erro" , ex );
         }
         finally {
           rd.forward( request , response);
         }
     }


     if ( request.getParameter("cmd").equals("alt")) {
        /*
         * try-catch-finally de ALTERAÇÃO (usando método alterar
         * do objeto produtoDAO).
        */
        rd = request.getRequestDispatcher("/altProduto.jsp");
        try {
            produtoDAO.alterar(produto);
            Mensagem mens = new Mensagem();
            mens.setMensagem("Alteração realizada com sucesso!");
            request.setAttribute( "msg" , mens );
        }
        catch (ExcecaoOblivion ex)  {
            request.setAttribute("erro" , ex );
        }
        finally {
            rd.forward( request , response);
        }
     }

     if ( request.getParameter("cmd").equals("exc")) {
        /*
         * try-catch-finally de EXCLUSÃO (usando método excluir
         * do objeto produtoDAO).
        */
        rd = request.getRequestDispatcher("/excProduto.jsp");
        try {
            produtoDAO.excluir(produto);
            Mensagem mens = new Mensagem();
            mens.setMensagem("Exclusão realizada com sucesso!");
            request.setAttribute( "msg" , mens );
        }
        catch (ExcecaoOblivion ex)  {
            request.setAttribute("erro" , ex );
        }
        finally {
            rd.forward( request , response);
        }
     }

     /* Fim do método processRequest */

    }
    private boolean validar( HttpServletRequest request )
        throws ExcecaoOblivion {

    /*===================================================================
     * Este método verifica se houve algum erro nos dados enviados para
     * a classe controladora. Toda classe controladora terá este método.
     * Cada campo deve ser testado na ordem em que aparece na view. Alguns
     * campos podem ter mais de um teste.
     * Se nenhum erro acontecer, o método retorna "true". Em caso de erro,
     * uma exceção do tipo "excecaoOblivion" é lançada.
     * ATENÇÃO: este método é chamado pelo "try-catch-finally" do método
     * processRequest desta classe (ver acima).
     ====================================================================*/

        if ( request.getParameter("descricao").length() == 0 )
        throw new ExcecaoOblivion("Descrição do produto não pode ficar em branco",0);

    try {
        Integer.parseInt(request.getParameter("quantidade"));
    }
    catch (NumberFormatException ex){
        throw new
        ExcecaoOblivion("Quantidade só pode receber valores númericos",0);
    }



         if ( request.getParameter("quantidade").length() <= 0 )
        throw new ExcecaoOblivion("Quantidade deve ser maior que zero",1);

    try {
        Integer.parseInt(request.getParameter("quantidade"));
    }
    catch (NumberFormatException ex){
        throw new
        ExcecaoOblivion("Quantidade só pode receber valores númericos e acima de zero",1);
    }

    if ( Integer.parseInt( request.getParameter("estoque")) < 1)
        throw new
        ExcecaoOblivion("Estoque deve ser maior que zero",2);
     try {
        Integer.parseInt(request.getParameter("estoque"));
    }
    catch (NumberFormatException ex){
        throw new
        ExcecaoOblivion("Estoque deve ser acima de zero",2);
    }

    return true;
}

O web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>controle.Login</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ControlePdt</servlet-name>
        <servlet-class>controle.ControlePdt</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ControlePdt</servlet-name>
        <url-pattern>/ControlePdt</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.htm</welcome-file>
        </welcome-file-list>
    </web-app>

Me disseram que poderia ser algum conflito devido ao meu navegador que é o Firefox 3.0.15, o que eu acho estranho já que é um browser que respeita as normas w3c.

Alguém poderia dar uma força?
Obrigado desde já pela ajuda.

Quando vc clica em Incluir Produto o servlet é acionado?
Já tentou usar o <input type=“submit” no lugar de

Salve Furutani!

Segui a sua dica e deu certo! Porém não alterando o botão de incluir mas colocando o seguinte código dentro do :

<script type="submit">
onload = init;
</script>

O meu método de inclusão da classe produtoDAO ficou desta forma:

public void incluir(Produto produto) throws ExcecaoOblivion {
        try {        
            Connection db = Conexao.getConnection();
            PreparedStatement st =
                db.prepareStatement("INSERT INTO produto (descricao,quantidade,estoque) values(?,?,?)");
         
            st.setString(1, produto.getDescricao());
            st.setInt(2, produto.getQuantidade().intValue());
            st.setInt(3, produto.getEstoque().intValue());
            st.executeUpdate();
            st.close();
        } catch (SQLException ex) {     
            if (ex.getSQLState().equals("23505")) {
                throw new ExcecaoOblivion("Erro de inclusão: produto duplicado.",0);
            } else {
                throw new ExcecaoOblivion("Erro na inclusão do produto. Código " +
                        ex.getSQLState() + 
                        "\nDescricao " + 
                        ex.getMessage(),0);
            }
        }

    }

Deixei o código do produto com autoincremento.

E agora uma dica que eu descobri sozinho e que talvez muita gente não tenha percebido, o Netbeans possui uma aba inferior chamada “tarefas”, lá ele mostrou o seguinte:

Conforme é mostrado na imagem, fui em outro projeto e vi que o Netbeans avisou que faltava o atributo type, o mesmo estava acontecendo no meu projeto atual, seguindo a sua dica resolvi o problema.

Obrigado pela ajuda!

Abraço