java.lang.NumberFormatException: null

Galera estou fazendo uma app para Java Web , quando mando os dados para cadastro aparece seguinte msg
Status 500 error
com a msg java.lang.NumberFormatException: null

e aki esta o servlet que cadastra

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);

    Exame exame;

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

    if (cmd.equalsIgnoreCase("cadastro")) {
        PrintWriter out = response.getWriter();

        // pegando os parâmetros do request
        int codExame = Integer.parseInt(request.getParameter("codExame"));
        String nome = request.getParameter("name");
        String tipo = request.getParameter("type");
        float valor = Float.parseFloat(request.getParameter("price"));
        exame = new Exame(codExame, nome, tipo, valor);
        try {
            ExameDAO.getInstancia().salvar(exame);
        } catch (SQLException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        }

A pagina de cadastro com extensão jsp esta :

${action} Cadastro Exame

    <form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">
        <table>
            
        Código:<input   type="text" name="id" value="${exame.codExame}"<br />
        Nome:<input  type="text" name="name" value="${exame.nome}" <br/>
        Tipo :
        <select name="type" <c:if test="${exame == 'Excluir'}">   </c:if>>
          <option value="${exame.tipo}" <selected></c:if>USG</option>
         <option value="${exame.tipo}" <selected></c:if>RX</option>
         <option value="${exame.tipo}" <selected></c:if>RM</option>
        </select><br/>
        
        Valor <input  type="text" name="price" value="${exame.valor}" <br />
        <input type="submit" name="btnSalvar" value="Confirmar" />
    </form>

Não há nenhuma TAG com id="codExame", então o request.getParameter("codExame") retorna null.

no caso eu tenho que coloar id no request ?

No caso eu teria que colocar id em todos eles

ficou assim :
Servelet:
String cmd = request.getParameter(“cmd”);

    if (cmd.equalsIgnoreCase("cadastro")) {
        PrintWriter out = response.getWriter();

        // pegando os parâmetros do request
        int codExame = Integer.parseInt(request.getParameter("id"));
        String nome = request.getParameter("name");
        String tipo = request.getParameter("type");
        float valor = Float.parseFloat(request.getParameter("price"));
        exame = new Exame(codExame, nome, tipo, valor);
        try {
            ExameDAO.getInstancia().salvar(exame);
        } catch (SQLException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        }

pagina de cadastro

    <form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">
        <table>
            
        Código:<input   type="text" name="id" value="${exame.codExame}"<br />
        Nome:<input  type="text" name="name" value="${exame.nome}" <br/>
        Tipo :
        <select name="type" <c:if test="${exame == 'Excluir'}">   </c:if>>
          <option value="${exame.tipo}" <selected></c:if>USG</option>
         <option value="${exame.tipo}" <selected></c:if>RX</option>
         <option value="${exame.tipo}" <selected></c:if>RM</option>
        </select><br/>
        
        Valor <input  type="text" name="price" value="${exame.valor}" <br />
        <input type="submit" name="btnSalvar" value="Confirmar" />
    </form>

e continua dando o mesmo erro

Talvez seu problema seja com o HTML.

Nas linhas:

Código:<input   type="text" name="id" value="${exame.codExame}"<br />

Nome:<input  type="text" name="name" value="${exame.nome}" <br/>

Valor <input  type="text" name="price" value="${exame.valor}" <br />

Vc não fechou as tags input. Teria que ficar assim:

Código:<input   type="text" name="id" value="${exame.codExame}"><br />

Nome:<input  type="text" name="name" value="${exame.nome}"><br/>

Valor <input  type="text" name="price" value="${exame.valor}"><br />

E tem também aquela tag table perdida ali. E tem aquelas tags <selected> que, na verdade, deveriam ser atributos e não tags (eu acho).

Aí vc usou <c:if> e </c:if>, não sei se vc usou certo porque nunca mexi direito com JSP, mas é bom dar uma revisada nelas pra ver se estão corretas.

O table era que eu ia arrumar o layout e acabei não mechendo arrumei as tag como vc falou e nada cadastra no banco,não ta dando erro mas o link fica assim:
localhost:8080/Diagnostico/ManterExame?cmd=cadastro

as paginas estao jsp:

${cmd} Cadastro Exame

    <form name="cadastro" action="ManterExame?cmd=${cmd}cadastro" method="post">
    
            
        Código:<input   type="text" name="codExame" value="${exame.codExame}"><br />
        
        Nome:<input  type="text" name="nome" value="${exame.nome}"><br> <br/>
        
        Tipo :
        <input name="tipo" type="text" value="${exame.tipo}"><br></br>
   Valor <input  type="text" name="valor" value="${exame.valor}" ><br />
   <input type="submit" name="btnSalvar" value="Confirmar"> 
    </form>
</body>

e o servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);

    Exame exame;

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

    if (cmd.equalsIgnoreCase("cmd")) {
        PrintWriter out = response.getWriter();

        // pegando os parâmetros do request
        int codExame = Integer.parseInt(request.getParameter("codExame"));
        String nome = request.getParameter("nome");
        String tipo = request.getParameter("tipo");
        float valor = Float.parseFloat(request.getParameter("valor"));
        exame = new Exame(codExame, nome, tipo, valor);
        try {
            ExameDAO.getInstancia().salvar(exame);
        } catch (SQLException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
        }

    } 

e a classe dao
public class ExameDAO {
private static final ExameDAO instancia= new ExameDAO() ;

public static ExameDAO getInstancia() {
    return instancia;
}


public void salvar(Exame exame) throws SQLException, ClassNotFoundException {
    Connection conn = null;
    PreparedStatement st = null;
    
    try {
        conn = ConnectionSingleton.getInstance().getConnection();
        st = conn.prepareStatement("INSERT INTO exame (codExame, nome, tipo,valor) VALUES (?, ?, ?,?)");
        st.setInt(1, exame.getCodExame());
        st.setString(2,exame.getNome());
        st.setString(3,exame.getTipo());
        st.setFloat(4, exame.getValor());
        st.execute();
    }  catch(SQLException e) {
            throw e;
    } finally {
       conn.close();
       st.close();
    }
}
porem nao insere nada no banco e eu preciso desse trabalho para amnha e tenho que implementar  mais 10 padroes

Na primeira versão vc fez:

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

if (cmd.equalsIgnoreCase("cadastro")) {
    /* ... */
}

E no formulário:

<form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">

Nesse último código vc mudou para:

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

if (cmd.equalsIgnoreCase("cmd")) {
    /* ... */
}

e

<form name="cadastro" action="ManterExame?cmd=${cmd}cadastro" method="post">

A primeira versão parece fazer mais sentido. Tenta voltar pra ela e ver se resolve algo.

a primeira versao ta dando null poit excption
nao esta cadastrando nada mesmo quando nao da erro

Pensei que estava dando null pointer devido a má formação do HTML.

Na última versão vc consertou o HTML, mas fez outras modificações que parecem esquisitas.

Por exemplo, o parametro cmd nunca vai ser igual a “cmd”, logo, não entrará naquele if que mostrei no seu novo trecho.

ok vou ver se começo outro projeto