Ejecutar JSPs almacenados en Base de Datos

0
34129

Ejecución de JSP almacenado en una Base de Datos

Uno de los mensajes en nuestro foro, pregunta algo interesante:

¿Como interpretar código JSP almacenado en la base de datos?

Debemos entender la dinámica de los JSPs….

Un JSP posee normalmente HTML (aunque podríamos usarlo para generar XML, rdf,
etc. ) y código Java (denominado Scriptlet). También
podría contener, casi con toda seguridad si tenemos un conocimiento medio, etiquetas de usuario (custom
tags
) o de alguno de los conjuntos estándar (Struts,
JSTL,
etc..).

Cuando construimos un JSP, este se compila en un Servlet. Esta compilación no
es compleja, pero no tiene sentido que nos pongamos a construir compiladores ..

Podemos revisar en Internet la documentación relativa a include de JSPs, por
ejemplo en 

http://java.sun.com/products/jsp/syntax/1.1/syntaxref1112.html

De un modo sencillo, podemos incluir dinámicamente otro JSP, donde el nombre
lo podemos obtener dinámicamente.

Si queremos ejecutar un JSP almacenado en la base de datos, solo tenemos que
preocuparnos que ese JSP exista físicamente.

Una posible solución podría ser crear un Java Beans sencillo que nos permita
generar el fichero físico (recuperándolo de la base de datos) al mismo tiempo
que retorne un nombre de fichero único.

Vamos a hacerlo.. aunque con estas ideas y otro de nuestros tutoriales, donde
os mostrábamos

como construir una aplicación con JSPs
, debería ser suficiente.

Contrucción del Ejemplo

Primero vamos a crear el proyecto en NetBeans (vamos deprisa porque en el
tutorial mencionado podéis ver todas las capturas con más detalles).

Le asignamos un directorio de trabajo y usando el Wizard, decimos que el
directorio sea un modulo Web

Y seleccionamos nuestro trayecto

Ahora creamos nuestro JSP

Le asignamos un nombre

Creamos el Bean en un paquete

le asignamos nombre

Y usamos el Wizard para crear el Bean

Le asignamos nombre

Añadimos nuestro método

Asignamos nombre, parámetros y valor de retorno

Modificamos el Java Bean (solo nos hace falta una línea), aunque nos sobra
mucho código generado automáticamente …

Creamos en el directorio base un JSP estático para probar nuestra teoría y lo
llamamos

ficherodinamico1.jsp

<% for (int i=0;i<5;i++)
{
%>
<br> Si ves esto es que funciona
<%
}
%>
 

Vemos como queda en la estructura de ficheros

Construimos nuestro JSP principal (gestordinamico.jsp)

Y vemos el resultado ….

Es decir… ahora solo tenemos que modificar el código del método del JSP
para que, en función del parámetro, recupere de la base de datos el texto que
represente el JSP y lo escriba en un fichero físico….

Creamos la tabla en BBDD

Creamos la tabla en la base de datos (como casi siempre, jugamos con MySQL).
Podeir revisar algunos de los tutoriales que tenemos que os ensaña como

trabajar con Java y MySql

Creamos los campos

Le asignamos un nombre

Insertamos un registro en  nuestra tabla

Modificamos el método del Bean.  

Lo vamos a hacer del modo más simple, aunque no el más optimo … (no
usaremos pool de conexiones para no perder el objetivo). Tenéis varios
tutoriales en este Web que os enseñan

como configurar y utilizar pooles de conexiones
.

Creamos un primer método auxiliar para recuperar el texto en base al ID del
JSP dinámico en base de datos

Creamos una función se sea capaz de escribir el fichero

Y por último, el propio método…

No se nos puede olvidar incluir en el directorio de librerías el driver JDBC
de MySQL.

Con todo esto, ejecutamos y …..

Sencillo verdad ….. Os podéis descargar el código
en este enlace … listo para funcionar .

Yo también repasaría el tutorial donde os enseñábamos como
ejecutar código java sin compilarlo (Añadir
Scripting a programas Java
)…. Este código también podría estar en base de
datos.

Ya tenemos una posible base que nos incita a plantearnos como
funcionan algunos gestores de contenidos ….. aunque esto …. es otra historia
….

Este ejemplo podría mejorarse optimizando el rendimiento con
caches (para no generar cuando no sea necesario), construyendo una
administración gráfica de los JSPs en base de datos (para saber cuando liberar
caches), etc

 

Sobre el
Autor ..

Dejar respuesta

Please enter your comment!
Please enter your name here