Botão Servlet

Bom dia.

Estou com uma dúvida, seguinte:

Tenho linkado com minha aplicação um servlet que já está funcionando, porém estou com um problema…Se eu clico em buscar, ele busca normal, pois é a primeira coisa que o servlet faz…mas adicionei mais um botão, CADASTRAR.

Como eu recebo o valor deste botão, para colocar um IF, por exemplo.

Coloquei assim, a ID do meu botão é cadast.

String receb = request.getParameter("cadast");
        if(receb != null)
        {
        try{
         String id = request.getParameter("txtId");
         String nome = request.getParameter("txtNome");
         String fone = request.getParameter("txtFone");
                HttpSession session = request.getSession();
                session.setAttribute("txtId", id);
                session.setAttribute("txtNome", nome);
                session.setAttribute("txtFone", fone);
                
                UsuarioControle usu = new UsuarioControle();
                String cont = usu.create(Integer.parseInt(id),nome,fone);
                out.println("Foi inserido corretamente");
             

         }catch (Exception e) {
            RequestDispatcher rd = request.getRequestDispatcher("erro.jsp");
            rd.forward(request, response);
         } finally {
            out.close();
        }
        }

e ai brother…

só vc passar um parâmetro a mais quando clicar no botão cadastrar.
algo assim:

Servlet.metodo?"cadast"=valorParametro 

se tiver com dúvida, passa ai o código do botão cadastrar.

Esse é o index.jsp.

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>AGENDA</title>
    </head>
    <body>
        <h1>** Agenda de Contatos **</h1>
        <form method="POST" action="http://localhost:8080/AgendaWeb/AgendaControl" id="forme">
            ID  : <input type="text" name ="txtId" id ="txtId"> <BR>
            <!-- -->
            Nome : <input type="text" name ="txtNome" id ="txtNome"> <br>
            Telefone: <input type ="text" name="txtFone" id ="txtFone"> <br>
            <!-- -->
            <input type="submit" value="CADASTRAR" name="cadastrar" id="cadast">
            <input type="submit" value="BUSCAR" name ="buscar" id ="buscar">
            <input type="reset" value="CANCELAR">
        </form>
    </body>
</html>

E esse é o Servlet:

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

package control;

import com.sun.net.httpserver.HttpContext;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;


import model.Contato;

/**
 *
 * @author professor
 */
@WebServlet(name="AgendaControl", urlPatterns={/*"http://localhost:8080/AgendaWeb*/"/AgendaControl"})
public class AgendaControl 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 {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();
        //Try de inserção no Banco...
        //String receb = request.getParameter("cadast");
       
        /*try{
         String id = request.getParameter("txtId");
         String nome = request.getParameter("txtNome");
         String fone = request.getParameter("txtFone");
                HttpSession session = request.getSession();
                session.setAttribute("txtId", id);
                session.setAttribute("txtNome", nome);
                session.setAttribute("txtFone", fone);
                
                UsuarioControle usu = new UsuarioControle();
                String cont = usu.create(Integer.parseInt(id),nome,fone);
                out.println("Foi inserido corretamente");
             

         }catch (Exception e) {
            RequestDispatcher rd = request.getRequestDispatcher("erro.jsp");
            rd.forward(request, response);
         } finally {
            out.close();
        }
        */
      //Fim do try de inserção...
        try {
            String id = request.getParameter("txtId");

            HttpSession session = request.getSession();
            session.setAttribute("txtId", id);

            UsuarioControle usu = new UsuarioControle();
            ArrayList<Contato> contato = null;

            if(id != null)
            {
               contato = usu.selectId(id);
            }
            if (contato != null) {
                /* TODO output your page here*/
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet Agenda</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1> Contato: </h1>");
                out.println("<p> ");
                for(Contato cont : contato)
                {
                    out.println("ID   = " + cont.getId() + "<BR>");
                    out.println("NOME = " + cont.getNome() + "<BR>");
                    out.println("FONE = " + cont.getFone() + "<BR>");
                }
                out.println("<a href='index.jsp'>Voltar</a>");
                out.println("</body>");
                out.println("</html>");
            } else {
                //out.println("Contato Não Encontrado");
                RequestDispatcher rd = request.getRequestDispatcher("erro.jsp");
                rd.forward(request, response);
            }

        } catch (Exception e) {
            /* TODO output your page here*/
            RequestDispatcher rd = request.getRequestDispatcher("erro.jsp");
            rd.forward(request, response);


        } finally {
            out.close();
        }
    } 

    // <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 {
        processRequest(request, response);
    } 

    /** 
     * 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 {
        processRequest(request, response);
    }

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

}

cria uma função em javascript para passar esse parâmetro para sua servlet.
similar a que esse cara usa aqui:

http://www.guj.com.br/posts/list/126243.java

repara no código em javascript dele q antes de submeter o formulário ele passa dois parâmetros para sua servlet.

não entendi muito bem ali…
Por exemplo, eu quero chamar um método que eu criei dentro da classe servlet…
o método criar, por exemplo…

<form action="http://localhost:8080/AgendaWeb/AgendaControl" method="post">   
<input name="Button" tabindex="40" type="button" class="botao" value="Finalizar Tarefa" onclick="cria(this);" >   
</form> 

No agendaControl eu tenho um método Criar, com as infos.:

String id = request.getParameter("txtId");
         String nome = request.getParameter("txtNome");
         String fone = request.getParameter("txtFone");
                HttpSession session = request.getSession();
                session.setAttribute("txtId", id);
                session.setAttribute("txtNome", nome);
                session.setAttribute("txtFone", fone);
                
                UsuarioControle usu = new UsuarioControle();
                String cont = usu.create(Integer.parseInt(id),nome,fone);
                out.println("Foi inserido corretamente");
             

         }catch (Exception e) {
            RequestDispatcher rd = request.getRequestDispatcher("erro.jsp");
            rd.forward(request, response);
         } finally {
            out.close();
        }

Como faria?

Então vamos lá:

Primeiro vc cria a função em javascript (põe na sua jsp antes do código html)

<script> function cadastrar(){ var frm = document.forms[0]; frm.action = 'command?cmd=cadastrar'; frm.submit(); } </script>
no botao cadastrar vc inclui no onclick essa funcao:

<input name="Button" type="button" value="Cadastrar" onclick="cadastrar();" > 

ai na sua servlet vc consegue pegar o valor do parâmetro cmd

String receb = request.getParameter("cmd");  

Upei o arquivo no Megaupload…Pode dar uma olhada?

Não está dando certo…
Ele não executa nada com o javascript e agora não faz mas nada.

http://www.megaupload.com/?d=QNO0H5PD