En el artículo Recibir parametros en una JSP veíamos como de una forma sencilla podíamos leer los parámetros que le llegan a una JSP.
El .getParameter(«dato») y dejarlo en un String está muy bien. Pero, qué sucede si el dato que nos envían es un número (eso nos planteaba @Er)…
Pues la forma de hacerlo es muy sencilla. Para ello vamos a implementar una JSP a la cual le pasemos 2 datos numéricos, los cuales nos devolverá sumados.
Realmente la forma de recuperar los datos sigue siendo la misma que en Recibir parametros en una JSP. Es decir, utilizamos el método .getParameter(«dato»).
String datoUno = request.getParameter("dato1");
String datoDos = request.getParameter("dato2");
Lo que sucede es que tenemos que convertir los datos de tipo String en tipo numérico, por ejemplo en int. Para ello nos apoyaremos en la clase Integer y concretamente en el método .parseInt()
int uno = Integer.parseInt(request.getParameter("dato1"));
int dos = Integer.parseInt(request.getParameter("dato2"));
Pero qué sucede si el usuario no nos ha pasado un número en el parámetro. En este caso el método .parseInt() nos va a fallar, dándonos una NumberFormatException. Es por ello que tendremos que prevenir dicha excepción:
try {
int uno = Integer.parseInt(request.getParameter("dato1"));
int dos = Integer.parseInt(request.getParameter("dato2"));
} catch(NumberFormatException nfe) {
out.println("Los datos recibidos no son números enteros");
}
Ahora solo nos quedará hacer la suma y mostrar el resultado en pantalla. En este caso convertimos un número en una cadena de caracteres mediante el método .toString(), también de la clase Integer.
Para mostrar los datos por pantalla utilizamos el método out.println(). Veamos como queda nuestro código:
try {
int uno = Integer.valueOf(request.getParameter("dato1"));
int dos = Integer.valueOf(request.getParameter("dato2"));
int suma = uno + dos;
out.println("La suma de " + datoUno + " + " + datoDos + " = " + Integer.toString(suma));
} catch(NumberFormatException nfe) {
out.println("Los datos recibidos no son números enteros");
}