Cómo borrar la salida de pantalla de un Java HttpServletResponse

Estoy escribiendo en la ventana del navegador usando servletResponse.getWriter (). Write (String).

Pero, ¿cómo borro el texto que fue escrito previamente por alguna otra llamada de escritura similar?

Respuesta 1

La respuesta corta es que no puede: una vez que el navegador recibe la respuesta, no hay forma de recuperarla. (A menos que haya alguna forma de detener anormalmente una respuesta HTTP para hacer que el cliente vuelva a cargar la página, o algo por el estilo).

Probablemente, el último lugar en el que una respuesta se puede "borrar" en cierto sentido, es usar el ServletResponse.resetmétodo, que de acuerdo con la Especificación del Servlet , restablecerá el búfer de la respuesta del servlet.

Sin embargo, este método también parece tener un problema, ya que solo funcionará si el búfer no ha confirmado (es decir, enviado al cliente) el método ServletOutputStream's flush.

Respuesta: 2

No puedes. Lo mejor es escribir en un búfer (StringWriter / StringBuilder) y luego puede reemplazar los datos escritos en cualquier momento. Solo cuando sepa con certeza cuál es la respuesta puede escribir el contenido del búfer en la respuesta.

¿En el mismo asunto, y razón para escribir la respuesta de esta manera y no usar alguna tecnología de visualización para su salida como JSP, Velocity, FreeMarker, etc.?

Respuesta: 3

Si tiene un problema inmediato que necesita resolver rápidamente, podría solucionar este problema de diseño aumentando el tamaño del búfer de respuesta; tendrá que leer los documentos de su servidor de aplicaciones para ver si esto es posible. Sin embargo, esta solución no escalará, ya que pronto se encontrará con problemas de falta de memoria si alcanza picos de tráfico en el sitio.

Ninguna tecnología de visualización lo protegerá de este problema. Debe diseñar su aplicación para descubrir qué le va a mostrar al usuario antes de comenzar a escribir la respuesta. Eso significa hacer todo su acceso a la base de datos y la lógica empresarial con anticipación. Este es un problema común que he visto con diseños de sistemas complicados que usan objetos proxy que acceden perezosamente a la base de datos. Por ejemplo, ORM con relaciones de entidad son malas noticias si se accede desde su capa de vista. No hay mucho que pueda hacer sobre una excepción que ocurre 3/4 del camino en una página renderizada.

Pensando en ello, puede haber alguna forma de inyectar una redirección de página a través de AJAX. ¿Alguien ha oído hablar de una solución como esa?

¡Buena suerte al rediseñar su diseño!

Respuesta: 4

Posible duplicado: configuración del tamaño de almacenamiento dinámico de JVM en tiempo de ejecución ¿Es posible evitar que un programa se bloquee cuando encuentra un OutOfMemoryError aumentando la memoria permitida para el programa? Lata ...

Soy un codificador novato de Java y acabo de leer una variable de una clase entera que se puede describir de tres maneras diferentes en la API. Tengo el siguiente código: if (count.compareTo (0)) {System.out ....

public static boolean checkTimeFormat (String str) {try {SimpleDateFormat sdf = new SimpleDateFormat ("aaaa-MM-dd HH: mm: ss"); sdf.parse (str); volver verdadero; } captura (...

Estoy tratando de agregar un icono a una columna JTable particular especificando mi propio renderizador de celdas de tabla como se muestra a continuación (basado en partes de este tutorial): la clase pública MyTableCellRenderer se extiende ...