JSP Avanzado. Taglibs, SSL, integracion con Apache HTTPD,... PDF actualizado disponible en http://solucionjava.com/manuales_gratis.phpDescripción completa
Descripción completa
Descripción completa
tarot
Descripción completa
curso basico de astrologiaDescripción completa
Descripción completa
introduccion a autocad, con algunos ejerciciosDescripción completa
Descripción completa
Descrição completa
aprenda un poco de apologetica con este curso basico.Descripción completa
Descripción completa
Descripción: Curso Forex Basico
AromaterapiaDescrição completa
CURSO BÁSICO DE MATRICERIADescripción completa
Descripción: CURSO BASICO DE ULTRASONIDO
Curso de Java Server Pages Nivel básico Manual del alumno
I n g . C e d r i c S i m on – T el : 2 2 6 8 0 9 7 4 – C el : 8 8 8 8 2 3 8 7 – E m a i l : c e d r i c @ s o l u c oi n j a v a . c o m – W e b : w w w . s ol u c oi n j a v a . c om
S o l u c i o n J a v a . c o m
Reproducci ón prohibida
Curso de Java Server Pages – Nivel b ásico
Pagina 2 / 46
Índice Índice..............................................................................................................................................................................................................2 1Introducción al curso...................................................................................................................................................................................5 1.1Objetivo de este curso..........................................................................................................................................................................5 1.2Manual del alumno............ alumno....................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ..................... ..................... .................... ..................... .....................................5 ..........................5 1.3Ejercicios 1.3Ejercicios prácticos............... prácticos......................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ...................................5 ........................5 1.4Requisitos 1.4Requisitos para atender a este curso................. curso............................ ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... .........................5 ..............5 1.5Soporte después del curso....................................................................................................................................................................5
2Introducción al JSP.....................................................................................................................................................................................6 2.1¿Que es el JSP?.....................................................................................................................................................................................6 2.2¿Por qué utilizaríamos utilizaríamos el JSP?................ JSP?........................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ...................................6 ........................6 2.3Navegadores
3.1Introducción a la Tecnología y Conceptos J2EE...............................................................................................................................7 3.2Componentes
9Utilización de variables de sesión..............................................................................................................................................................24 9.1Declaración de variable de sesión............... sesión.......................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..............................24 ...................24 9.2Recuperar 9.2Recuperar el valor de un variable de sesión................ sesión.......................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... .................................24 .......................24 9.3Invalidar una sesión...........................................................................................................................................................................24 9.4Otros
14.3Scope de un JavaBean......................................................................................................................................................................35
15Utilización de servlets................ servlets........................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... .................................36 ......................36 15.1¿Qué es un servlet?............... servlet?.......................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ........................................36 ..............................36 15.2¿Para que sirve un servlet?............... servlet?.......................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ......................................36 ...........................36 15.3Anatomía de un servlet....................................................................................................................................................................36 15.4Ciclo de vida de un servlet...............................................................................................................................................................37 15.5Creación de un servlet simple............... simple......................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ..................................37 ........................37 15.6Uso de servlet para mostrar imágenes o archivos binarios.............. binarios......................... ..................... .................... ..................... ..................... ..................... ..................... .............................38 ...................38
16El modelo MVC........................................................................................................................................................................................43 16.1¿Qué es el modelo MVC?................ MVC?.......................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ..................... ........................................43 .............................43 16.2MVC con JSP y JavaBeans............... JavaBeans.......................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ......................................43 ...........................43 16.3MVC con JSP, JavaBeans y servlet................................................................................................................................................43 16.4MVC con JSP, servlet, JavaBeans y EJB......................... EJB........... ............................ ............................ ............................ ............................ ............................. ............................. ............................ ........................4 ..........44 4
17Ejercicios..................................................................................................................................................................................................45 18 Esquema de la base de datos.................. datos............................. ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ........................................46 .............................46
1 Introducción al curso 1.1 Objetivo de este curso En este curso vamos a aprender el lenguaje JSP que nos permitir á crear páginas web dinámicas.
1.2 Manual del alumno Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno deber ía de tomar notas personales personales para completas este manual.
1.3 Ejercicios prácticos Para captar mejor la teor ía, se har án muchos ejercicios con los alumnos, para probar la teor ía y verificar la integración de la materia. También, el alumno podrá copiar sus códigos en un disquete al fin del curso para llevarse, con fin de seguir la pr áctica en su hogar.
1.4 Requisitos para atender a este curso Una iniciación al lenguaje Java es requerida para seguir este curso. La creaci ón y el manejo de objetos Java est á considerada cómo asimilado antes de empezar este curso. El conocimiento del lenguaje HTML y JavaScript son tambi én requeridos para poder atender a este curso. Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al profesor. Pero si aparece que el alumno no posee los requisitos m ínimos para este curso, por respeto a los otros alumnos que ya poseen esta materia, el alumno podr ía ser traslado para otro curso en el futuro, cuando el cumplir á con los requisitos.
1.5 Soporte despu és del curso Si tienes preguntas sobre la materia del curso en tus ejercicios pr ácticos, puedes escribir tus preguntas a [email protected]. Para informaciones sobre otros cursos, visita el sitio web www.solucionjava.com.
2 Introducción al JSP 2.1 ¿Que es el JSP? El JSP es una extensión del lenguaje de programaci ón Java, utilizado para crear p áginas web dinámicas. El JSP necesita que un servidor web con capacidad JSP sea instalado y funcionando para poder ejecutar las p áginas JSP. El servidor va a compilar el código JSP y tratarlo en tiempo real, con la informaci ón viniendo del cliente web, para regresarle una pagina web adaptada, en tiempo real. El servidor tiene tambi én capacidad de seguir el camino de un usuario, as í cómo de identificarlo.
2.2 ¿Por qu é utilizaríamos el JSP? El JSP se necesita cuando la pagina web tiene que adaptarse en funci ón del usuario, y cuando se necesita guardar valores de sesión del usuario. Existen otros lenguaje que permiten eso, como el ASP o el PHP, pero el JSP tiene como aventaje que esta basado en el lenguaje Java, y le tiene la herencia de su poder y de su portabilidad. Los servidores JSP existen para varios sistemas operativos, entre otros Windows, Linux, y Unix. El JSP está también utilizado en paquetes empresariales muy grande como el servidor de IBM Websphere, o el servidor de aplicaci ón de Oracle. El JSP es un estándar de programaci ón Internet.
2.3 Navegadores web Si los navegadores prueban todos de poder aplicar al m áximo las recomendaciones del HTML 4.0 existen ciertas opciones, a dentro o afuera del HML estándar que sólo ciertos navegadores soportan. Tambi én, un mismo código no aparecerá siempre igual en un navegador e en otro. El JSP no está ligado directamente con los navegadores, pero el HTML que generaran si. As í que un código generado podría funcionar bien en un navegador, y dar un resultado diferente en otro. Veremos diferente ejemplos en este curso. En este curso, utilizaremos dos navegadores diferentes: el Internet Explorer de Microsoft, y el Firefox de Mozilla.
3 Arquitectura J2EE 3.1 Introducción a la Tecnología y Conceptos J2EE Java 2 Enterprise Edition (J2EE) es una arquitectura multicapa para implementar aplicaciones de tipo empresarial y aplicaciones basadas en la Web. Esta tecnología soporta una gran variedad de tipos de aplicaciones desde aplicaciones Web de gran escala a peque ñas aplicaciones cliente-servidor. El objetivo principal de la tecnolog ía J2EE es crear un simple modelo de desarrollo para aplicaciones empresariales utilizando componentes basados en el modelo de aplicación. En este modelo dichos componentes utilizan servicios proporcionados por el contenedor, que de otro modo tendrían que estar incorporados en el código de la aplicaci ón. Observa que esto podr ía no ser lo ideal para todos los escenarios: por ejemplo, una peque ña aplicación se cubriría mejor utilizando una solución de la tecnología Java de peso ligero (por ejemplo Servlets, JSPs, etc.).
3.2 Componentes J2EE Las aplicaciones J2EE están compuestas de diferentes componentes. Un componente J2EE es una unidad de software funcional auto-contenido que se ensambla dentro de una aplicación J2EE con sus clases de ayuda y ficheros y que se comunica con otros componentes de la aplicaci ón. La especificiaci ón J2EE define los siguientes componentes J2EE: 1. Las Aplicaciones Clientes y los Applets los Applets son componentes que se ejecutan en el lado del cliente. 2. Los compon component entes es Java Servlet la tecnología JavaServer Pages son componentes Web que se ejecutan en el lado del servidor. 3. Los Enterprise JavaBeans (beans enterprise) son componentes de negocio que se ejecutan en el servidor de aplicacion.
Todos esos componentes se ensamblan en una aplicaci ón J2EE, se verifica que están bien formados y que cumplen la especificación J2EE, y se despliegan en el entorno de producción, donde se ejecutan y son controlados por el servidor de aplicaciones J2EE. Además de estos componentes principales, J2EE incluye servicios estándar y tecnolog ías de soporte como: Java Database Connectivity (JDBC) tecnolog ía que proporciona acceso a sistemas de bases de datos relacionales. Java Transaction API (JTA) o Java Transaction Service (JTS) proporciona soporte para transaciones a los componentes J2EE. Java Messaging Service (JMS) para comunicación asíncrona entre componentes J2EE. Java Naming y Directory Interface (JNDI) proporcionan accesos a nombres y directorios. •
•
• •
Nota: Todos los componentes J2EE est án escritos en lenguaje Java
3.3 La Arquitectura Java Naming Directory Interface (JNDI) J2EE utiliza el API JNDI para acceder gen éricamente a servicios de nombrado y directorio utilizando la tecnolog ía Java. El API JNDI reside entre la aplicaci ón y el servicio de nombres y hace que el servicio de nombres subyacente sea transparente para los componentes de la aplicaci ón:
Un cliente puede buscar referencias a componentes EJB u otros recursos en un servicio de nombres como el mencionado arriba. El código del cliente no se modifica, sin importar el servicio de nombres que se est é utilizando o en qué tecnología esté basado, y esto no crea ninguna diferenc ía en el modo en que los clientes localizan los objetos remotos mediante el API JNDI. Para que una aplicación pueda interactuar con un servicio de nombre, este debe conocer las propiedades del servicio JNDI al cual el quiere conectarse. conectarse. Estas propiedades son entre otras el tipo de servicio JNDI (facory), el domicilio IP y el Puerto del servicio. 3.3.1
Ejemplo de JNDI
... DataSource ds=null; InitialContext ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:comp/env/jdbc/"+datasourceName); con = ds.getConnection(); ...
4 El protocolo HTTP El protocolo HTTP (HyperText Transport Protocol) es un protocolo que define en detalle c ómo un cliente y un servidor deben comunicar entre ellos. El modelo de comunicaci ón HTTP es a la base del web. El protocolo se aplica a cualquier servidor y cliente web. Vamos a examinar los detalles m ás importante del protocolo HTTP.
4.1 Modelo de consulta / respuesta HTTP El HTTP y los protocolos extendidos basados sobre el utilizan un modelo de comunicaci ón simple, pero poderoso. De manera típica, un cliente envía una consulta para un recurso a un servidor, y el servidor contesta una respuesta que corresponde al recurso preguntado (o contesta con un mensaje de error). El recurso puede ser una p ágina HTML, o una aplicación que contesta con un contenido dinámico.
Este modelo simple implica tres cosas que Usted tiene que ser conciente: 1. El protocolo HTTP es un protocolo sin estado. Es decir que el servidor no no guarda ningún información acerca del cliente depuse de haberle contestado, y por eso no puede reconocer que varias consultas de un mismo cliente pueden ser relacionadas. 2. La aplic aplicac aciión web no puede entregar una respuesta inmediato, como en aplicaciones locales. La velocidad depende del ancho de banda disponible y de la carga del servidor. 3. No hay nada en el el protocolo que que indica al servidor como la consulta le ha llegado, así que el servidor no puede distinguir diferente métodos de consulta. Por ejemplo, en servidor no puede distinguir una consulta generada por un clic en un enlace del uso del bot ón 'atrás' del navegador. Tambi én, como el HTTP es sin estado, no se puede a dentro del HTTP llamar a la página anterior.
4.2 Detalles de una consulta Existen dos métodos de consulta: GET y POST. GET es la m ás utilizada, y la que se uso por defecto. Ejemplo de una consulta: GET /index.html HTTP/1.0 Host: www.gefionsoftware.com User-Agent : Mozilla/4.5 [en] (WinNT; I) Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-language : en Accept-charset : iso-8859-1,*,utf-8
La primera línea especifica que se usa el m étodo GET y se pregunta para regresar el recurso /index.html utilizando el protocolo HTTP/1.0. Las otras l íneas proveen títulos con informaci ón adicional al servidor para cumplir con la consulta.
El título HOST dice al servidor el nombre (hostname) utilizado en el URL. Un servidor puede tener varios nombres, y este informaci ón permite distinguir múltiple servidores virtuales utilizando un mismo proceso web. El título User-Agent contiene informaci ón sobre el tipo de navegador utilizado para hacer la consulta. El servidor puede utilizar este información para generar respuestas diferentes dependiendo del navegador (IE, Netscape, WAP, PDA,...). Los títulos Accept proveen informaci ón sobre el idioma y el formato de archivo que el navegador acepta.
4.3 Detalles de respuesta El mensaje de la respuesta parece al de la consulta. El contiene tres partes: una l ínea de estado, unos t ítulos de respuesta, y el cuerpo de la respuesta. Ejemplo de respuesta: HTTP/1.0 200 OK Last-Modified: Mon, 19 Dec 2004 20:21:42 GMT Date: Tue, 12 Jul 2005 13:12:10 GMT Status: 200 Content-Type: text/html Servlet-Engine: Tomcat Web Server/3.2 Content-Length: 59
Hello World!
La línea de estado empieza con el nombre del protocolo, seguido por el c ódigo de resultado y una breva descripci ón del código de resultado. Aquí el código de resultado es 200, que significa que sali ó con éxito. El mensaje de respuesta tiene títulos, como el de consulta. En este ejemplo: El título Last-Modified da la fecha y hora de cuando el recurso fue modificado por última vez. El cliente puede utilizar esta informaci ón para marcar la p ágina el su caché, y pedir en el futuro solamente las que fueron modificadas. El título Content-Type dice al navegador que tipo de datos contiene el cuerpo de la respuesta. El título Content-Length dice al navegador el tama ño del cuerpo de la respuesta. Una línea vacía separa los títulos del cuerpo de la respuesta. El cuerpo de la respuesta contiene el c ódigo que será enseñado en el navegador. Aquí una simple página HTML. El cuerpo puede contener páginas HTML más complicadas, u otro tipo de contenido (imagen, sonido, archivo comprimido,...). El cuerpo puede también contener código que va generar otras consultas al servidor, como la inserción de una imagen.
4.4 Parámetros de consulta Se pueden pasar par ámetros de consulta a dentro del URL. Por eso, después del nombre de la p ágina, hay que mencionar un punto de pregunta '?' y uno a varios par ámetros deparados por '&', con el nombre del par ámetro, el signo '=', y el valor del par ámetro. Veremos ejemplos utilizando los formularios.
étodos de consulta 4.5 M Ya hemos visto el uso del método GET. Tambi én existe el método POST. La diferencia entre los dos es que el m étodo GET pasa los parámetros a dentro del URL, así que se puede guardar f ácilmente en su lista de marcadores. Tambi én, en navegador sabe que este m étodo no puede dañar el servidor, as í acepta de someter la consulta nuevamente (refresca) sin alerta. El método POST, en vez de pasar los par ámetros en el URL, les pasa a dentro del cuerpo de la consulta. Eso permite enviar consulta de tama ño más grande que 2000 caracteres, y sin que los par ámetros aparecen en el URL. Como los parámetros están guardados a dentro del cuerpo de la consulta, la consulta no puede ser guardada tan f ácilmente en los marcadores, porque adem ás del URL, deberá guardar el cuerpo de la consulta. También, cuando se proba de enviar de nuevo una encuesto POST (refresh) el navegador genera una alerto porque este acción puede generar acciones posiblemente irreversible al nivel del servidor.
Ejemplo de consulta POST generada por el formulario arriba: POST / prueba.jsp HTTP/1.0 Host: www.businesssoft.com.ni User-Agent : Mozilla/4.5 [en] (WinNT; I) Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-language : en Accept-charset : iso-8859-1,*,utf-8 cuidad=Managua&pais=Nicaragua
Ejemplo de Socket que se conecta conecta al servidor Web local (Tomcat), le envía una consulta HTTP y recibe la página HTML. LeerWeb.java: import java.io.*; import java.net.*; public class LeerWeb { public LeerWeb() throws Exception { Socket s = new Socket("127.0.0.1", 8080); OutputStream os = s.getOutputStream(); PrintStream ps = new PrintStream(os); ps.print("GET / HTTP/1.0\r\n\r\n"); InputStream is = s.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = br.readLine(); while (line!=null){ System.out.println(line); line=br.readLine(); } } public static void main(String[] args) throws Exception { LeerWeb test = new LeerWeb(); } }
5 Instalación del servidor JSP 5.1 Jakarta Tomcat Para poder poner en práctica el lenguaje JSP, necesitamos un servidor con capacidad JSP. Por eso, vamos a utilizar el famoso servidor Tomcat, de la fundaci ón Apache. El Tomcat hace parte del proyecto Jakarta de la fundaci ón Apache. El servidor Tomcat es un producto gratuito y libre: su c ódigo fuente est á disponible, al lado de las versiones compiladas. Tomcat está disponible para varios sistemas operativos, y est á muy utilizado bajo Unix y Linux, por sus estabilidad.
5.2 Instalación Antes de instalar el servidor Tomcat (versi ón 7.0), el Java JRE versi ón 1.6 o arriba tiene que ser instalado en el servidor. Para instalar Tomcat, en Windows existe un instalador, y en Linux basta con descomprimir el archivo zip o gz en una carpeta local (como su carpera /home/usuario). Es importante de leer las notas de instalaci ón para ver si no hay informaciones importante para nuestra configuración.
5.3 Configuración de Eclipse Se requiere crear un servidor en Eclipse para poder manejar Tomcat desde Eclipse. Escoge la perspectiva Java EE, vista de servidores, y crear un nuevo servidor.
5.4 Verificación de la instalaci ón Para verificar si la instalación es exitosa, inicia el servidor desde Eclipse Luego abrimos un navegador web y vamos al domicilio: http://localhost:8080 Por defecto, el servidor de Tomcat utiliza el puerto 8080, para no chocar con un eventual servidor Apache (puerto 80). Ahí tenemos que encontrar la p ágina por defecto de Tomcat, o una p ágina de error de Tomcat.
6 Uso de herramienta y entorno 6.1 Eclipse Para diseñar las páginas JSP, vamos a utilizar la herramienta Eclipse Ganymede, en su veris ón J2EE o Reporting. Estos programas son libres y gratuitos, y funcionan bajo Windows como bajos Linux. 6.1.1
Creaci ón del servidor
Eclipse integra la posibilidad de manejar una multitud de servidores web diferente desde Eclipse. Eso permita el nuevo despliegue, de manera autom ática, del sitio después de cada cambia. Y tambi én permite visualizar la consola del servidor en Eclipse, para una depuración más comoda. Para crear un servidor, presiona CTRL + N. Escoja 'Servidor' en la lista. Luego escoje el tipo 'Tomcat 7'.
Para crear nuestra primera p ágina JSP, necesitamos crear un nuevo sitio web en Tomcat. Por eso, en Eclipse, creamos un nuevo proyecto de tipo 'Dynamic Web Project', que llamamos ‘curso’. Escojamos como 'Target Runtime' el servidor que hemos creado en el punto anterior. Como versi ón de modulo escojamos 3.0, y como configuraci ón ''. Luego aceptamos los valores por defecto. defecto.
Una vez creado, validamos las propiedades del proyecto, y agregamos el proyecto al servidor Tomcat 7.
Para agregar el proyecto proyecto al servidor, hacer doble clic sobre el servidor en la pantalla abajo a la derecha, escoja la pestaña 'Module' y agrega el proyecto 'curso'.
6.1.3
Creación de la pá gina de índice
Para poder probar el servidor, vamos a crear nuestra primera p ágina JSP. Por eso, hacemos un clic derecho sobre la carpeta WebContent del proyecto curso, en Eclipse, y elegimos ‘new’...’JSP'.
Una vez elegido, mencionamos el nombre de la p ágina, que ser á index.jsp. Todas la p áginas con extensi ón JSP (.jsp en minuscula) serán traducidas por el servidor en un servlet (c ódigo Java) y producir án una página HTML como salida.
Para probar si la p ágina funciona, tenemos que llenarla con alg ún código JSP y/o HTML. Con un doble clic sobre index.jsp abrimos su contenido. Miramos que ya viene con alg ún código pre-hecho. Vamos a modificar el código de la manera siguiente, y lo guardamos: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%! String titulo="Mi primera Página JSP"; int nrPagina=1; %> <%=titulo%>
<%=titulo%>
Este es mi página en JSP numero <%= nrPagina%>.
En el futuro, no escribiré en el manual los encabezados generados por el entorno, como no son obligatorio para que funciona bien el c ódigo.
<%@page...>
porque
Iniciamos el servidor.
Luego miramos el resultado con un navegador web en el domicilio: http://localhost::8080/curso/ http://localhost::8080/curso/ o o http://localhost:8080/curso/index.jsp Por defecto, si ninguna página esta especificada en el URL, el servidor busca primero la p ágina index.html, luego index.htm, y luego index.jsp. Este opci ón puede ser modificada al nivel del servidor, y/o al nivel del sitio, en el archivo web.xml.
7 Utilización de los scriptlets 7.1 ¿Qu é son los scriptlets? Los scriptlets son las etiquetas que permiten de delimitar el c ódigo JSP, que tiene que ser analizado por el servidor JSP, del código HTML, que tiene que ser enviado al cliente como tal. As í el servidor JSP combina el código HTML con el resultado del código JSP para obtener la página HTML que será regresada al cliente y le ída por el navegador del cliente. El JSP es la parte de la programaci ón que se ejecuta al nivel del servidor, en contra del lado del cliente.
JavaScript ,
que se ejecuta al
7.2 Los scriptlet de declaración de variables El scriptlet de declaración de variable sirven para declarar variable que ser án accesible de desde cualquier lugar de la página JSP. Son equivalente a variable de clase. Los scriptlets se utilizan generalmente a dentro de la cabecera, o en el cuerpo de la p ágina HTML, antes de los scriptlets de código. El scriptlet de declaración está encerrada entre '<%!' '<%!' y '%>' (sin las cuotas). Ejemplo: <%! String titulo="Mi primera Página JSP"; int nrPagina=1; %>
7.3 Los scriptlet de utilizaci ón de variables El scriptlet de utilización de variable sirven para mencionar el valor de una variable en el c ódigo HTML. Sólo puede contener una variable, pero tambi én se puede utilizar métodos de objetos existente, o nuevos objetos). El scriptlet de declaración está encerrada entre '<%=' y '%>' (sin las cuotas), y no lleva punto-coma. Ejemplo:
<%=titulo%>
7.4 Los scriptlets de código Un scriptlet de código está encerrado entre '<%' y '%>' (sin las cuotas). Un scriptlet de código puede ser utilizado para escribir el código Java que se ejecutara en la p ágina JSP. Se puede utilizar para declara clases cómo para implementar esquema de decisi ón a dentro de la p ágina para que sea dinámica. Los scriptlets se pueden utilizar a dentro de la cabecera, o en el cuerpo de la p ágina HTML. Si el scriptlet tiene que generar algún código HTML, hay dos posibilidades: 1. el código HTML se genera a dentro el c ódigo Java utilizando el método out.print o out.println 2. se abre abre un bloque bloque de código Java, se cierra el scriptlet y se pone el c ódigo HTML cómo en una página HTML normal (pero se puede utilizar otros scriptlets a dentro de este c ódigo).
El scriptlet que genera código HMTL tendrá que estar puesto al lugar de destino en el c ódigo HTML. Así que de costumbre las páginas JSP contienen varios scriptlets. Primero, en la cabecera, un scriptlet con el c ódigo de inicialización de las variables y el c ódigo que no genera c ódigo HTML, y en el cuerpo, el los lugares deseados, los scriptlets que generaran código HTML para completar el c ódigo HTML fijo. Ejemplo no 1: <%! String titulo="Mi primera Página JSP"; int nrPagina=1; %> <%=titulo%>
<%=titulo%>
Este es mi página en JSP numero <% nrPagina++; out.print (""+nrPagina+" y me conviene el JSP"); %>.
Ejemplo no 2: Por ejemplo, en el código siguiente, según la hora del día, se marcara 'Buenos d ía', o 'Buenas tarde', o 'Buenas noche'.
Saludo <% java.util.Date clock = new java.util.Date( ); %> <% if (clock.getHours( ) < 12) { %>
Buenos días!
<% } else if (clock.getHours( ) < 18) { %>
Buenas tardes!
<% } else { %>
Buenas noches!
<% } %>
7.5 Agregar comentarios Para agregar comentarios en un scriptlet, se pueden utilizar los comentarios de Java : para múltiple líneas.
//
para simple línea, /* y */
Para comentarios afuera de un scriptlet, pueden utilizar los comentarios HTML, que son contenidos entre , pero estos comentarios ser án enviados al navegador del cliente y, a ún que no será visible en la página web, serán visible por el usuario si el pregunta al navegador de ense ñarle el código fuente. Si quieren poner comentarios afuera de un scriptlet, pero que no sea enviado al navegador del usuario (y as í invisible para el), hay que utilizar el scriptlet de comentarios JSP que empieza con <%-- y termina con --%>.
8 Utilización de directivas Las directivas de páginas dan informaciones sobre la página al servidor JSP. No generan ninguna informaci ón visible para el usuario, pero permite determinar la manera que el servidor va utilizar para tratar el c ódigo JSP de la p ágina. Existen tres tipos de directivas: de p ágina, de inclusión, y taglib . Para adjuntar una directiva, hay que incluirla entre %@ y %>. La instrucci ón de directiva incluye el tipo de directiva, el par ámetro de la directiva, el signo igual, y la valor del parámetro, en este orden.
<
8.1 Directiva de pá gina La directiva de página es la m ás utilizada. Ella permite de especificar informaciones relativas a la configuraci ón de la página JSP, como el tipo de contenido. As í si el contentType = "text/plain" , la página JSP resultando se enseñara como texto normal, y no HTML. Ciertos navegadores, como Internet Explorer, quieren ser demasiado inteligente y corregir las supuesta errores del desarrollador, así que mismo con la directiva de página para indicar que es un texto normal, el lo tratara como HTML... Esta aconsejado de incluir las directivas de página en cima del código, antes de la etiqueta
.
Ejemplo: <%@ page contentType="text/plain" %> Test directiva de página La fecha de hoy es <%= new java.util.Date() %>
8.1.1
Lista de parámetros para directiva de P ágina
Att Attri ribu buto to autoFlush
buffer
contentTyp contentType e erro errorP rPag age e extend extendss
Defe Defect cto o true Está verdadero (true) cuando el buffer de la p ágina debe ser enviado automáticamente cuando est á lleno, o falso (false) si una excepci ón debe ser generada cuando esta lleno. 8kb Especifica el tamaño del buffer para esta página. El tama ño debe ser expresado en kilobytes, seguido de kb, o tiene que ser la palabra clave none (ninguna) para deshabilitar la opción del uso de un buffer. text/html text/html Especifica Especifica el tipo MIME de la respuesta respuesta generada generada por la página, y de manera opcional, el tipo de caracteres de la p ágina fuente y de la respuesta. No defe defect cto o Una Una página JSP que hay que enseñar en case de error durante la ejecuci ón del código de la página. No defect defecto o El nombre nombre comple completo to de la clase clase Java Java que la página JSP generada extiende. La clase tiene que implementar el JspPage o el interfaz HttpJspPage del paquete javax.servlet.jsp . Nota que no está recomendado de utilizar este atributo. Especificando su propio superclass restringe la posibilidad del contenedor JSP de entregar una superclass especializada y de alto rendimiento. No def defecto ecto Dec Declar laraci ación de la importaci ón de clases o paquetes Java (separados por coma) No defect defecto o Texto Texto que un conten contenedo edorr web puede puede utiliz utilizar ar como como descri descripci pción de la página en su interfaz de administraci ón.
Copyright C édric Simon, 2005-2011
Versi ón 2.3
Reproducci ón prohibida
Curso de Java Server Pages – Nivel b ásico
isErrorPage
false
isThreadSafe
true
lang langua uage ge session
java java true
Pagina 23 / 46
Si está puesto a verdadero (true), significa que esta p ágina es una página de error personalizada, y permite el uso de la variable impl ícita exception a dentro de los scriptlets. Utiliza falso ( false) para páginas JSP normales.. Si está puesto a verdadero (true), el contenedor est á permitido de utilizar varios hilos de ejecución a trav és de esta p ágina (por ejemplo, tratar consultas de la pagina en paralelo). Si est á falso (false), el contenedor trata las consultas por la p ágina en serie. La recomendaci ón es de utilizar siempre verdadero ( true) y manejar los problemas de ejecución multihilo evitando declaraciones JSP y asegurándose que todos los objetos utilizados en la pagina son proceso-seguro (thread-safe). Defi Define ne el idio idioma ma de scri script ptin ing g util utiliz izad ado. o. Si está puesto a verdadero (true), la página participa en la sesión del usuario. Si está falso (false), las variables de sesi ón implícitas no están disponible en la página.
Una unidad de translación ( la fuente JSP y todos los archivos incluidos utilizando la directiva de inclusi ón) pueden contener varias directivas de p ágina, pero solo un ejemplo de cada atributo puede ser presente, a la excepci ón del atributo import. Si varios import están utilizados, estarán todos ajuntados en una lista de definición de importaci ón. Ejemplo: <%@ page language="java" contentType="text/html;charset=Shift_JIS"%> <%@ page import="java.util.*, java.text.*" %>
8.2 Directiva de inclusión La directiva de inclusión permite incluir a dentro de la página JSP uno o varios archivos de texto o HTML. Eso permite de incluir un mismo archivo en varias paginas JSP, sin tener que copiarlo. Los nombres de archivos incluidos pueden tener cualquiera extensión (txt, html, inc, jsp...), pero existe una extensi ón específica 'jspf' (JSP Fragment) que permite la validaci ón del código incluido en varios entornos (Eclipse,...). El archivo incluido tiene que ser presente y accesible en el sistema de archivos del servidor JSP. Ejemplo: Test directiva de página Aquí mi texto incluido: <%@ include file="epl-v10.html" %>
8.3 Directiva taglib La directiva taglib permite de definir etiqu"etas personalizadas, para utilizar acciones personalizadas a dentro del JSP. La sintaxis es la siguiente: <%@ taglib uri="librería_de_etiquetas.tld" prefix="mi_accion" %> Para poder utilizarlas, necesitamos aprender las acciones personalizadas, que se miran en otro curso (JSP Avanzado).
9 Utilización de variables de sesión Las variables de sesión son variables que se pueden atribuir a un cliente conectado, y que ser án disponible por el tiempo que dura la sesión: La sesión expira cuando se cierra en navegador, o no se navega en el sitio por un cierto tiempo (depende de la configuraci ón del servidor y se puede modificar en el c ódigo JSP), o cuando se invalida la sesi ón explícitamente en el c ódigo JSP. Cada cliente conectado podrá así tener sus propias valores que se quedaran guardadas en la memoria del servidor.
9.1 Declaración de variable de sesión Para declara o cambiar el valor de una variable de sesi ón, se utiliza el método setAttribute(String del objeto session .
nombre, Object valor)
Por ejemplo: session.setAttribute("nombre","Cedric") crea la variable de sesión nombre con el valor Cedric. Si la variable ya existe, solo le cambia el valor.
9.2 Recuperar el valor de un variable de sesión Para recuperar el valor de un variable de sesi ón, se utiliza el método getAttribute(String variable no existe, regresara el valor nulo.
nombre)
del objeto
session .
Si la
Por ejemplo: session.getAttribute("nombre") regresara un objeto. Este objeto tiene que ser convertido de manera explicita en String. El valor del String será Cedric, según el ejemplo de arriba. Ejemplo: String miNombre=(String) session.getAttribute("nombre");
9.3 Invalidar una sesión Para invalidar una sesión, se utiliza el método invalidate() del objeto Por ejemplo:
session.invalidate()
session .
va a invalidar la sesión corriente del usuario.
9.4 Otros m étodos Para ver los otros m étodos disponibles (removeAttribute, getId, getId, ...) referirse a la documentaci ón java del interfaz javax.servlet.http.HttpSession
10Objetos implícitos Cuando usan scriptlets en una página JSP, hay un sin número de objetos (situados abajo) que el contenedor JSP mantiene disponible. Estos objetos están llamados objetos implícitos. Estos objetos son instancias de clases definidas en las especificaciones del servlet y del JSP. Para los detalles, ver la documentaci ón de Java disponible en línea . Nombre Nombre de Variab Variable le Typo Typo request response pageContext session application out config page exception
10.1request El objeto request es una instancia de la clase javax.servlet.http.HttpServletRequest . Este objeto le ofrece m étodos para acceder a toda la informaci ón de la consulta http corriente, como los par ámetros, atributos, cabeceras, y cookies.
10.2response El objeto
representa el mensaje de la respuesta corriente. Es una instancia de la clase javax.servlet.http.HttpServletResponse , con métodos para definir la cabecera, el c ódigo de estado, y para adjuntar cookies. También ofrece m étodos para seguimiento de sesi ón. response
10.3session El objeto
le permite acceder a los datos de sesi ón del cliente, manejados por el servidor. Es una instancia de javax.servlet.http.HttpSession class . session
10.4application Es una instancia de javax.servlet.ServletContext class . Este objeto mantiene referencias a otros objetos que varios usuarios pueden acceder, como una conexi ón de base de datos compartida por todos los usuarios. Tambi én contiene métodos como log() para escribir mensajes en el diario del contenedor.
10.5out Es una instancia de javax.servlet.jsp.JspWriter . Tiene dos métodos principales, que son System.out , solo que escribe la salida en la futura p ágina HTML.
print()
y println() . Es parecido al
10.6exception El objeto Exception es disponible solamente en páginas de error, y contiene informaciones sobre la error de ejecuci ón que ocurrió. Lo utilizaremos en el capitulo de gesti ón de errores. Existen tres tres otros otros objetos impl ícitos (pageContext, config, and page ) pero está muy raro que se usan en JSP.
11Los formularios 11.1Creación del formulario Los formularios están creados simplemente en HTML. El JSP se puede utilizar a dentro del formulario para, por ejemplo, asignar valores por defecto o desactivar ciertos campos seg ún la información disponible (variable de sesión, u otro formulario). Es muy importante que cada campo del formulario tenga un nombre (par ámetro NAME del campo). Para el parámetro METHOD , les aconsejo siempre utilizar Aquí vamos a utilizar una página JSP.
POST.
El parámetro ACTION puede ser un servlet o una página JSP.
11.2Tratamiento del formulario Cuando el formulario está enviado, la página JSP a la cual se env ío puede recuperar el contenido de cada campo utilizando el método getParameter o, si varias valores pueden ser elegidas a la misma vez en el campo getParameterValues, del objeto request . Los métodos getParameter
y getParameterValues
acepta un parámetro : el nombre del campo por lo cual deseamos el valor.
Si probamos de sacar el valor de un campo que no existe, el valor ser á nulo. Para más facilidad, se pueden guardar los valores en variables. Por defecto, todos los par ámetros son de tipo String para getParameter, y String[] para getParameterValues. Si queremos cambiarlos a otro tipo, hay que utilizar los m étodos Java apropiados para convertir los tipos. El objeto
tiene también otros métodos que permiten obtener informaci ón sobre la consulta en curso, entre otros: getLocal() : regresa los par ámetros locales del PC del cliente getRemoteAddr() : regresa el IP del PC del cliente getRemoteHost() : regresa el nombre del PC del cliente request
Ejemplo: formulario.jsp (que se podría también llamar formulario.html porque no lleva c ódigo JSP) Test formulario
Su nombre : <%=nombre%> Su apellido : <%=apellido%> Su domicilio : <%=domicilio%> Su cuidad : <%=cuidad%> Su pais : <%=pais%> Su celular : <%=cel%> Su telefono : <%=tel%> Su nota : <%=nota%>
El nombre de su PC : <%=request.getRemoteHost()%> El IP de su PC : <%=request.getRemoteAddr()%>
12Elementos de acciones est ándar 12.1 Envía el procesado de una consulta a un servlet o una p ágina JSP. El env ía a otra página o servlet sin cambiar el URL de origen. Ejemplo:
12.2 Incluye un servlet o JSP durante la fase del proceso de consulta. Ejemplo:
12.3 Adjunta un valor de parámetro a una consulta pasada a otro servlet o JSP utilizando o . Ejemplo:
12.4 Genera un código HTML que contiene los elementos (OBJECT o EMBED ) apropiados dependiendo del navegador del cliente, necesarios para ejecutar un Applet con el programa de Java Plugin. Los atributos code,
Desc Descri ripc pci ón i Alineación del applet. Valores válidas: bottom, middle, top . Lista de URIs para archivos conteniendo clases y otros recursos que ser án precargados, utilizando AppletClassLoader y el atributo Codebase (URIs relativos). El nombre completo de la clase del objeto. El camino relativo hacia la carpeta que contiene la clase. Debe ser una subcarpeta del sitio. Altura de la zona del applet. En píxeles o en porcentaje. Cuantidad de espacio blanco a dejar a la derecha y izquierda de la zona del applet, en píxeles. Dirección URL a donde se encuentra una versión del plugin Java para Internet Explorer. Actualmente, el plugin se encuentra en el JRE. Versión de JRE mínima requerida para que funciona el plugin. Nombre del applet, utilizado por otras applet en la misma p ágina, para comunicarse. Dirección URL a donde se encuentra una versión del plugin Java para Nescape.
Copyright C édric Simon, 2005-2011
Versi ón 2.3
Reproducci ón prohibida
Curso de Java Server Pages – Nivel b ásico
type vspace width
Pagina 30 / 46
Actualmente, el plugin se encuentra en el JRE. Tipo de objeto: applet o bean. Cuantidad de espacio blanco a dejar arriba y abajo de la zona del applet, en p íxeles. Ancho de la zona del applet. En píxeles o en porcentaje.
Ejemplo de plugin: ... Ejemplo de plugin... Plugin tag OBJECT or EMBED not supported by browser. ...
12.5 Permite asignar un valor a uno o varios par ámetros del applet.
12.6 Permite enseñar un texto en caso de que el navegador del cliente no soporta elementos