Comentarios
Los comentarios que se deseen incluir en el código JSP deben indicarse entre las etiquetas <%-- y --%>. Estos comentarios no aparecerán en el código obtenido en el navegador web, como sí ocurrre con los comentarios en HTML.
<!-- comentario HTML -->
<%-- comentario JSP --%>
Expresiones
Se puede indicar una expresión Java dentro de las etiquetas <%= y %>. El resultado aparecerá como parte del códido HTML en el lugar donde se haya escrito la expresión.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ejemplos JSP</title>
</head>
<body>
<H1>Ejemplos de expresiones</H1>
<%-- Mostrar la fecha y hora actual --%>
<%= new java.util.Date().toString() %><br>
<%-- Convertir a mayúsculas un String --%>
<%= "Pasar a mayúsculas".toUpperCase() %><br>
<%-- Resultado de una expresión aritmética --%>
<%= (5+2)/(float)3 %><br>
<%-- Generar un número aleatorio --%>
<%= new java.util.Random().nextInt(100) %>
</body>
</html>
El código HTML que recibe el navegador para el ejemplo anterior puede ser como el siguiente:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ejemplos JSP</title>
</head>
<body>
<H1>Ejemplos de expresiones</H1>
Wed Jan 16 19:00:52 CET 2013<br>
PASAR A MAYÚSCULAS<br>
2.3333333<br>
65
</body>
</html>
Scriplets
Dentro de las etiquetas <% y %> puedes escribir cualquier conjunto de sentencias Java, que serán ejecutadas por el servidor.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ejemplos JSP</title>
</head>
<body>
<H1>Ejemplo de scriplet</H1>
<%
int numero = 7, factorial = 1;
for(int i=numero; i>1; i--) {
factorial *= i;
}
%>
<%-- Se muestran en negrita el número y el resultado del factorial --%>
<%= "El factorial de <b>"+numero+"</b> es <b>"+factorial+"</b>" %>
</body>
</html>
Objetos request, session y out
Los siguientes objetos están predefinidos para ser usados en JSP:
- request: permite obtener datos de la petición HTTP que se realiza. Por ejemplo, los parámetros GET y POST que son pasados a la página.
- session: contiene los datos de la sesión, permitiendo guardar y recuperar información durante la vigencia de la sesión.
- out: posibilita enviar información a la salida HTML que se genera.
Guarda en siguiente ejemplo en una archivo llamado factorial.jsp y te permitirá realizar el cálculo del factorial del número que indique el usuario. Además mantiene la cuenta de las veces que se ejecuta la página durante la misma sesión.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cálculo del factorial</title>
</head>
<body>
<h1>Cálculo del factorial</h1>
<form action="factorial.jsp" method="get">
<p>Número: <input type="text" name="numero">
<input type="submit" value="Calcular"></p>
</form>
<%
// A través del objeto request se obtiene el valor pasado por el formulario
String numeroGet = request.getParameter("numero");
if(numeroGet!=null) {
int numero=0;
double factorial=1;
boolean error = false;
try {
numero = Integer.valueOf(numeroGet);
if(numero<1) {
error = true;
} else {
for(int i=numero; i>1; i--) {
factorial *= i;
}
}
} catch(NumberFormatException e) {
error = true;
}
if(error) {
out.println("<p>Debe indicar un número entero mayor que 0</p>");
} else {
// Mostrar el resultado en la página usando el objeto out
out.println("<p>Resultado: "+numero + "! = " + factorial+"</p>");
}
}
// Uso del objeto session para contar las veces que se ejecuta la aplicación
Integer contador = (Integer)session.getAttribute("contadorVisitas");
if(contador!=null) {
contador = Integer.valueOf(contador);
} else {
contador = 0;
}
if(contador!=0) {
out.println("<p>Ejecuciones de la aplicación en esta sesión: "+contador+ "</p>");
}
contador++;
session.setAttribute("contadorVisitas", contador);
%>
</body>
</html>
Declaraciones
Usando las etiquetas <%! y %>, puedes declarar variables y métodos que puedes utilizar en otro lugar de la página JSP.
<%!
private double calcularFactorial(int num) {
int res = 1;
for(int i=num; i>1; i--) {
res *= i;
}
return res;
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cálculo del factorial</title>
</head>
<body>
<h1>Cálculo del factorial</h1>
<form action="factorial.jsp" method="get">
<p>Número: <input type="text" name="numero">
<input type="submit" value="Calcular"></p>
</form>
<%
String numeroGet = request.getParameter("numero");
if(numeroGet!=null) {
int numero = Integer.valueOf(numeroGet);
double resultado = calcularFactorial(numero);
out.println("<p>Resultado: "+numero + "! = " + resultado +"</p>");
}
%>
</body>
</html>
Directiva page
Permite declarar una serie de propiedades para la página que se está desarrollando. Con esta directiva se pueden usar los siguientes atributos: language, extends, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, contentType, isErrorPage, pageEncoding, isELIgnored. Donde los más usuales son language, contentType, pageEncoding e import (para importar clases externas).
Se usa con las etiquetas <%@ y %> al principio del código de la página.
<%@ page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
import="java.util.*" %>
Directiva include
Permite incluir el código almacenado en otro archivo en el lugar donde se indique esta directiva, especificando la ruta relativa a dicho archivo en el atributo file.
<%@ include file="/navbar.html" %>
<%@ include file="/cabecera.jsp" %>