Si necesita capturar la salida de JSP como cadena que es razonablemente sencillo (aunque lejos de ser ideal desde el punto de vista del diseño) de dentro contenedor servlet:
1. Extender javax.servlet.HttpServletResponseWrapper y anular getWriter()/getOutputStream() métodos para proporcionar sus propias versiones en búfer (por ejemplo, StringWriter)
2. Invoque el método "include()" de RequestDisparcher, ajustando la respuesta original por su cuenta.
3. Captura el contenido del búfer.
Ahora, si necesita hacer lo mismo fuera de Servlet Container, realmente necesita preguntarse "¿por qué?". Tal vez debería utilizar un motor de plantillas (FreeMarker/Velocity/StringTemplate/etc ...) en lugar de JSPs. Si sus JSP son archivos XML bien formados y no están usando ningún inserto de código Java, puede ser razonablemente trivial convertirlos a plantillas FreeMarker (FreeMarker admite bibliotecas de etiquetas JSP personalizadas) que simplificaría su tarea en gran medida.
Sin embargo, si se trata de un requisito duro absoluta de sus opciones más sencillas son:
1. Ejecutar un contenedor de servlets externa y se deja manejar interpretación JSP. Su programa le enviará solicitudes HTTP y capturará el resultado.
2. Lo mismo que arriba, pero puede ejecutar Contenedor de Servlets incrustado (por ejemplo, Jetty).
Si sus JSP están disponibles durante el tiempo de compilación, puede precompilarlos a través de Jasper como se sugiere en otras respuestas.
Deseo fuertemente consejos contra intentar implementar su propio contenedor de servlets: se encontrará caminando en un mundo de dolor.
¿Pero por qué quieres hacer esto? ¿Desea generar HTML mediante programación? – Raedwald
Esto se marcó previamente como un engaño para http://stackoverflow.com/questions/956112/programmatic-htmldocument-generation-using-java?lq=1 o http://stackoverflow.com/questions/8141813/execute-jsp -with-jetty-7-3-without-javac? lq = 1. No es. –