JTagua

Inicio » JSP/SERVLETS » Objetos implícitos » Tutorial de JSP (14): Objeto implícito request.

Tutorial de JSP (14): Objeto implícito request.

Licencia

Creative Commons License

Visitas:

  • 889.186 hits

Los objetos implícitos son una serie de objetos internos asociados a las APIs de los servlets y las páginas JSP suministrados por el contenedor de jsp, y que pueden ser usados en cualquier scriptlet o expresión, para aumentar así su funcionalidad. Entre estos objetos se encuentran: request, response, session, out.

Objeto request


Los métodos mas utilizados son:

  • String getHeader(String name): Devuelve el valor de un parámetro llamado name de la cabecera de la petición.
  • Enumeration  getHeaderNames(): Devuelve una enumeración con los nombres de todos los elementos de la cabecera de la petición.
  • String getParameter(String name): Devuelve el valor de un parámetro llamado name indicado en un formulario o en una url.
  • Enumeration getParameterNames() : Devuelve una enumeración con los nombres de todos los parámetros de la petición.
  • String[] getParameterValues(String name) : Los parámetros pueden tener valor múltiple, con esta función recuperamos un array con todos los valores para un nombre dado.
  • Cookie [] getCookies(): Recupera todas las cookies.
  • String getRemoteAddr(): Devuelve la IP del host desde el que se realiza la petición
  • String getRemoteHost(): Devuelve el nombre del host desde el que se realiza la petición.
  • HHttpSession getSession() : Devuelve la sesion asociada con la petición si existe, o si no existe crea una nueva.

(Existen algunos otros comentados en el Ejercicio núm 4).

Formularios HTML y páginas JSP

Vamos a ver aquí las distintas formas de enviar parámetros desde un formulario y de recibirlos desde un JSP. Un formulario HTML tiene la forma:

donde

destino es la página JSP o servlet que recibe los datos del formulario (por ejemplo, proceso.jsp),

method, puede adoptar dos valores diferentes GET y POST.

(Si no se especifica ningún valor de los dos atributos anteriores, los valores por defecto son la página actual y GET respectivamente)

Cuando usamos GET, la información se codifica directamente en la URL, en la forma:

http://url?param1=valor1¶m2=valor2…¶mN=valorN

Con GET no podemos manejar grandes cantidades de información, y existe la desventaja de que el servidor o el navegador guarden en caché la página llamada. Hay que tener en cuenta que el historial del navegador guardarán el acceso incluyendo los parámetros, lo cual hace desaconsejable GET para el envío de información privada. Por otro lado, al visualizarse los parámetros en la URL, facilita el desarrollo y depurado de la aplicación web, y en algunos casos, es imprescindible para realizar, por ejemplo, estadísticas basadas en parámetros.

Con POST la información se envía directamente al servidor, no se codifica en la URL, y además permite el envío de grandes cantidades de información, como podrían ser archivos.

Elementos de formulario

Campos de texto, password y oculto:

Se reciben en la forma

Valor de parametro1: <%= request.getParameter(«parametro1») %>

Checkbox o Selectores ON/OFF.

Define una o más casillas de verificación, pudiendo marcar el usuario las que desee del conjunto total. Si pinchamos una casilla con el ratón o la activamos con el tabulador y le damos a la barra espaciadora la casilla se marca; si volvemos a hacerlo, la casilla se desmarca. Las casillas de verificación pueden ser visualmente agrupadas como una lista de opciones, pero cada una de ellas es tratada individualmente
Sus parámetros complementarios son:
  • name=» nombre», asigna un nombre identificador único a la variable definida por el elemento. Este identificador debe ser el mismo para todos los elementos conjunto de casillas.
  • value =» valor «, que define un valor posible de la variable para cada uno de casillas de verificación.
  • checked, marca por defecto una o más de las casillas del grupo.
  • disabled, desactiva la casilla de verificación, por lo que el usuario no podrá marcarla.
  • tabindex = » n «, que especifica el orden de tabulador que tendrá el campo respecto todos los elementos que incluye el formulario.


Si el checkbox está marcado, se envía un parámetro con el nombre especificado con el valor on. Si no está marcado, no se envía el parámetro. Es decir, la lógica de la recepción del parámetro podría ser:

<%

String valorcheckbox= request.getParameter(«nombreCheckbox»);
if (valorcheckbox!=null && valorcheckbox.equalsIgnoreCase(«on»))
{
//Checkbox seleccionado en el formulario origen.
}
else
{
//Checkbox NO seleccionado en el formulario origen.
}

%>

Botones de radio.

Los botones radio funcionan en la misma forma que las casillas de verificación con pequeñas diferencias: los botones radio que comparten un mismo nombre conforman un grupo de opciones donde los usuarios no pueden seleccionar más de una opción a la vez. Esto significa que cuando el usuario selecciona una opción, el resto es automáticamente deseleccionado. Sólo se envía un parámetro con el valor del botón seleccionado.

