Вы находитесь на странице: 1из 1

@Override

protected void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
}

Sin embargo, el funcionamiento no es realmente idntico porque en el primer ejemplo el


servlet devuelve l mismo el contenido de la imagen al navegador. En el segundo
ejemplo devuelve una respuesta HTTP de redireccin al navegador con lo que provoca
que ste cree una nueva peticin HTTP para obtener el contenido de la imagen. Por
tanto, en este caso son dos peticiones HTTP las que se necesitan para visualizar la
imagen.

La informacin escrita en la respuesta HTTP no es inmediatamente transmitida al


cliente sino que se copia en un buffer. El tamao y el uso de este buffer pueden
controlarse con los mtodos siguientes.

setBufferSize(int size): este mtodo especifica el tamao del buffer usado para la
construccin del cuerpo de la respuesta HTTP. Un tamao grande permite limitar el
nmero de paquetes TCP enviados por la red para la transmisin de la respuesta al
cliente. Como contrapartida, el servidor necesitar una cantidad mayor de memoria para
funcionar. En cambio, un tamao menor permite al cliente recibir ms rpidamente los
primeros datos que componen la respuesta adems de usar menos recursos de memoria
en el servidor. Este mtodo tiene que llamarse obligatoriamente antes de la escritura de
datos en la respuesta HTTP.

int getBufferSize(): este mtodo devuelve el tamao actual del buffer de memoria.

reset(): este mtodo reinicializa completamente el buffer de la respuesta HTTP


eliminando el cdigo de estado, las cabeceras de respuesta y el cuerpo de la respuesta.
No se puede invocar este mtodo si los datos que conciernen a la respuesta ya han sido
transmitidos al cliente (no es posible borrar datos que ya han llegado a destino en el
cliente!).

resetBuffer(): este mtodo es menos radical que el anterior ya que slo elimina el cuerpo
de la respuesta HTTP. Sin embargo, tiene la misma restriccin que el mtodo reset.

boolean isCommitted(): este mtodo determina si los datos ya han sido enviados al
cliente para poder llamar sin riesgo a uno de los dos mtodos anteriores.

flushBuffer(): este mtodo fuerza el envo del contenido del buffer al cliente. Despus
de la llamada a este mtodo, la cabecera de respuesta HTTP no puede modificarse.

Para ilustrar el uso de estos mtodos, retomamos el ejemplo anterior y lo modificamos


ligeramente para que el archivo contenedor de la imagen no se lea en una sola operacin
sino que se lea byte a byte. Para evidenciar la importancia del buffer, basta con variar el
tamao de ste modificando la lnea response.setBufferSize(2000);.

www.fullengineeringbook.net

Вам также может понравиться