Hola,
Cita:
Iniciado por Erickvk Lo siento pero no queria faltar, no me referia a que tu respuesta fuera mala o que este fuera de lugar, ...
Bueno, bueno, para ser sincero muchas veces, en lo personal, me equivoco al dar una respuesta, pero también es cierto que a veces sirve de base para otras respuestas, de nuevo solamente se hace con el ánimo de ayudar, el hecho es que es un foro para comunicarnos simplemente.
Cita:
Iniciado por Erickvk ... La verdad no se para que han pedido esto, pero supongo que es para crear plantillas y asi hacer presentaciones sin tener problemas con bbdd o cosas asi. ...
La operación es muy simple, crea un PrintWriter personalizado, yo lo hice con un StringBuilder pero por supuesto tienes que hacerlo de otra forma,
Código Java:
Ver original StringBuilder sb = new StringBuilder();
super(out);
}
@Override
public void write(int c) {
super.write(c);
sb.append(c);
}
@Override
public void write(char[] buf, int off, int len) {
super.write(buf, off, len);
sb.append(buf);
}
@Override
public void write(char[] buf) {
super.write(buf);
sb.append(buf);
}
@Override
public void close() {
super.close();
}
}
Crea un wrapper personalizado, que cambie el OutputStream del response por por el Writer anterior,
Código Java:
Ver originalprivate class myServletResponse extends HttpServletResponseWrapper {
public myServletResponse(HttpServletResponse response) {
super(response);
try {
pw = new myPrintWriter(response.getOutputStream());
}
}
@Override
return pw;
}
public void finish() {
pw.flush();
pw.close();
}
}
Por último crea un filter personalizado,
Código java:
Ver originalpublic void doFilter
(ServletRequest request, ServletResponse response, FilterChain chain
) throws IOException, ServletException
{ myServletResponse msr = new myServletResponse((HttpServletResponse)response);
chain.doFilter(request, msr);
msr.finish();
}
Por supuesto que tienes que modificarlo y agregar al filter correctamente, el resultado estaba en el StringBuilder y aparecerá en el archivo log del stdout de tomcat, y lógicamente lo tienes que modificar para que lo grabe en algún otro lugar. Yo creo que esta es la forma mas simple, usando directamente el Output también es posible pero tendrías que agregarlo a cada unidad de compilación procesada.
Saludos,