JSP

Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámicamente. Simplemente escribimos el HTML regular de la forma normal, usando cualquier herramienta de construcción de páginas Web que usemos normalmente. Encerramos el código de las partes dinámicas en unas etiquetas especiales, la mayoría de las cuales empiezan con "<%" y terminan con "%>".

¿Cuáles son las Ventajas de JSP?
  • Contra Active Server Pages (ASP). ASP es una tecnología similar de Microsoft. Las ventajas de JSP estan duplicadas. Primero, la parte dinámica está escrita en Java, no en Visual Basic, otro lenguaje específico de MS, por eso es mucho más poderosa y fácil de usar. Segundo, es portable a otros sistemas operativos y servidores Web.
  • Contra los Servlets. JSP no nos da nada que no pudierámos en principio hacer con un servlet. Pero es mucho más conveniente escribir (y modificar!) HTML normal que tener que hacer un billón de sentencias println que generen HTML. Además, separando el formato del contenido podemos poner diferentes personas en diferentes tareas: nuestros expertos en diseño de páginas Web pueden construir el HTML, dejando espacio para que nuestros programadores de servlets inserten el contenido dinámico.
  • Contra JavaScript. JavaScript puede general HTML dinámicamente en el cliente. Este una capacidad útil, pero sólo maneja situaciones donde la información dinámica está basada en el entorno del cliente. Con la excepción de las cookies, el HTTP y el envió de formularios no están disponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript no puede acceder a los recursos en el lado del servidor, como bases de datos, catálogos, información de precios, etc.

Hay tres tipos de construcciones JSP que veremos en una página: elementos de script, directivas y acciones. Los elementos de script nos permiten especificar código Java que se convertirá en parte del servlet resultante, las directivas nos permiten controlar la estructura general del servlet, y las acciones nos permiten especificar componentes que deberían ser usuados, y de otro modo controlar el comportamiento del motor JSP.

En muchos casos, un gran porcentaje de nuestras páginas JSP consistirá en HTML estático, conocido como plantilla de texto. En casi todos lo aspectos, este HTML se parece al HTML normal, sigue la mismas reglas de sintaxis, y simplemente "pasa a través" del cliente por el servlet creado para manejar la página. No sólo el aspecto del HTML es normal, puede ser creado con cualquier herramienta que usemos para generar páginas Web. La única excepción a la regla de que "la plantilla de texto se pasa tal y como es" es que, si queremos tener "<%" en la salida, necesitamos poner "<\%" en la plantilla de texto.

Elementos Script JSP

Los Scripts JSP permiten insertar codigo java en el servlet resultante de la compilacion de la pagina JSP, hay tres formas:

  1. Expresiones que se evaluan y se insertan en la salida de la web resultante, <%= expresion %>
  2. Scriptlets: Es codigo java que se introduciria en el metodo service del servlet, <% codigo %>
  3. Declaraciones: Es la manera de declarar variables globales para todo el servlet, <%! codigo>

Expresiones:


Se usan para mandar valores directamente a la pagina web resultante de la JSP, <%= expresion %>, la expresion es ejecutada, se convierte a una cadena de caracteres (String) y insertada en la pagina.
En las expresiones podemos usar gran cantidad de variables predefinidas, los mas usados son:

  • request, de la clase HttpServletRequest
  • response, de la clase HttpServletResponse
  • session, de la clase HttpSession que esta asociada al request, si es que trabajamos con sessions
  • out, se trata de una clase PrintWriter usada para imprimir directamente en la pagina resultante.
Finalmente observa que los autores XML pueden usar una sintaxis alternativa para las expresiones JSP.
	<jsp:expresion>
		Expresion Jsp
	</jsp:expresion>
				  

Declaraciones:

Las declaraciones JSP nos permiten configurar variables para su uso posterior en expresiones o scriptlets. También podemos declarar variables dentro de expresiones o scriptlets en el momento de usarlas. El ámbito es toda la página JSP, no hay concepto de variables de ejemplar. Es decir, no tenemos que declarar variables de ejemplar para usar en más de una expresión o scriptlet. Las declaraciones van encerradas entre etiquetas de declaración <%! Codigo Java %>. Como las declaraciones no generan ninguna salida, normalmente se usan en conjuncion con expresiones JSP o scriptlets, ejemplo:

	<! private int accesCount = 0; >
		Numero de accesos a la pagina
	<= +,+accesCount>
				  

Este codigo imprime el numero de veces que se ha solicitado la pagina actual desde que el servidor se arranco (o la clase del servlet se modifico o recargo).

Scriptlets:

Si lo que queremos hacer es algo mas complejo que una expresion, es decir crear un codigo java complejo e insertarlo en el servlet resultante de la compilacion de la pagina JSP usaremos Scriptlets, la manera de insertar este codigo es:

	<%
		codigo a incluir
	%>
					
Con los Scriptlets tambien podemos escribir en la pagina resultante sin usar las expresiones, la manera de hacerlo es usar la variable out con su metodo println:
	<%
		out.println("Salida a la pagina");
	%>
				  
Los scriptlets ofrecen la posibilidad de ser combinados facilmente con codigo html, ya que el mismo es como si se metiera dentro de un out.println por eso es lo mismo:
	<%
		if(condicion)
	%>
		Condicion 1
	<%
		else
	%>
		Condicion 2
		que:
	<%
		if(condicion)
		out.println("Condicion 1");
		else
		out.println("Condicion 2");
	%>
				  
Si queremos usar los caracteres "%>" dentro de un scriplet, debemos poner "%\>". Finalmente observa que el equivalente XML de <% Codigo %> es:
	<jsp:scriptlet>
		Codigo
	</jsp:scriptlet>