El valor se recibe de forma similar a los campos de texto.

Selecciones. Etiquetas <select> y <option>.

Se usan para desplegables y listas. Se especifica un nombre para el parámetro y se envía como valor el contenido de la etiqueta <option>. Si especificamos el atributo value en la etiqueta option, Se mostrará en el desplegable el texto en el cuerpo de la etiqueta, pero se enviará el valor especificado en el atributo value en caso de ser la opción seleccionada.

Por ejemplo, si en el formulario escribimos,

si tratamos de recibir con

Valor de la seleccción: <%= request.getParameter(«selectSimple») %>

podrán ocurrir dos cosas:

  1. En el caso de estar seleccionado la opción «UNO» se devolverá el valor del atributo «value», es decir, «1»
  2. En el caso de estar seleccionado la opción «DOS»  se devolverá el valor del atributo «option», es decir, «Dos»

También podemos crear listas que nos permitan la selección de múltiples de valores, esto se indica añadiendo el atributo MULTIPLE al

String[] getParameterValues(String name).

Es decir, si en el formulario escribimos:

La recuperación de las opciones seleccionadas se realizará en la forma

Se marcaron las siguientes entradas:
<br>
<%
String[] seleccion= request.getParameterValues(«selectMultiple»);
for (int i=0;i
{
%>
<%= seleccion[i] %>
<br>
<%
}
%>

Codificación directa en el URL.

En algunos casos resulta útil enviar directamente información a JSP codificada dentro de la URL.

Y así por ejemplo:

Hay que tener cuidado cuando se envían caracteres especiales en una cadena url, para codificar cadenas podemos usar la función estática

String java.net.URLEncoder.encode(String s);

Estos parametros se recuperan igual que los textos, sólo que en el caso anterior es evidente que sólo se transmitirá un valor del parámetro «param» que coincidirá con el enlace establecido por el usuario, de manera que este parámetro tendrá un valor de nacional, deportes o sociedad según el caso.

Nota final:

Tenga especial cuidado con los textos, pues si escribe en una caja de texto José, es muy posible que la «é» (e acentuada) no sea bien recibida desde el método getParameter, una opción para convertir esto a UTF-8 podría ser capturar en la forma siguiente:

String men = new String(request.getParameter(«userName»).getBytes(«ISO-8859-1″),»UTF-8»)

EJEMPLO1:

Se sugiere al lector realice un ejercicio sencillo de captura de parámetros de todos los tipos (texto, campo oculto, password, casilla de verificación, radio botón, selección simple, selección múltiple y link mediante «a ref») indicadas mas arriba.

EJEMPLO2:

En este ejemplo elaboraremos una página JSP que recupere las información concernientes a la cabecera de una petición y que muestre una pantalla tal como la que sigue:

para hacer esto utilice el siguiente código,

En la línea 22 se está utilizando public boolean hasMoreElements(), para testear si la enumeración tiene o no mas elementos. Este método devuelve true si el objeto enumeración contiene mas elementos, en caso contrario devuelve false.

EJEMPLO3:

Veamos ahora un ejemplo de utilización del método getHeader para el atributo específico «User-Agent», se trataría de producir una salida tal como la que sigue en el caso de que el navegador o cliente sea Internet Explorer,

y esta otra en el caso de que el navegador sea FireFox,

para probar esto, puede probar con el siguiente código en index.jsp,

Se sugiere al lector utilice el ejemplo anterior para producir una página JSP que atienda una petición o no dependiendo de que el navegador solicitante sea Internet Explorer o no.

EJEMPLO4:

En el siguiente ejemplo se pone en evidencia otros métodos de request, tales como el MIME, con request.getContentType(), la Ruta de contexto con request.getContextPath(), el Idioma con request.getLocale(), el Protocolo, con request.getProtocol(), el Metodo de llamada, con request.getMethod(), la IP del Cliente, con  request.getRemoteAddr(), el Usuario, con request.getRemoteUser(), la URL, con request.getRequestURL(), el Servidor, con  request.getServerName().

Es decir,

para ello pruebe el código en index.jsp

Se sugiere al lector utilice el ejemplo anterior para producir una página JSP que atienda una petición o no dependiendo de la IP del cliente.

Cuestiones a recordar:

Concepto, sintaxis y uso del objeto request.

Uso de los métodos del objeto request: getParameter, getParameterNames, getParameterValues, getCookies(), getRemoteAddr(), getRemoteHost(), getSession()

Métodos GET y POST de un formulario.

Recuperación de parámetros de un formulario según su tipo.



5 comentarios

  1. marcos dice:

    es muy buena pero seria mejor que nos indiquen los paso que uno debe seguir para poder como aplicarla a jsp

  2. Hugo dice:

    Estaba buscando algo asi GENIAL! Gracias!!!!

  3. Jonatan dice:

    muy buen aporte

Deja un comentario