grazie, ora vedo che posso fare. Io avevo risolto considerando eta come un stringa. Sembra funzionare tutto anche se non mi pare una soluzione ottimale...

Secondo te perchè ottengo 0 quando il campo età è vuoto?

forse c'entra qualcosa questo?

if (eta.length()!=0) query+="Eta="+eta+", ";//questa riga è nel file.jsp

//questo invece riguarda il metodo public boolean aggiornaPersona()

String etaa = Integer.toString(eta);//converte l'intero in stringa
if (etaa.length()!=0) query+="Eta="+eta+", ";

Il mio ragionamento è questo:
nella pagina.jsp, request.getParameter("eta") mi ritorna una stringa.

IL mio metodo setEta invece ha come parametro d'ingresso un int.

qiundi io con l'if verifico che la stringa eta non sia vuota. Se NON è vuota allora la trasformo in int e la mando alla funziona setEta. Il codice che fa cio è questo:

if (request.getParameter("eta").length()!=0) {p.setEta(Integer.parseInt(request.getParameter("e ta")));}

Ovviamente nel caso in cui eta è vuota il metodo setEta non entra in funzione.

Nel metodo public boolean aggiornaPersona() invece cè il seguente codice:

String etaa = Integer.toString(eta);//converte l'intero in stringa
if (etaa.length()!=0) query+="Eta="+eta+", ";

credo che il problema sia qui..Se eta è vuoto lui converte l'int vuoto in zero..