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=UTF-8">
<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=UTF-8">
<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=UTF-8"> <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=UTF-8"> <title>Cálculo del factorial</title> </head> <body> <h1>Cálculo del factorial</h1> <!-- Formulario que solicita al usuario el número a usar en el cálculo --> <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 %> (observa el signo de admiración), puedes declarar variables y métodos que puedes utilizar en otro lugar de la página JSP.
<%!
// Aquí puedes declarar las variables o métodos que desees 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=UTF-8"> <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); // Aquí se está haciendo la llamada al método declarado en la parte superior 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 %> (observa la @) al principio del código de la página.
<%@ page language="java"
contentType="text/html; charset=UTF-8"
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" %>