Este documento explica los tres métodos para insertar código Java en una página JSP: expresiones, scriptlets y declaraciones. Las expresiones evalúan código Java y escriben el resultado, los scriptlets ejecutan código arbitrario y pueden escribir en la salida, y las declaraciones definen variables fuera de los métodos del servlet generado.
1. En esta práctica vamos a explicar los elementos de script en JSP. Hay tres
formas de insertar código java en una página JSP.
Expresiones: Usando las etiquetas <%= expresión %>, la expresión se evalúa,
su resultado se convierte a String y se escribe en la salida usando el objeto
predefinido out. La forma de traducir una expresión a código del servlet es
imprimiéndola en out (mediante una sentencia out.write o similar).
<!-- Ejemplos de expresiones -->
<p>La raiz cuadrada de 25 es: <%= java.lang.Math.sqrt(25) %></p>
<p>Fecha y Hora: <%= new java.util.Date() %></p>
<p>2^3 = <%= java.lang.Math.pow(2, 3) %></p>
<!-- Ejemplos de expresiones -->
El resultado sería:
Scriptlets: Usando las etiquetas <% código %>. El código se ejecuta dentro
del método _jspService() del servlet generado. Esto permite generar código
arbitrario cuyo resultado no es necesario enviar a la salida. Si desde un
scriptlet se desea escribir algo en esta, bastará con utilizar el objeto
predefinido out. Un uso normal de los scriptlets es hacer que ciertas partes
de código HTML aparezcan o no en función de una condición.
2. <!-- Ejemplos de scriptlet's -->
<%
//Scriptlet 01
java.util.Calendar ahora = java.util.Calendar.getInstance();
int hora = ahora.get(java.util.Calendar.HOUR_OF_DAY);
out.print("<p>Hora actual en formato 24 horas: " + hora +
"</p>");
if((hora>20)||(hora<6)){
out.print("<p>BUENAS NOCHES</p>");
}else if((hora>=6)&&(hora<=12)){
out.print("<p>BUENOS DIAS</p>");
}else{
out.print("<p>BUENAS TARDES</p>");
}
%>
<%
//Scriptlet 02
if(Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) {
out.print("<p>BUENOS DIAS</p>");
} else {
out.print("<p>BUENAS TARDES</p>");
}
%>
<%
//Scriptlet 03
for (int i=1; i <= 5 ; i++) {
out.print("<br>");
out.print("<font size=" + i + "> Curso JSP </font>");
}
%>
<!-- Ejemplos de scriptlet's -->
El resultado sería:
HOUR_OF_DAY
public static final int HOUR_OF_DAY
Field number for get and set indicating the hour of the day. HOUR_OF_DAY is used for the 24-hour
clock. E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22.
3. La clase Calendar de java.util es una clase abstracta, no puede ser
instanciada, es decir que no tendrá un constructor típico “new Calendar()”,
en vez de ello utilizaremos el método getInstance().
java.util.Calendar ahora = java.util.Calendar.getInstance();
En “ahora” quedarán almacenados los datos del sistema (hora, fecha,...) del
momento en que fue creada.
Declaraciones: Usando las etiquetas <%! código %>, se insertan en el cuerpo
del sevlet generado fuera de sus métodos. Las variables declaradas
conservarán su valor entre sucesivas llamadas a la página, ya que son
variables miembro del servlet generado y no locales al método jspService().
<!-- Ejemplo de declaración -->
<%! int base = 2, altura = 5 ; %>
<p>El área del triángulo es: <%= base * altura / 2.0 %></p>
<!-- Ejemplo de declaración -->
El resultado sería…
4. elementosScript.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Elementos de Script JSP</title>
</head>
<body>
<!-- Ejemplos de expresiones -->
<p>La raiz cuadrada de 25 es: <%= java.lang.Math.sqrt(25) %></p>
<p>Fecha y Hora: <%= new java.util.Date() %></p>
<p>2^3 = <%= java.lang.Math.pow(2, 3) %></p>
<!-- Ejemplos de expresiones -->
<!-- Ejemplos de scriptlet's -->
<%
//Scriptlet 01
java.util.Calendar ahora = java.util.Calendar.getInstance();
int hora = ahora.get(java.util.Calendar.HOUR_OF_DAY);
out.print("<p>Hora actual en formato 24 horas: " + hora + "</p>");
if((hora>20)||(hora<6)){
out.print("<p>BUENAS NOCHES</p>");
}else if((hora>=6)&&(hora<=12)){
out.print("<p>BUENOS DIAS</p>");
}else{
out.print("<p>BUENAS TARDES</p>");
}
%>
<%
//Scriptlet 02
if(Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) {
out.print("<p>BUENOS DIAS</p>");
} else {
out.print("<p>BUENAS TARDES</p>");
}
%>
<%
//Scriptlet 03
for (int i=1; i <= 5 ; i++) {
out.print("<br>");
out.print("<font size=" + i + "> Curso JSP </font>");
}
%>
<!-- Ejemplos de scriptlet's -->
<!-- Ejemplo de declaración -->
<%! int base = 2, altura = 5 ; %>
<p>El área del triángulo es: <%= base * altura / 2.0 %></p>
<!-- Ejemplo de declaración -->
</body>
</html>