para - Cargando páginas JSP desde fuentes personalizadas
importar fuente css (2)
¿Sería posible ejecutar una página JSP y capturar su salida fuera de una aplicación web? Mode específicamente, en mi caso, todavía existe una aplicación web habitual, pero carga páginas JSP no desde su classpath, sino desde una fuente arbitraria. Parece que no puedo simplemente obtener RequestDispatcher y señalarlo a un archivo JSP en el disco.
Corrígeme si estoy equivocado, pero creo que quieres decir que quieres capturar el HTML ... no el JSP. Se procesa un JSP (en un archivo JAVA) en un servlet-engine (Servidor de aplicaciones web) y después de formatear y enviar el HTML al solicitante a través de un servidor web (no es lo mismo que un servidor de aplicaciones web). No puede hacer que RequestDispatcher trabaje en un JSP directo desde el disco porque aún no ha sido procesado por el servidor de la aplicación web. Ahora, para capturar el resultado de un JSP (en HTML) debería ser posible, pero nunca lo había hecho antes. Puede haber algunas API ingeniosas que las que hay más conocebles de las que puedo abordar, pero HTTP normalmente se realiza en el puerto 80, así que supongo que se puede leer / escribir en el puerto 80 en un socket TCPIP. Probablemente haya más cosas que hacer además de eso, pero al menos ese es un punto en el que debes empezar a investigar.
Perdón, no puedo dar más detalles, pero diablos ... para mí es todo teoría en este momento.
Creo que estás mejor con un motor de plantillas como la velocidad. Esto proporciona una infraestructura limpia para el contenido dinámico que es claramente diferente de las cosas de jsp / servlet que está pidiendo.
Dicho esto, he visto aplicaciones que copian jsps en su directorio implementado para que el contenedor las recoja y traduzca. Si hace esto, tenga en cuenta que esto limita sus opciones futuras:
- usted confía en que su aplicación será "explotada", por ejemplo, no se puede ejecutar directamente desde un archivo WAR (esto podría limitar sus opciones de implementación)
- hacer que jsps sea editable en el tiempo de ejecución podría abrir agujeros de seguridad si no se desactivan los scriptlets (también si se desactiva, pero será un poco más difícil ...). La desactivación de scriptlets prohíbe el código real de Java en jsps, entonces está limitado a etiquetar bibliotecas.
- Necesitará un compilador de Java disponible en tiempo de ejecución, que es posible que no desee tener en los sistemas de producción, por ejemplo, no puede precompilar su jsps antes de la implementación. También paga la jsp-translation-penalty habitual en tiempo de ejecución en su sistema productivo.
Configuración de web.xml para deshabilitar las secuencias de comandos:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
Espero que este fragmento de web.xml haya sido procesado, la vista previa no se haya mostrado correctamente ...
Actualización : intenté hacer que xml-snippet se muestre correctamente.