2 minute read
5.3.10. Códigos de estado y respuesta
getPathInfo (). Información del Path adjunto a la URL. Variable CGI: PATH_INFO.
getQueryString (). Para peticiones GET, son los datos enviados en forma de una cadena única, con los valores codificados. No es habitual su uso en los Servlets, al disponer de acceso directo a los parámetros ya decodificados. Variable CGI: QUERY_STRING .
Advertisement
getRemoteAddr (). La dirección IP del cliente. Variable CGI: REMOTE_ ADDR.
getRemoteUser (). Si se suministró una cabecera Authorization, la parte del usuario. Variable CGI: REMOTE_USER .
getMethod (). El tipo de petición normalmente es GET o POST, pero puede ser HEAD, PUT, DELETE, OPTIONS, o TRACE. Variable CGI: REQUEST_METHOD.
5.3.10. Códigos de estado y respuesta
Al atender una petición web de un navegador, la respuesta suele contener un código numérico que indica al navegador el cumplimiento o no de su petición y las razones de que ésta no haya sido satisfecha. Además, incluye algunas cabeceras que proporcionan al navegador información adicional sobre la respuesta. Desde los Servlet podemos indicar el código de retorno de HTTP y el valor de algunas de estas cabeceras. Ello nos permite reenviar al usuario hacia otra página, indicar el tipo de contenido de la respuesta, solicitar un password al usuario, etc.
Códigos de estado
Para devolver un código de estado concreto, disponemos en nuestros Servlets del método s e t S t a t u s. Dicho método indica al servidor web y al contenedor de Servlets el estado que deben devolver al cliente. El API de Servlets proporciona en la clase H t t p S e r v l e t R e s p o n s e una tabla de constantes para facilitar
el uso de los códigos de respuesta. Dichas constantes tienen nombres fáciles de usar y recordar.
Si el código que devolvemos no es el de defecto (200, SC OK), debemos llamar a setStatus antes de usar el PrintWriter para devolver el contenido al cliente. Disponemos, además, de setStatus para devolver códigos de error de dos métodos más especializados: sendError para devolver errores (código 404), que permite añadir al código numérico un mensaje en HTML y sendRedirect (código 302), que permite especificar la dirección a la que se redirecciona al cliente.
Ejemplo Por ejemplo, la constante para el código 404 (en el estándar HTTP calificado como not found , no encontrado), es SC_NOT_FOUND.
Cabeceras de retorno
Además de incluir un código numérico al responder a la petición http, el servidor puede incluir una serie de valores en las cabeceras de las respuestas. Estas cabeceras permiten informar al navegador de la expiración de la información enviada (cabecera Expires), de que debe refrescar la información pasado un tiempo especificado (cabecera Refresh), etc. Desde nuestros Servlets podemos modificar el valor de estas cabeceras o añadir algunas. Para ello, disponemos del método setHeader de la clase HttpServletResponse, que nos permite asignar valores arbitrarios a las cabeceras que devolvemos al cliente. Igual que en el caso de los códigos de retorno, debemos seleccionar las cabeceras antes de enviar ningún valor al cliente. Disponemos de dos métodos auxiliares de setHeader para aquellos casos en los que deseemos enviar cabeceras que contengan fechas o enteros. Estos métodos, setDateHeader y setIntHeader , no evitan tener que convertir fechas y enteros a S t r i n g, el parámetro aceptado por setHeader.
Disponemos, además, de unos métodos especializados para algunas cabeceras de uso más común: