ft jav a es manual jee jdbc servlet jsp

145
Acceso a base de datos con Java JEE: Servlets y JSP Madrid, Noviembre de 2009 JDBC, Servlets y JSP

Upload: victor-martinez

Post on 07-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 1/145

Acceso a base de datos con Java

JEE: Servlets y JSP

Madrid, Noviembre de 2009

JDBC, Servlets y JSP

Page 2: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 2/145

22

confidencialidad Aviso: Este documento es material confidencial y propiedad de everis. Se prohíbeel uso, reproducción o la divulgación del contenido de este material sin permisoprevio y por escrito de la empresa propietaria.

Derechos de Autor © 2009, everis. All rights reserved

Page 3: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 3/145

44

Acceso a base de datos desde aplicaciones Java con el API JDBC 

Introducción a la plataforma de desarrollo JEE (Java Platform Entreprise Edition) 

Desarrollar Servlets Java

Desarrollar páginas JSP (Java Server Pages)

Diseñar aplicaciones multicomponente JEE

Filtros para aplicaciones WEB

objetivos del curso

Page 4: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 4/145

55

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP

5. Aplicaciones distribuidas multicomponente

6. Filtros en aplicaciones WEB

índice

Page 5: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 5/145 66

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP

5. Aplicaciones distribuidas multicomponente

6. Filtros en aplicaciones WEB

índice

Page 6: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 6/145 77

Aproximadamente la mitad del software que se desarrolla en la actualidad implicaoperaciones cliente/servidor. Bajo esta forma de trabajo, las aplicaciones se dividen

típicamente en al menos dos partes:

La parte cliente, la más cercana al usuario final, y se ocupa de la interacción

con él. La parte servidor, que proporciona servicios a la parte cliente.

Uno de los servicios más representativos de las aplicaciones cliente/servidor es el

de acceso a datos.

La información se almacena en repositorios ajenos a las aplicaciones: las

bases de datos.

Un software específico se encarga de su gestión. Las aplicaciones consultan

y modifican los datos dialogando con ese software gestor.

jdbcintroducción a las bases de datos

Page 7: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 7/14588

Se denomina sistema gestor de bases de datos (SGBD o DBMS en inglés) alsoftware específico que controla la creación, mantenimiento y el uso de bases de

datos.

La tipología más usada de SGBD en la actualidad son las bases de datos

relacionales. Están basadas en un modelo matemático robusto ideado por E.F. Codd a

finales de los 70

jdbcintroducción a las bases de datos

Las BD relacionales usan un lenguaje para obtener y

modificar datos llamado SQL o Structured QueryLanguage (estándar ANSI desde 1986)

Page 8: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 8/14599

Las peticiones sobre los datos se expresan en SQL mediante sentencias Deben escribirse de acuerdo sus propias reglas sintácticas y semánticas.

El gestor de la base de datos interpreta las sentencias SQL, las ejecuta, y devuelve

al solicitante los resultados, completando así un intercambio petición/respuesta.

Existen cuatro sentencias primordiales en SQL de manipulación de datos: SELECT. Usada para consultas

INSERT. Usada para crear nuevos registros de datos

UPDATE. Usada para modificar los datos de registros existentes

DELETE. Usada para eliminar registros existentes.

jdbcsql

Page 9: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 9/1451010

Uno de los mayores problemas con las BD es la rivalidad que hay entre los

fabricantes para proporcionar las mejores características.

Cada fabricante tiene un método distinto para usar su BD y sus características

propias

La aplicación de acceso a BD es dependiente del fabricante, característicaindeseable casi siempre.

Lo ideal es disponer de un único mecanismo de acceso a cualquier BD de forma

que, al cambiar de un fabricante a otro, la aplicación se tenga que cambiar lo mínimo

Microsoft resolvió el problema con su estándar ODBC (Open DataBase Connectivity ): un controlador universal que permite el acceso de BD de un

módos estándar sin cambios de código. Problema: sólo funciona bajo Windows.

jdbcantecedentes jdbc

Page 10: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 10/145

1111

 JDBC (o Java DataBase Connectivity ) es la solución que Sun Microsystems

desarrolló para trabajar con bases de datos relacionales administradas con SGBDs.

Es un conjunto de interfaces i clases Java que pertenecen a los paquetes

java.sql y javax.sql.

Se base en el mismo concepto que ODBC Al ser Java, es independiente de la plataforma.

jdbc¿qué es JDBC?

Proporciona la misma interfaz para

acceder a bases de datos de cualquier

fabricante mediante SQL. Éstos proporcionan un driver (o puente)

para acceder a su sistema particular.

Page 11: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 11/145

1212

Para conectar con BD, antes es necesario un controlador o driver

Los fabricantes los desarrollan y suministran la implementación de las interfaces

del API de JDBC.

Existen cuatro tipos de drivers, mostrados en la siguiente figura:

jdbcdrivers

Page 12: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 12/145

1313

Tipo 1: Puente JDBC ODBC

jdbcdrivers

Aplicación Java

JDBC API

Puente JDBC-ODBC

ODBC Driver

ODBC Protocolo nativo BD

Cliente El tipo de driver más simple

Traduce las peticiones JDBC a peticiones

ODBC

Viene incluido con la JSE

Es el método más ineficiente debido a la

doble traducción

Page 13: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 13/145

1414

Tipo 2: API nativa

jdbcdrivers

Aplicación Java

JDBC API

Puente JDBC Nativo

Driver nativo

BD

Cliente El cliente (nuestro programa) debe tener el

driver instalado en su máquina, así como el

programa cliente que trata con el SGBD.

El driver traduce las llamadas JDBC en

llamadas nativas del SGBD.

Es muy eficiente en entornos cerrados pero

su radio de actuación es a nivel local.

Page 14: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 14/145

1515

Tipo 3: Driver de red

jdbcdrivers

Aplicación Java

JDBC API

Puente JDBC Nativo

Driver JDBC

BD

Cliente

El cliente no requiere de instalación de un

driver específico

Se usa un servidor de red middleware de

JDBC que permite conectar varios clientescon múltiples bases de datos.

El servidor traduce las peticiones en

llamadas nativas al SGBD

Servidor

de Red

Librería

fabricante

Es la solución más flexible

de las cuatro porque el

servidor abstrae los detalles

de la conexión.

Page 15: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 15/145

1616

Tipo 4: Todo Java

jdbcdrivers

Aplicación Java

JDBC API

Puente JDBC Nativo

Driver JDBC

BD

Cliente El cliente (nuestro programa) no requiere la

instalación del driver (se halla en el servidor).

JDBC convierte directamente las llamadas

en el protocolo de red que usa el SGBD

Son los más rápidos ya que no requieren

traducción ni tienes software intermedio

Es necesario que el fabricante nos entregue

su driver específico. Es el tipo de driver más usado

Servidor

de Red

Page 16: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 16/145

1717

A continuación

se muestran las

principales clases

e interfaces de la

API de JDBC Sus

implementaciones

las realiza el

driver proveedorde BD

jdbcrelación de clases e interfaces

Page 17: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 17/145

1818

jdbcrelación de clases e interfaces

• Se encarga de leer todos los drivers.DriverManager

• Representa una conexión con una base dedatos concretaConnection

• Representa una sentencia SQL.Statement

• Conjunto de registros devuelto por unasentencia SELECTResultSet

• Proporciona información acerca de una basede datos como las tablas que contiene, etc.DatabaseMetadata

Page 18: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 18/145

1919

Para usar una base de datos desde Java es necesario obtener una referencia aella, que se identifica a través de un objeto de la clase Connection.

Para ello es necesario obtener antes el driver JDBC apropiado así como cargarlo

en memoria. Los pasos son los siguientes:

jdbcconectar a una BD

1. Instalar el driver JDBC

• Conseguir la biblioteca suministrada por el fabricante de SGBD• Vincularla a nuestro programa con el Classpath

2. Cargar el driver en memoria

• Invocar el método estático forName(…) de la clase Class

3. Obtener la conexión

• Invocar DriverManager.getConnection(cadenaConexión)• El parámetro contiene el protocolo, la URL y otros datos

Page 19: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 19/145

2020

La llamada Class.forName(…) recibe como parámetro una cadena con elnombre canónico de la clase Java que implementa la interfaz java.sql.Driver.

Esta llamada permite cargar esta clase en la memoria de la máquina virtual.

Cada driver tiene su propia clase. Ver su documentación

El parámetro de Driver.getConnection(…) es un string que indica a JDBCcuál es el gestor y la base de datos con la que queremos trabajar. La cadena tiene el

siguiente formato:

<protocolo>:<subprotocolo>:<subnombre>

 <protocolo> es siempre la cadena jdbc

 <subprotocolo> es un identificador del driver. Ver su documentación

 <subnombre> es la forma de identificar la base de datos concreta. Su sintaxis

depende de cada driver.

jdbcconectar a una BD

Page 20: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 20/145

2121

Por ejemplo, para una conexión mediante el puente JDBC-ODBC a una base dedatos “prueba”, su cadena de conexión sería:

jdbc:odbc:prueba

jdbcconectar a una BD

jdbc

Protocolo

odbc

Subprotocolo

 prueba

Subnombre

: :

Para conectarse a la base de datos Oracle llamada everis ubicada en la máquina

 jupiter en el puerto 1522 su cadena de conexión sería:

jdbc:oracle:thin:@jupiter:1522:everis

Page 21: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 21/145

2222

// En este ejemplo usaremos las dos conexiones de la diapositiva

// anterior (puente ODBC y Oracle)

//Conexión puente JDBC-ODBC

//1. Carga del driver en memoria

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

//2. Cadena de conexiónString sURL = “jdbc:odbc: prueba”;

//3. Obtención de la conexión

Connection conn = DriverManager.getConnection(sURL, “juan”, “clave”);

//Conexión Oracle Class.forName(“oracle.jdbc.driver.OracleDriver”);

String sURL = “jdbc:oracle:thin:@jupiter:1522:everis”;

Connection conn = DriverManager.getConnection(sUrl, “Juan”, “clave”);

jdbcejemplos de conexión

Page 22: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 22/145

2323

Para los ejemplos de este manual usaremos una base de datos Access 2003 Conectaremos nuestra aplicación Java con esta base de datos mediante el puente

JDBC-ODBC.

Aunque es la solución menos eficiente es la más rápida puesto que JDBC lleva

incorporado en su biblioteca el puente (y no hemos de obtener otros drivers deun fabricante).

La base de datos tendrá una única tabla llamada empleados con la siguiente

estructura:

jdbcpuente JDBC - ODBC

Page 23: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 23/145

2424

Para agregar un origen de datos desde un archivo Access es necesario seguir lossiguientes pasos:

Ir a Panel de Control Herramientas Administrativas Orígenes de datos

(OBBC). Se abrirá una ventana.

Hacer clic en la pestaña DSN de sistema

Hacer clic en el botón Agregar… 

De un listado de controladores, seleccionar Driver de Microsoft Access

Al finalizar, aparece una nueva ventana:

Rellenar el campo Nombre del origen de datos (¡Importante! Este nombre

será el subnombre en JDBC cuando establezcamos conexión).

Escoger la base de datos en el botón Seleccionar… (debe ser *.mdb)

Hacer clic en aceptar y ya se ha creado el origen de datos

jdbcagregar un origen de datos

Page 24: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 24/145

2525

Antes de empezar con la manipulación de datos con JDBC, haremos un repaso delas sentencias SQL más comunes.

Sentencia INSERT

Crea un nuevo registro (fila o tupla) en una tabla concreta.

INSERT INTO <tabla> VALUES ( <atributos de la tabla> )

Se puede especificar a qué columnas daremos valores si ponemos sus

nombres entre paréntesis después de la tabla

Ejemplo:

INSERT INTO empleados(nombre, categ, sueldo, dept)

 VALUES („Fernando Francés‟, „Presidente‟, 300000,

„Presidencia‟ )

jdbcsentencias SQL

Page 25: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 25/145

2626

Sentencia UPDATE Actualiza los atributos de un conjunto de registros

UPDATE <tabla> SET <atributos a actualizar>

WHERE <condición>

 <atributos a actualizar> es un listado separado por comas de pares

atributo = valor

 <condición> es una expresión lógica. Se actualizarán aquellas filas que

cumplan con la condición

Ejemplo: subir el sueldo un 5% a todos los empleados que sean gerentes

UPDATE empleados SET sueldo = sueldo * 1.05

 WHERE categ = „Gerente‟ 

jdbcsentencias SQL

Page 26: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 26/145

2727

Sentencia DELETE

Borra un conjunto de registros

DELETE FROM <tabla>

WHERE <condición>

<condición> es una expresión lógica. Se eliminarán aquellas filas quecumplan con la condición

Ejemplo: borrar el empleado con identificador 495

DELETE FROM empleados

 WHERE idEmpl = 495

jdbcsentencias SQL

Page 27: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 27/145

2828

Sentencia SELECT

Consulta que devuelve un conjunto de resultados de datos

SELECT * | <conjunto atributos>

FROM <tablas>

WHERE <condición>

[GROUP BY <conjunto atributos>]

[ORDER BY <conjunto atributos>]

Las consultas pueden implicar a más de una tabla y podemos sacar una

mezcla de atributos de éstas.

La partícula GROUP BY sirve para agrupar datos siguiendo unos criterios.

La partícula ORDER BY ordena datos siguiendo unos criterios

jdbcsentencias SQL

Page 28: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 28/145

2929

Ejemplo 1: cargar completamente la tablaSELECT * FROM empleado

Ejemplo 2: buscar todos los atributos del empleado que tenga ID 4105

SELECT * FROM empleado

 WHERE idEmpl = 4105

Ejemplo 3: buscar el nombre y sueldo de los empleados de categoría Senior

SELECT nombre, sueldo FROM empleado

 WHERE categ = „Senior‟ 

Ejemplo 4: buscar la media del sueldo de los empleados de categoría Junior cuyo

nombre es David

SELECT  AVG(sueldo) FROM empleado

 WHERE categ = „Junior‟  AND nombre LIKE “David%” 

jdbcsentencias SQL

Page 29: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 29/145

3030

executeQuery(…). Usaremos su forma más sencilla, que recibe como parámetro

la consulta SQL como string.

El resultado de invocar el método es un objeto de la clase ResultSet

Para realizar consultas que impliquen modificaciones (INSERT, UPDATE, DELETE,

etc.) se usa el método executeUpdate(…). Como en la anterior, recibe como

parámetro la consulta SQL.

jdbcla clase Statement

JDBC utiliza la clase Statement para lanzarconsultas contra la base de datos.

No se instancian con new. Se obtienen a

través del objeto Connection.

Para realizar consultas (sentencias

SELECT), se usa el método

Page 30: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 30/145

Page 31: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 31/145

3232

try{

//1. Obtener la conexión con la BD

// Asumimos que ya disponemos de un objeto Connection conn

//2. Construir la sentencia SQL

String query = “INSERT INTO empleados(nombre, categ, sueldo, dept)”+ 

“VALUES („Juanito‟, „Junior‟, 18000, „Banca‟)”;

//3. Preparar un objeto StatementStatement stmt = con.createStatement();

//4. Ejecutar la sentencia SQL de actualización

stmt.executeUpdate(query);

//5. Cerrar los objetos

stmt.close();conn.close();

}catch(SQLException e){

System.err .println(“Error en la base de datos: ” + e.getMessage());

}

jdbcmodificación de tablas: ejemplo

Page 32: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 32/145

3333

Un ResultSet (o conjunto de resultados) es un conjunto de registros de una ovarias tablas que el SGBD devuelve como consecuencia de una consulta de

información (sentencia SELECT).

Los ResultSet no existen físicamente

jdbcla clase ResultSet

Son una instantánea en memoria de la situación de

los datos cuando se pidieron.

No se carga toda la base de datos en memoria,

sólo el subconjunto de datos que devuelve la

consulta.

Los ResultSet no se refrescan.

Si una tercera persona actualiza los datos en la

BD, los cambios no se reflejan en el ResultSet.

jdb

Page 33: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 33/145

3434

La navegación por los datos de un ResultSet se asemeja a la de un cursor (especie de puntero a registro).

El acceso es secuencial, de forma que un y sólo un registro se halla activo

cada vez.

La versión 2.0 de JDBC permite acceso no secuencial (ver más adelante).

Una vez un registro está activo, se pueden acceder a los datos de cualquier

columna. Podemos acceder por el nombre o por el índice de columna.

 ¡Importante! Cuando JDBC devuelve un ResultSet, el cursor al registro

activo está en la posición anterior al primer registro (una especie de índice -1),

por lo que primero que hay que hacer es avanzar el cursor hacia esa posición.

jdbcla clase ResultSet

jdb

Page 34: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 34/145

3535

A continuación se muestra los pasos que hay que hacer para llevar a cabo una

sentencia que consulta los datos de una tabla (SELECT)

jdbcconsulta de tablas

1. Obtener la conexión conla BD

• Ya visto anteriormente

2. Construir la sentenciaSQL

• La consulta es un string

3. Preparar un objetoStatement

• Se invocacreateStatement(…) de laclase Connection

4. Ejecutar la sentenciaSQL de consulta

• A través del métodoexecuteQuery(…) y lasentencia

• La ejecución devuelve un objetoResultSet

5. Navegar por el conjuntode resultados

•Invocar el método next() del objetoResultSet. Mientras devuelva true,quedan registros

• En cada iteración de registro, invocarlos métodos getXxx() deResultSet, dependiendo del tipo dedato

6. Cerrar los objetos

• Liberar los recursos pedidos através del método close()

jdb

Page 35: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 35/145

3636

//1. Obtener la conexión con la BD (asumimos que ya existe)

//2. Construir la sentencia SQLString query = “SELECT nombre, sueldo FROM empleado ” +

“WHERE categ = „senior‟”;

//3. Preparar un objeto Statement

Statement stmt = con.createStatement();

//4. Ejecutar la sentencia SQL de consulta y captura del ResultSet

ResultSet rs = stmt.executeQuery (query);

//5. Navegar por el conjunto de resultados//next() posiciona el cursor al siguiente registro y nos indica si

//existen aún más registros

while(rs.next()){

String nombre = rs.getString(1); //posición ordinal

int sueldo = rs.getInt(“sueldo”); //nombre de columna

System.out.format(“El empleado %s cobra %d €”, nombre, sueldo);

}

//5. Cerrar los objetos

rs.close();

stmt.close();

conn.close();

jdbcconsulta de tablas: ejemplo

jdbc

Page 36: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 36/145

3737

Cada vez que se envía una sentencia SQL al SGBD, éste último debe realizar una

serie de pasos para ejecutarla (llamados genéricamente compilación):

El primer paso es hacer un análisis sintáctico para comprobar que está bien

construida.

Los otros pasos consisten en optimización de recursos y tiempo.

Supongamos que se quiere ejecutar una misma sentencia varias veces (por

ejemplo, está en un bucle o bien cambia el valor de un parámetro)

Por lo visto anteriormente, el SGBD haría el análisis sintáctico y la optimización

a cada petición, cosa que hace el proceso muy ineficiente.

Lo óptimo sería que el SGBD validara únicamente una vez la sentencia y la

guardara para futuros usos. Eso es posible gracias a las sentencias

preparadas.

jdbcsentencias preparadas

jdbc

Page 37: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 37/145

3838

La clase Java que permite tal cosa se llama PreparedStatement

Es una subinterfaz de Statement, luego comparten métodos.

Ventajas respecto a un Statement

La ejecución es mucho más rápida al tratarse de sentencias precompiladas.

Una única compilación y múltiples ejecuciones.

Se pueden utilizar parámetros en la sentencia en forma de interrogaciones

(?). No hace falta construir sentencias concatenando Strings.

Ejemplo: “select sueldo from empleado where idEmpl = ?” 

Son más seguras frente a problemas como la inyección SQL

Los PreparedStatement se obtienen invocando el método

prepareStatement(…) de la clase Connection.

jdbcsentencias preparadas

jdbc

Page 38: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 38/145

3939

La llamada al método prepareStatement() se hace siempre proporcionando la

sentencia SQL que se quiere ejecutar (un String).

Antes de ejecutar un executeUpdate() o executeQuery(), se deben indicar

los valores para los parámetros variables (las ?)

Los valores se indican con métodos setXxx(pos, valor), donde Xxx es el

tipo de datos.

Mientras que el segundo parámetro es el valor en sí que sustituirá a ?, el

primero es la posición que ocupa cada ? (1 para el primero, 2 para el segundo,

etc.).

Se lanza una excepción si no se informan todos los parámetros al ejecutar la

sentencia.

 executeUpdate() y executeQuery() no tienen parámetros.

jdbcsentencias preparadas: consideraciones

jdbc

Page 39: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 39/145

4040

//1. Obtener la conexión con la BD (asumimos que ya existe)

//2. Construimos la sentencia SQL con parámetros

String query = “SELECT * FROM empleado” +

“WHERE categ = ? AND dept = ?”;

//3. Creamos un objeto PreparedStatement con la sentencia anterior

// Se enviará la sentencia al SGBD y la precompilará

PreparedStatement ps = con.prepareStatement(query);

//4. Añadimos los valores de los parámetros variables

ps.setString(1, “Junior”); //categ: atributo de texto

ps.setInt(2, 13); //dept: atributo numérico

//5. Ejecutamos la sentencia como si de un Statement se tratase

ResultSet rs = ps.executeQuery();

jdbcsentencias preparadas: ejemplo

jdbc

Page 40: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 40/145

4141

todos los cambios desde el inicio.

Existen dos formas de finalizar una transacción:

 COMMIT: todas las operaciones se han realizado sin errores y se han hecho

permanentes los cambios

 ROLLBACK: una operación ha generado un error y se aborta la transacción.

Todos los cambios desde el inicio de esta última se pierden.

jdbctransacciones

Una transacción es un conjunto de una o

más sentencias SQL que comprenden una

unidad lógica de trabajo.

Cuando se ejecuta la transacción, se

ejecutan todas las sentencias.

Si cualquiera de ellas falla, se deshacen

Page 41: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 41/145

jdbc

Page 42: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 42/145

4343

try{ 

//1. Obtener la conexión con la BD (asumimos que ya existe)//2. Indicar al programa que trabajamos sin auto-commit

con.setAutoCommit(false);

//3. Construimos dos sentencias SQL

String queryUpd = “UPDATE empleado SET sueldo = ? WHERE idEmpl = ?”;

String queryDel = “DELETE FROM empleado WHERE idEmpl = ?”;

//4. Creamos dos PreparedStatement

PreparedStatement psUpd = con.prepareStatement(queryUpd);

PreparedStatement psDel = con.prepareStatement(queryDel);

//5. Añadimos los valores de los parámetros variables

psUpd.setInt(1,20000); psUpd.setInt(2, 23); psDel.setInt(1, 13);

//6. Ejecutamos las sentencias

psUpd.executeUpdate();

psDel.executeUpdate();

//7.1 No hay error: aceptamos cambios

ps.commit();

} catch(SqlException ex){

//7.2 Ha habido algun error: deshacemos cambios

ps.rollback();

}

jdbctransacciones: ejemplo

Page 43: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 43/145

4444

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP5. Aplicaciones distribuidas multicomponente

6. Filtros en aplicaciones WEB

índice

Introducción a la plataforma JEE

Page 44: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 44/145

4545

Tras completar este apartado serás capaz de:

Describir las características generales de la tecnología J2EE (o JEE) Describir los distintos componentes que forman J2EE Conocer los tipos de clientes J2EE

Introducción a la plataforma JEEcaracterísticas

Introducción a la plataforma JEE

Page 45: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 45/145

4646

Introducción a la plataforma JEEcaracterísticas

Esta plataforma de desarrollo proporciona el marco de trabajo necesario para lacreación y despliegue de aplicaciones en red.

Existen tres ediciones de la plataforma Java 2:

Java 2 Estándar Edition J2SE (actualmente JSE) Java 2 Enterprise Edition JEE

Java 2 Micro Edition JME

Introducción a la plataforma JEE

Page 46: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 46/145

4747

 J2EE es una arquitectura multicapa para implementar aplicaciones de tipoempresarial y aplicaciones basadas en la Web.

Esta tecnología soporta una gran variedad de tipos de aplicaciones, desde las tipoWeb de gran escala a las pequeñas de tipo cliente servidor.

El objetivo principal de 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 proporcionadospor un servidor de aplicaciones, que de otro modo tendrían que estar incorporadosen el código de la aplicación.

Es importante reseñar que esto podría no ser lo ideal para todos los escenarios:

por ejemplo, una pequeña aplicación se cubriría mejor utilizado una solución de latecnología Java de peso ligero (por ejemplo, Servlets, JSPs, etc.).

Introducción a la plataforma JEEcaracterísticas

Introducción a la plataforma JEE

Page 47: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 47/145

4848

Aplicaciones clientes y Applets. Componentes que se ejecutan en el lado cliente. Servlets y páginas JSP. Son componentes que se ejecutan en el lado del servidor. Los Enterprise Java Beans; son los componentes de negocio que se ejecutan enel servidor de aplicaciones.

Otras tecnologías y servicios adicionales incluyen:

 JDBC. API que ofrece acceso a bases de datos relacionales. JTA/JTS. (Java Transaction API/Java Transaction Service), como soporte detransacciones para componentes JEE. JMS (Java Message Service), para comunicar asíncronamente componentes J2EE JNDI (Java Naming and Directory Interface), usado para acceder a directorios ynombres.

Todos estos componentes escritos en Java, se ensamblan en una aplicación JEE, severifica que estén bien formados y cumplen la especificación JEE y se despliegan enel entorno de producción, donde se ejecutan y son controlados por el servidor deaplicaciones JEE.

Introducción a la plataforma JEEtipos de tecnologías soportadas

Introducción a la plataforma JEE

Page 48: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 48/145

4949

parquitectura de n capas

Introducción a la plataforma JEE

Page 49: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 49/145

5050

Para mejorar la escalabilidad y modularización, la tecnología J2EE separa una

aplicación empresarial en varias “capas”: la capa cliente, la capa Web, la capa EJB yla capa EIS (Enterprise Information Systems).Capa, es una partición lógica de los componentes involucrados en un sistema. Cadacapa esta emparejada con las capas adyacentes. La capa cliente muestra la información y recoge la entrada del usuario. J2EEsoporta distintos tipos de presentación cliente, como HTML, Applets, XML, pero

también de clientes que no usan tecnología Java, como aplicaciones, CORBA oCOM (Component Object Model). La capa Web acepta entradas del usuario desde HTML, Applets y clientes XML ygenera respuestas apropiadas para el usuario. Esta capa se implementa por mediode servlets/JSP. La capa EJB (capa de negocio) es la base de la tecnología J2EE. Ofrece la

arquitectura escalable para ejecutar lógica de negocio en un entorno distribuido. LosEntity Beans soportan la persistencia de datos mientras los Session Beans soportanel proceso a favor del cliente.

parquitectura de n capas

Introducción a la plataforma JEE

Page 50: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 50/145

5151

Normalmente hay dos tipos de clientes J2EE, clientes Web y aplicaciones, tal como

se vio en la figura anterior.

Un cliente Web consta de dos partes, páginas Web dinámicas que contienendistintos tipos de lenguajes de marcas que son generados por los componentes Webque se ejecutan en la capa Web, y un navegador Web que dibuja las páginasrecibidas desde el servidor.

Otra categoría de clientes Web son los conocidos como clientes thin  (ligeros). Estetipo de pequeños clientes normalmente no hacen cosas como consultas a bases dedatos o ejecutar complejas reglas de negocio. Cuando se utilizan clientes ligeros, lasoperaciones de peso como estas, las manejan los beans enterprise que se ejecutanen el servidor J2EE donde pueden tratar con la seguridad, los servicios y el

rendimiento de las tecnologías del lado del servidor J2EE.

pclientes JEE

Introducción a la plataforma JEE

Page 51: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 51/145

5252

Una página recibida en la capa cliente puede incluir un applet embebido.

Un applet  es una pequeña aplicación escrita en Java que se ejecuta en la JVMinstalada en el navegador Web del cliente. Sin embargo los sistemas clientenecesitarán el plug-in Java y posiblemente un fichero de política de seguridad parapoder ejecutar con éxito los applets en el navegador.

Normalmente, los componentes Web son el API preferido para crear programasclientes Web porque no necesitan plug-ins ni ficheros de seguridad en el cliente.

pclientes JEE

Introducción a la plataforma JEE

Page 52: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 52/145

5353

Además, esto permite un diseño más claro y modular de la aplicación porque

proporciona un significado a la separación de la lógica de la aplicación del diseño dela página Web.

Una aplicación cliente se ejecuta sobre una máquina cliente y proporciona una formapara que los usuarios puedan manejar tareas que requieren un interfaz de usuariomás rico que el que puede proporcionar un lenguaje de marcas. Normalmente tienen

un interfaz gráfico de usuario (GUI) creado con los APIs Swing o AWT.

Las aplicaciones cliente acceden directamente a los beans enterprise  que seejecutan en la capa de negocio, pero si se necesita un cliente Web pueden abrir unaconexión HTTP para establecer una conexión HTTP para comunicarse con un servletde la capa Web.

clientes JEE

Introducción a la plataforma JEE

Page 53: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 53/145

5454

Los componentes Web de J2EE pueden ser servlets o páginas JSP. Los servlets

son clases Java que procesan dinámicamente las peticiones y crean las respuestas.Las JSP son documentos de texto que se ejecutan como servlets pero de modo máseficiente.

La capa Web podría incluir componentes Java Beans para manejar la entrada delusuario y enviar esta entrada a los beans enterprise que se ejecutan en la capa denegocio para su procesamiento según se ve en la figura superior.

componentes Web

Introducción a la plataforma JEE

Page 54: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 54/145

5555

El código de negocio, que es la lógica que resuelve o cumple las necesidades de

un negocio particular, como la banca, la venta o la financiación, se maneja mediantebeans enterprise que se ejecutan en la capa de negocio

componentes de negocio

Introducción a la plataforma JEE

Page 55: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 55/145

5656

La capa del sistema de información empresarial (EIS), maneja el software del

sistema de información empresarial e incluye la infraestructura del sistema así comolos planning de recursos (ERP), procesamiento de transacciones a mainframes,sistemas de bases de datos y otros sistemas de información legales(personalizados).

Los componentes de aplicaciones J2EE podrían necesitar acceder a estos sistemas

de información empresariales para conectividad con sus bases de datos.

la capa del sistema de información empresarial

Introducción a la plataforma JEE

Page 56: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 56/145

5757

Los contenedores J2EE proporcionan acceso a los servicios subyacentes del

entorno del servidor J2EE mediante contenedores para diferentes tipos decomponentes.

Tradicionalmente, los desarrolladores de aplicaciones tenían que escribir código parael manejo de transacciones, manejo del estado, multi-threads, almacenamiento derecursos, etc. Ahora el contenedor J2EE proporciona estos servicios permitiendo el

poder concentrarse en resolver los problemas de negocio.

Los contenedores son el nexo entre un componente y la funcionalidad de bajo nivelespecífica-de-la-plataforma que soporta el componente. Por ejemplo, antes de poderejecutar un componente Web, un bean enterprise o un componente de unaaplicación cliente, debe ensamblarse dentro de una aplicación J2EE y desplegarsedentro de su contenedor.

contenedores JEE

Introducción a la plataforma JEEd JEE

Page 57: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 57/145

5858

Un contenedor de aplicaciones cliente maneja la ejecución de los componentes de la

aplicación cliente mientras que un contenedor de Applets maneja la ejecución de losapplets. Normalmente están en el JRE (Java Runtime Environment) y el navegadorWeb compatible con Java, respectivamente.

contenedores JEE

Introducción a la plataforma JEEt d

Page 58: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 58/145

5959

Para poder desplegar una aplicación J2EE, después de desarrollar los diferentes

componentes, se empaquetan en ficheros de archivo especiales que contienen losficheros de las clases relevantes y los descriptores de despliegue XML.

Estos descriptores de despliegue contienen información específica de capacomponente empaquetado y son un mecanismo para configurar el comportamientode la aplicación en el momento del ensamble o del despliegue. Estos se empaquetan

en diferentes tipos de archivos según los distintos componentes.

empaquetado

Introducción a la plataforma JEEt d

Page 59: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 59/145

6060

Los componentes Web se empaquetan en un archivo Web (.war) que contiene los

servlets, las páginas JSP y los componentes estáticos como las páginas HTML y lasimágenes.

El fichero .war contiene clases y ficheros utilizados en la capa Web junto con undescriptor de despliegue de componentes Web. Los componentes de negocio seempaquetan en un archivo Java (.jar) que contiene los descriptores de despliegue

EJB, los ficheros del interface remoto y del objeto junto con ficheros de ayudarequeridos por el componente EJB.

Los ficheros de clases del lado del cliente y los descriptores de despliegue seempaquetan en un fichero Java (.jar) que crea la aplicación cliente.

Una aplicación J2EE se empaqueta en un archivo enterprise (.ear) que contiene todala aplicación junto con el descriptor de despliegue que proporciona información sobrela aplicación y sus componentes:

empaquetado

Introducción a la plataforma JEEempaquetado

Page 60: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 60/145

6161

empaquetado

Page 61: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 61/145

Page 62: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 62/145

6363

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP5. Aplicaciones distribuidas multicomponente

6. Filtros en aplicaciones WEB

índice

Servlets Javala arquitectura cliente servidor

Page 63: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 63/145

6464

En la actualidad, la mayoría de aplicaciones utilizadas en entornos empresariales

están construidos en torno a una arquitectura denominada cliente  –servidor , en lacual uno o varios computadores (generalmente de una potencia considerable) sonlos servidores, que proporcionan servicios a un número mucho más elevado declientes conectados a través de la red.

A veces los servidores hacen un papel de intermediarios entre los clientes y otros

servidores más especializados (por ejemplo, los grandes servidores de bases dedatos corporativos basados en mainframes y sistemas Unix. En este caso se hablade arquitectura de varias capas.

Con el auge de Internet, la arquitectura cliente –servidor ha adquirido una mayorrelevancia, ya que la misma es el principio básico de funcionamiento de la World Wide Web : un usuario que mediante un browser (cliente) solicita un servicio (páginashtml , etc.) a un computador que hace las veces de servidor.

la arquitectura cliente - servidor

Servlets Javala arquitectura cliente - servidor

Page 64: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 64/145

6565

En su concepción más tradicional, los servidores http se limitaban a enviar unapágina html cuando el usuario la solicitaba directamente o bien “pinchaba” sobre unenlace.

La interactividad de este proceso era mínima, ya que el usuario podía pedir ficheros,pero no enviar sus datos personales de modo que fueran almacenados en el servidoru obtuviera una respuesta personalizada.

1) Petición de página html 

2) Envío de página

la arquitectura cliente - servidor

Servlets Javala arquitectura cliente - servidor

Page 65: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 65/145

6666

Comunicación Cliente – Servidor: Resumen

El cliente realiza una solicitud HTTP a la capa intermedia (servidor web). El servidorweb procesa la solicitud. Se genera una respuesta en el formato adecuado y es enviada al cliente. El cliente procesa la respuesta.

la arquitectura cliente servidor

Servlets Javala arquitectura cliente - servidor

Page 66: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 66/145

6767

La arquitectura Cliente - Servidor

Desde esta primera concepción del servidor http  como mero servidor de ficheroshtml, el concepto ha ido evolucionando en dos direcciones complementarias:

Añadir más “inteligencia” en el servidor, y Añadir más “inteligencia” en el cliente

Las formas más extendidas de añadir inteligencia a los clientes (a las páginas html )han venido de la mano de JavaScript y las applets de Java. Javascript es unlenguaje relativamente sencillo, interpretado cuyo código fuente se añade en lapágina html  por medio de la etiqueta <SCRIPT>...</SCRIPT>; su nombre deriva deuna cierta similitud sintáctica con Java.

Las applets  tienen mucha más capacidad de añadir inteligencia a las páginas html  que se muestran en el navegador, ya que son verdaderas clases de Java que secargan y se ejecutan en el cliente.

la arquitectura cliente servidor

Servlets Javala arquitectura cliente - servidor

Page 67: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 67/145

6868

Los comienzos: CGI

En nuestro caso tiene más interés los caminos seguidos para añadir más inteligenciaen el servidor http . La técnica primera que más se ha utilizado ha sido la de losprogramas CGI (Common Gateway Interface) , unida a los formularios html .

Los formularios html permiten de alguna manera invertir el sentido del flujo de la

información. Cumplimentando algunos campos con cajas de texto, botones deopción y de selección, el usuario puede definir sus preferencias o enviar sus datos alservidor. Cuando en un formulario html  se pulsa el botón “Enviar” (o Submit ) losdatos tecleados por el cliente se envían al servidor para su procesamiento.

Cada formulario lleva incluido un campo llamado Action  con el que se asocia elnombre del programa que se va a ejecutar en el servidor. El servidor arranca dichoprograma y le pasa los datos que han llegado con el formulario. Existen dos formasfundamentales de pasar los datos del formulario al programa CGI:

la arquitectura cliente servidor

Servlets Javala arquitectura cliente - servidor

Page 68: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 68/145

6969

Los comienzos: CGI

Por medio de una variable de entorno del sistema operativo del servidor, de tipocadena (método GET).

Por medio de un flujo de caracteres que llega a través de la entrada estándar (stdin o System.in ) que de ordinario está asociada al teclado (método POST).

En cualquier caso, lo primero que tiene que hacer el programa CGI es decodificaresta información y separar los valores de los distintos campos. Después ya se puederealizar su tarea específica: escribir en un fichero o base de datos, realizar unabúsqueda de la información solicitada, realizar comprobaciones, etc.

la arquitectura cliente servidor

Servlets Javala arquitectura cliente - servidor

Page 69: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 69/145

7070

CLIENTE

SERVIDOR

WEB 

CGI    I   N   T   E

   R   N   E   T

1

2

345

la arquitectura cliente servidor

Funcionamiento de CGI

Servlets Javala arquitectura cliente - servidor

Page 70: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 70/145

7171

Funcionamiento de CGI

La “interfaz de pasarela común” (Common Gateway Interface ), es un protocologenérico que permite extender las capacidades de HTTP y añaden funcionalidad alservidor Web. A continuación vemos una tabla comparativa entre GET y POST.

q

Acción  GET  POST 

¿Añade los datos con que se rellena el formulario al URL solicitado? S N¿Limita la cantidad de datos que se pasan al URL solicitado? S N

¿Usado típicamente fuera de formularios HTML? S N

¿Utiliza la variable de entorno QUERY_STRING del servidor? S N

¿Envía los datos al URL solicitado en una transacción separada con elservidor?

N S

¿Utiliza las variables del servidor CONTENT-TYPE y CONTENT-LENGTH? N S

¿Puede escribir datos en el servidor? N S

Servlets Javala arquitectura cliente - servidor

Page 71: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 71/145

7272

Normalmente, el programa CGI finaliza enviando al cliente (el navegador desde el

que se completó el formulario) una página html  dinámica en la que le informa de lastareas realizadas, le avisa de si se ha producido alguna dificultad, le reclama algúndato pendiente o mal cumplimentado, etc.

La forma de enviar esta nueva página html al cliente es a través de la salida estándar(stdout o System.out ), que por lo general está asociada con la pantalla. La página ha

de ser construida elemento a elemento, de acuerdo con la sintaxis del lenguaje html(y de ahí que se denomine dinámica).

No basta enviar el contenido: Hay que enviar también todas y cada una de lasrestantes etiquetas.

q

Servlets Javala arquitectura cliente - servidor

Page 72: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 72/145

7373

Es importante resaltar que estos procesos tienen lugar en el servidor. Esto a su vez

puede resultar problemático, ya que al tener múltiples clientes conectados alservidor, el programa CGI puede estar siendo llamado simultáneamente por muchosclientes, con el riesgo de que dicho servidor se pueda llegar a saturar. Téngase encuenta que cada vez que se recibe una petición se carga una nueva copia (instancia)del programa CGI. Existen otros riesgos adicionales que estudiaremos más adelante.

El objetivo de este tema es el estudio de la alternativa que la plataforma Java ofrecea los programas CGI: los servlets, que son a los servidores lo que las applets a losclientes.

Se podría definir un servlet como un programa escrito en Java que se ejecuta en elentorno de un servicio de red (un servidor http , por ejemplo) y que recibe y respondea las peticiones de uno o varios clientes.

q

Servlets Javala arquitectura cliente - servidor

Page 73: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 73/145

7474

Funciones de la capa cliente

Presentación de datos

Captura de datos

Validación

Proceso de datos en el cliente

Servlets Javala arquitectura cliente - servidor

Page 74: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 74/145

7575

Recogida de datosdel usuario

Proceso de datos

Consultas a basesde datos

Envío derespuestas alcliente

Tecnologías del lado del servidor

Comparativa de distintas arquitecturas

Servlets Javacaracterísticas

Page 75: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 75/145

7676

Definición

Un servlet es una aplicación escrita en Java que se ejecuta en el servidor ante unasolicitud del cliente.

Como resultado de su ejecución, los servlets generan una respuesta para el clienteque consiste en un flujo de texto codificado en un formato comprensible por el cliente

(HTML, WML, XML).

Servlets Javacaracterísticas

Page 76: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 76/145

7777

Utilizan los protocolos SMTP, POP, FTP y HTTP.

Al estar escritos en Java, tienen acceso a todo el API y Java Beans del mercado Cuando es invocado por primera vez, se carga en memoria y queda almacenado

para atender posteriores peticiones

Solamente hay una instancia del servlet que responde todas las peticionesconcurrentemente (a diferencia de un CGI)

Son portables entre plataformas Se ejecutan en su propia “caja restringida” (sandbox), que ofrece seguridad

Servlets Javafuncionamiento

Page 77: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 77/145

7878

Internet/Intranet

e.site SGBDR

SERVLET

JDBC

Navegador --> URL(browser)

ORACLE,DB2,

SQLSERVER...

Datos/petición

Datos/respuesta

Servlets Javaciclo de vida de un Servlet

Page 78: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 78/145

7979

Clase del Servlet

Inicialización

Ejecución

EsperaDestrucción

new 

petición 

parada 

Contenedor

El ciclo de vida de un Servlet es una secuencia de eventos que un contenedor

aplicará a un servlet para ponerlo en servicio y controlar su ejecución y finalización.

Servlets Javaapi de los Servlet

Page 79: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 79/145

8080

Servlets Javacreación de un Servlet

Page 80: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 80/145

8181

import javax.servlet.*;import javax.servlet.http.*;

public class MiServlet extends HttpServlet {:

}

GenericServlet

HttpServlet

Servlet 

<<Interfaz>>

MiServlet

Servlets Javamétodos de control de un Servlet

Page 81: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 81/145

8282

public class MiServlet extends HttpServlet{ // variables de instancia

// métodos del “ciclo de vida”: public void init(ServletConfig config) throws ServletException{

 // inicialización de variables, apertura de ficheros, etc}

public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {

 // acciones a realizar en la petición}

public void destroy(){ // liberación de recursos, etc

}}

Definición de un Servlet 

Servlets Javaatención a peticiones de usuario

Page 82: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 82/145

8383

public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException

{

}

Objeto para gestión de lapetición

Objeto para manejar larespuesta

Para recoger los posibles datos enviados por un usuario a un servidor por medio de

un servlet, deberemos hacer uso del objeto HttpServletRequest, que se encuentracomo argumento en el método service o alguno de sus alternativos.

Servlets Javacontenedores de Servlets

Page 83: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 83/145

8484

Tomcat 6

Para la instalacióndel Contenedor deServlets y JSPTomcat, hemos dedescargarlo desdehttp://tomcat.apache.org

Servlets Javaregistro y configuración de un servlet

Page 84: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 84/145

8585

Tomcat 6

Para poder invocar un servlet, este ha de ser “desplegado” (deployed) en unservidor o un contenedor de servlets.Para hacerlo, se utiliza un fichero de texto llamado descriptor de despliegue, denombre web.xml y en el cual, sus elementos describen cómo utilizar y montar loscomponentes en un entorno específico. También incluye información adicional comoparámetros y opciones de seguridad.

Las etiquetas <servlet></servlet> delimitan los datos de un servlet determinado,dentro de las cuales se definirán las siguientes sub-etiquetas.<servlet-name> Indica el nombre utilizado para llamar al servlet<servlet-class>, el nombre de la clase que define el servlet. Si la clase está dentrode un paquete, el nombre de la clase debe incluirlo.

<url-pattern>, asigna el patrón utilizado para resolver la URL. La porción de URLtras http://servidor:puerto/ubicación es comparada con el <url-pattern> y si coincide,el servlet será invocado.

Servlets Javaregistro y configuración de un servlet

Page 85: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 85/145

8686

<?xml version="1.0" encoding="UTF-8"?><web-app><servlet>

<servlet-name>MiServlet</servlet-name><servlet-class>servlets.Servlet1</servlet-class>

</servlet><servlet-mapping>

<servlet-name>MiServlet</servlet-name><url-pattern> /servlet1</url-pattern>

</servlet-mapping></web-app>

http://www.servidor.com/aplicacion/servlet1URL:

web.xml:

Servlets Javageneración y envío de la respuesta al cliente

Page 86: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 86/145

8787

Servlet

<HTML><HEAD></HEAD><BODY>

<H1>Bienvenido a mi Servlet</H1></BODY></HEAD></HTML>

public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{

res.setContentType("text/html");PrintWriter out = res.getWriter();out.println("<HTML><HEAD></HEAD><BODY>");out.println("<H1>Bienvenido a mi Servlet</H1>");out.println(“</BODY></HTML>"); 

… }

Petición

Procesado (generación de la página dinámica)

Respuesta

Cliente

Servlets Javaobtención de datos del cliente

Page 87: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 87/145

8888

Nombre:

<form action=“/MiServlet" method="post"> <input name="txtnombre">

<input type=submit></form>

Color:

<a href=“MiServlet?valor=blue">Color</a> 

public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException{String nombre = req.getParameter("txtnombre");

String color = req.getParameter("valor");:}

Diferentes modos de enviar datos al servidor 

Mediante un formulario HTML Mediante un enlace y variables

Page 88: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 88/145

Page 89: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 89/145

Servlets Javasesiones

Page 90: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 90/145

9191

Internet 

Servlet 1

Servlet 2

:

Sesión

Servlet 1

Servlet 2

:

Sesión

Funcionamiento 

Servlets Javasesiones

Page 91: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 91/145

9292

protected void service(HttpServletRequest req,HttpServletResponse res )throws ServletException,IOException {

 //obtiene una sesión de usuarioHttpSession sesion = req.getSession(true);:

}

Manipular sesiones con servlets es muy sencillo. Para realizar el seguimiento de unasesión, debemos: Obtener una sesión de un usuario (un objeto HttpSession): request.getSession()

Almacenar datos u obtenerlos del objeto HttpSession: session.set/getAttribute()

Opcionalmente, cancelar la sesión. session.invalidate()

La ventaja de las sesiones frente a las cookies desde el punto de vista deldesarrollador es el no tener que manipular directamente las cookies o la informaciónañadida a la URL (se utiliza una de las dos maneras de un modo transparente).

El objeto HttpSession (I) 

Servlets Javasesiones

Page 92: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 92/145

9393

Servlet 1

Servlet 2

Sesión del usuario

setAttribute(“dato”,new Integer(6)); 

getAttribute(“dato”); 

Se debe pasar como un objeto

El objeto HttpSession (II)

Las tareas más comunes, como con las Cookies, serán almacenar datos en el clientey recuperarlos con posterioridad, para lo cual se utilizan los métodos setAttribute ygetAttribute respectivamente.

Servlets Javatransferencia de control entre distintos componentes

Page 93: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 93/145

9494

A veces, un componente Web sólo procesa la petición y otro genera la respuesta. De

esta manera separamos las tareas operativas de las de presentación. El método quepermite esto es forward, de la interfaz RequestDispatcher. Veamos su formato:

Donde “ruta” es una URL al recurso al que se va a transferir el control, por ejemplo,una cadena con el valor “/mostrarFormu. jsp”. El recurso llamado puede ser un servlet,página JSP o fichero HTML en el servidor. Los objetos request y response Son

enviados al recurso de destino.

Otra forma de saltar a otro recurso es el método sendRedirect, de la interfazHttpServletResponse. En este caso, el único parámetro es la ruta de destino.

getServletContext().getRequestDispatcher(ruta).forward(request, response);

public void sendRedirect(String destino) throws IOException

Page 94: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 94/145

9595

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP

5. Aplicaciones distribuidas multicomponente

6. Filtros en aplicaciones WEB

índice

Páginas JSPintroducción

Page 95: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 95/145

9696

Definición:

Documento de texto que reside en el servidor y que genera dinámicamente unapágina web ante una petición cliente.

Características:

Una página JSP contiene bloques de texto estáticos HTML, WML o XML y código

Java que se ejecuta en el servidor para generar contenido dinámico. Una página jsp puede procesar formularios Web, acceder a bases de datos yredireccionar a otras páginas.

Una página JSP es convertida y compilada en un servlet por el servidor web.

Distintas peticiones de una misma página son atendidas por una única instancia del

servlet.

Páginas JSPrelación entre servlet y JSP

Page 96: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 96/145

9797

JSP(.jsp) Servlet (.java)

Output Servlet(.class)

Conversión

Compilación

Sin cambios

Carga/

Ejecución

La tecnología JSP es una especificación abierta (y gratis) disponible y desarrolladapor Sun Microsystems como alternativa a Active Server Pages (ASP) de Microsoft, yson un componente dominante de la especificación de Java 2 Enterprise Edition(J2EE).

Páginas JSPobjetivos de la tecnología JSP

Page 97: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 97/145

9898

Separar el contenido generado por el servidor de la presentación. Desarrollar aplicaciones que funcionen en cualquier servidor web. Simplificar el proceso de desarrollo de aplicaciones web interactivas Desarrollar y probar de forma rápida las aplicaciones

Páginas JSPaspecto de una página JSP

Page 98: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 98/145

9999

<HTML>

<%@ page language=”java” %> <H1>Bienvenido</H1><P> Hoy es </P><jsp:useBean id=”clock” class=”calendar.jaspCalendar” /> <UL><LI>Día: <%=clock.getDayOfMonth()%><LI>Year: <%=clock.getYear()%></UL>

<%if(Calendar.getInstance().get(Calendar.AM_PM)==Calendar.AM){ %>Buenos días<% } else { %>Buenas tardes<% } %><%@ include file=”copyright.html” %> </HTML>

Scripts JSP

C t i

Páginas JSPcomponentes de una página

Page 99: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 99/145

100100

Comentarios Elementos de script

expresiones declaraciones scriptlets

Directivas Acciones JSP Objetos implícitos

Páginas JSPelementos de script

Page 100: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 100/145

101101

Elemento Sintaxis Comentarios

Expresión <%=expresion%>Una expresión puede ser cualquierexpresión válida de Java.

No se pueden utilizar ; para finalizar

una ex resión.

Declaración <%! Declaracion %>Se utiliza para declarar variables y

métodos dentro de un scriptlet

Scriptlet <% fragmento de código%> Contiene código Java ejecutable

<HTML><HEAD><TITLE>Ejemplo JSP</TITLE>

</HEAD><BODY><H1>Saludos</H1><%! private int i = 0; %><% for (; i <= 7; i++) {%>

<font size=<%=i%>>

Hola Mundo!</font><%}%>

</BODY></HTML>

Declaración

Scriptlet

Expresión

Páginas JSPdirectivas

Las directivas son comandos que son evaluados por el contenedor durante la fase de

Page 101: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 101/145

102102

Directiva Descripciónpage Define atributos generales de la

página

include Incluye otro documento (HTML o

JSP) en la página

taglib Carga la definición de etiquetas

personalizadas

<%@ directiva atributo1="valor" atributo2="valor"...%>

Formato de uso

Las directivas son comandos que son evaluados por el contenedor durante la fase detransformación de la página en un servlet. Esto significa que la informaciónproporcionada por estos comandos no depende de las peticiones recibidas por lapágina. Las directivas más utilizadas de JSP son tres:

Páginas JSPacciones JSP

Las acciones son comandos ejecutados por el contenedor en tiempo de ejecución lo

Page 102: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 102/145

103103

Acción DescripciónuseBean Instancia una clase JavaBean

getProperty Devuelve el valor de una propiedad de un

Java Bean

setProperty Establece el valor en una propiedad delJava Bean

include Incluye otro documento (HTML o JSP)

en la página

forward Deriva la petición a otra página JSP o

servlet

<jsp:accion  atributo1=“valor” atributo2=“valor”.../> 

Las acciones son comandos ejecutados por el contenedor en tiempo de ejecución, loque significa que cada vez que se realiza una petición de la página JSP las accionesson ejecutadas.

Páginas JSP java beans

Un Java Bean es una clase Java que implementa lógica de negocio de una

Page 103: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 103/145

104104

package javaBeans;public class MiBean implements Serializable {

private String nombre;

public MiBean() {nombre = “”; }public void setNombre(String s) {

nombre = s;}public String getNombre() {

return nombre;

} //otros métodos de negocio

}

Un Java Bean es una clase Java que implementa lógica de negocio de unaaplicación Web y puede ser fácilmente manipulada desde JSP. Existen ciertasconvenciones de diseño que deben seguir todos los Java Bean para poder utilizarseen páginas JSP:

 Deben disponer de un constructor sinargumentos Debería (no es obligatorio) implementarla interfaz Serializable Por cada propiedad que vaya a exponerel Java Bean, debe haber suscorrespondiente métodos “accesores”, quesiguen la forma getNombrePropiedad() ysetNombrePropiedad()

En realidad, el término apropiado parahablar de estas clases simples es POJO(Plain Old Java Object).

Páginas JSP java beans

Ya que un java bean es uno de los mecanismos para incluir la “lógica de negocio” en

Page 104: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 104/145

105105

<jsp:useBean id="miobjeto" class="javaBeans.MiBean" scope="session"/>

:

<%miobjeto.setNombre("Primer nombre");%>

<p>El valor de la propiedad nombre es:<%=miobjeto.getNombre()%>

HttpSession sesion=request.getSession();

MiBean obj=(MiBean)sesion.getAttribute("miobjeto");

Acceso desde un JSP

Acceso desde un Servlet

Identificador definido para eljavabean en la página JSP

Ya que un java bean es uno de los mecanismos para incluir la lógica de negocio enuna aplicación, una de las primeras tareas a resolver es cómo hemos de invocarlodesde otros componentes. Aquí vemos dicho acceso.

Páginas JSPacceso a las propiedades de un java bean

La especificación JSP incluye dos acciones para manipular las propiedades de un

Page 105: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 105/145

106106

Nombre:

Enviar

Datos.htm

<jsp:useBean id="miobjeto" class="javaBeans.MiBean" scope="session"/>

<jsp:setProperty nombre="miobjeto" property="*"/>

El nombre es:<jsp:getProperty name="miobjeto" property=“nombre"/> 

Almacena en la propiedadnombre el contenido delcuadro de texto

Procesa.jsp

La especificación JSP incluye dos acciones para manipular las propiedades de unBean: <jsp:setProperty  name=“nomBean”   property=“propiedad”   value=valor”   />. Seutiliza el valor “*” para el atributo property; con ello se almacena automáticamente enlas variables de propiedad del Bean los valores de parámetros de la petición. Con<jsp:getProperty …  /> se inserta en la página de respuesta el valor de la propiedad.

Merche Martín

Páginas JSPobjetos implícitos JSP

La especificación JSP trata de simplificar la creación y desarrollo de páginas JSP a

Page 106: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 106/145

107107

<%session.setAttribute("nombre","James");%>

El nombre es:<%=session.getAttribute("nombre“)%> 

Pag1.jsp

Pag2.jsp

Objeto Descripciónrequest Equivale HttpServletRequest

response Equivale a HttpServletResponse

session Equivale a HttpSession

application Equivale a ServletContext

config Equivale a ServletConfig

pagecontext Proporciona acceso a los atributos de página

page Representa la instancia del servlet generada a partir de la página JSP

out Permite enviar datos a la salida

La especificación JSP trata de simplificar la creación y desarrollo de páginas JSP através de ciertos objetos ofrecidos por el contenedor de páginas JSP que secorresponden con instancias del api de los Servlets. Existen nueve objetos implícitos:

Obj Á bi C í i

Páginas JSPobjetos implícitos JSP

Page 107: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 107/145

108108

Objeto Ámbito Característicaspage Página. Los datos sólo son accesibles desde la página JSP

actual.

request Petición Los datos sólo son accesibles desde la página JSP

actual y desde todas las que hayan sido incluidas en

ella, tanto con include como con forward.

session Sesión La información es accesible por todos los servlets ypáginas JSP manejados por el usuario.

application Aplicación La información es accesible por todos los usuarios de

la aplicación.

El objeto page es una instancia de la clase java.lang.Object, y representa la páginaJSP actual, o para ser más exactos, una instancia de la clase del servlet generado a

partir de la página JSP actual. Se puede utilizar para realizar una llamada acualquiera de los métodos definidos por la clase del servlet. Utilizar el objeto page,es similar a utilizar la referencia a la clase actual, es decir, la referencia this.

Definición:

Páginas JSPlibrería de etiquetas personalizadas

Page 108: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 108/145

109109

Utilizando Java Beans, podemos separar la parte de presentación de una páginaJSP de las reglas de negocio en forma de código Java. Sin embargo, solamentedisponemos de tres elementos de acción para acceder a un Bean:

Jsp:useBean Jsp:getProperty

Jsp:setProperty

Por ello, en algunas situaciones tenemos que recurrir al uso de código en una páginaJSP; en otras palabras, a veces los Java Beans no ofrecen una completa separaciónentre la presentación y las reglas de negocio.Como consecuencia a las imperfecciones de los Java Beans y para solucionar laseparación entre la presentación y lógica de negocio, JSP 1.1 definió una nuevacaracterística: las “custom tags” (etiquetas personalizadas) que pueden usarse paraejecutar acciones del usuario.

La especificación JSP 2.0 en comparación con las anteriores especificaciones ha

Páginas JSPlibrería de etiquetas personalizadas

Page 109: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 109/145

110110

hecho más factible desarrollar etiquetas personalizadas. Con este fin, esta

especificación introduce una extensión llamada Simple Tag Extension que puede serutilizada de una de las dos formas siguientes:

Para desarrolladores java: definiendo una clase que implemente la interfazjavax.servlet.jsp.tagext.SimpleTag .

Para diseñadores de páginas JSP sin conocimientos de Java: utilizando ficheros deetiquetas.

Práctica:

Páginas JSPlibrería de etiquetas personalizadas

Page 110: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 110/145

111111

En las siguientes páginas se mostrará el empleo de las etiquetas personalizadasdesde una página JSP que desplegaremos bajo el servidor Tomcat e invocaremosdesde un navegador web.

El componente java a utilizar emitirá el mensaje “Hola, desde la etiquetapersonalizada”.

La estructura de directorios que debemos crear para crear la aplicación miAplicJSPl i i t

Páginas JSPlibrería de etiquetas personalizadas

Page 111: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 111/145

112112

es la siguiente:

1. Creamos un fichero TLD llamado taglib.tld con el contenido que figura acontinuación y lo guardamos en el directorio WEB INF

Páginas JSPlibrería de etiquetas personalizadas

Page 112: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 112/145

113113

continuación y lo guardamos en el directorio WEB-INF

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE taglib

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name></short-name><tag>

<name>miEtiq</name><tag-class>com.bar.MiCustomTag</tag-class>

</tag></taglib>

2. Escribe, compila y despliega la clase Java MiCustomTag.java que se muestra acontinuación Asegúrate de que esta clase se ubica en el directorio “bar” bajo el

Páginas JSPlibrería de etiquetas personalizadas

Page 113: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 113/145

114114

continuación. Asegúrate de que esta clase se ubica en el directorio bar , bajo el

directorio WEB-INF/classes/compackage com.bar;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;public class MiCustomTag extends TagSupport {public int doEndTag() throws JspException {JspWriter out = pageContext.getOut();try {out.println("Hola, desde la etiqueta personalizada.");

}catch (Exception e) {}return super.doEndTag();

}

}

3. Crea un fichero JSP con el código que se muestra a continuación. LlámaloPágina jsp y guárdalo bajo el directorio misJsps de la estructura que antes se

Páginas JSPlibrería de etiquetas personalizadas

Page 114: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 114/145

115115

Página.jsp y guárdalo bajo el directorio misJsps de la estructura que antes se

mencionó.

Listado de Pagina.jsp

<HTML><HEAD><TITLE>Libreria etiquetas</TITLE><HEAD><BODY><%@ taglib uri="/miTLD" prefix="facil" %>

<facil:miEtiq/></BODY>

</HTML>

4. Edita el fichero descriptor de despligue (web.xml). Para utilizar etiquetaspersonalizadas has de especificar un elemento <taglib> en dicho archivo El

Páginas JSPlibrería de etiquetas personalizadas

Page 115: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 115/145

116116

personalizadas, has de especificar un elemento <taglib> en dicho archivo. El

elemento <taglib> debe aparecer tras <servlet> y <servlet-mapping>, si existen.

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE web-app (View Source for full doctype...)><web-app>

::

<display-name>Mis ejemplos jsp</display-name><description>Ejemplo con Libreria de etiquetas personalizadas</description><taglib>

<taglib-uri>/miTLD</taglib-uri><taglib-location>/WEB-INF/taglib.tld</taglib-location>

</taglib></web-app>

5. Reinicia Tomcat. Abre tu navegador web y rellena en la barra de direcciones lasiguiente url: http://localhost:8080/misJsps/Pagina jsp Debería mostrarse la

Páginas JSPlibrería de etiquetas personalizadas

Page 116: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 116/145

117117

siguiente url: http://localhost:8080/misJsps/Pagina.jsp. Debería mostrarse la

ventana siguiente:

6. Relación entre el archivo descriptor, la página JSP y el fichero .TLD:

Páginas JSPlibrería de etiquetas personalizadas

Page 117: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 117/145

118118

<?xml version="1.0" encoding="ISO-8859-1"?>… <taglib>

<taglib-uri>/miTLD</taglib-uri><taglib-location>/WEB-INF/taglib.tld</taglib-

location></taglib>

</web-app>

<HTML><HEAD><TITLE>Libreria etiquetas</TITLE><HEAD><BODY><%@ taglib uri="/miTLD" prefix="facil" %><facil:miEtiq/></BODY></HTML>

<taglib>

<tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name></short-name><tag><name>miEtiq</name><tag-class>com.bar.MiCustomTag</tag-

class></tag>

</taglib>

web.xml

Pagina.jsp

taglib.tld

Cuando la petición del usuario solicita la página JSP, el contenedor de JSP mira laetiqueta <taglib>. Por ello, el contenedor sabe que se está buscando una etiqueta

Páginas JSPlibrería de etiquetas personalizadas

Page 118: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 118/145

119119

etiqueta <taglib>. Por ello, el contenedor sabe que se está buscando una etiqueta

personalizada. Entonces actúa de la forma siguiente:

Consulta el fichero de despliegue (web.xml) para buscar la ubicación de la tablib,donde la URI es “/miTLD”. El descriptor de despliegue devuelve la ruta al ficheroTLD. El contenedor de JSP (Tomcat en nuestro caso), recordará este camino.

Continúa procesando la siguiente línea y encuentra la etiqueta miEtiq, precedidacon el prefijo “facil”. Teniendo ya el nombre y localización del fichero TLD, elcontenedor lee el fichero TLD y obtiene el nombre (totalmente calificado) de la clase java para la etiquet “miEtiq”, con ello accede a com.bar.MiCustomTag.

El contendor JSP puede, por fin, cargar la clase para la etiqueta y procesarla.

Conclusión

Páginas JSPlibrería de etiquetas personalizadas

Page 119: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 119/145

120120

Las etiquetas personalizadas aportan otras ventajas no presentes en los Java Beans;entre otras, que tienen acceso a a todos los objetos disponibles a las páginas JSP yque pueden ser parametrizadas con atributos. Sin embargo, es importante reseñarque las etiquetas JSP no se pensaron como sustituto de los Java Beans, los cualessiguen teniendo sus propias características y virtudes.

A veces será más apropiado el uso de Beans para la reutilización y otras será mejorusar etiquetas personalizadas. Incluso en algunos casos, la elección no será clara,dejando al desarrollador que tome la decisión apropiada en base a su experiencia.

Page 120: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 120/145

Aplicaciones distribuidas multicomponenteaplicaciones distribuidas

Con los altos requerimientos de las complejas aplicaciones actuales, se pone demanifiesto la necesidad de utilizar modelos de desarrollo en los que se encuentren

Page 121: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 121/145

122122

manifiesto la necesidad de utilizar modelos de desarrollo en los que se encuentren

las siguientes características: Alto rendimiento Alta disponibilidad Gran fiabilidad Reutilización Escalabilidad

Base tecnológica de vanguardia

El modelo de aplicaciones distribuidas se base en una estructura base válida paracualquier aplicación final multipuesto.Una aplicación distribuida se basa en una red de servidores, cada uno con uno omás componentes que forman parte de la aplicación.Un usuario puede trabajar desde cualquier puesto, permitiendo el traslado depersonal sin necesidad de operaciones administrativas.

Aplicaciones distribuidas multicomponentearquitecturas y frameworks

¿Qué es una arquitectura?

Page 122: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 122/145

123123

Arquitectura hace referencia a una representación abstracta de los componentesque intervienen en un sistema y a su comportamiento sin entrar en los detalles deimplementación. Es un principio de diseño coherente usado en un dominio específico. Comoejemplo, el estilo de construcción Gótico o en programación, el modelo JEE parasistemas de información.

Son características deseables en una arquitectura las siguientes:

Disponibilidad Integridad y consistencia

Mantenimiento Flexibilidad

Rendimiento Capacidad

Escalabilidad Reusabilidad

Extensibilidad Seguridad

Aplicaciones distribuidas multicomponentearquitectura MVC

El “Modelo Vista Controlador (MVC)” es un patrón de arquitectura de software quesepara los datos de una aplicación, la interfaz de usuario, y la lógica de control en

Page 123: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 123/145

124124

separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en

tres componentes distintos. Este patrón se ve frecuentemente en aplicaciones web,donde la vista son la página HTML y el código que provee de datos dinámicos a lapágina, el modelo es el Sistema de Gestión de Base de Datos y la lógica de negocioy el controlador es el responsable de recibir los eventos de entrada desde la vista.

¿Qué es un framework? 

Un framework  representa la implementación de una arquitectura de software quemodela las relaciones generales de las entidades del dominio. Provee una estructuray una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.Algunos frameworks que implementan MVC son:

Struts Apache Java

Spring Apache .Net y Java

Java Server Faces Apache Java

Page 124: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 124/145

public class Dispatcher extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response)

Aplicaciones distribuidas multicomponenteservlet: el controlador

Page 125: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 125/145

126126

throws ServletException, IOException{:if (operation == null) {operation = "";

}if (operation.equalsIgnoreCase("browse")) {this.doBrowse(request, response);return;

}if (operation.equalsIgnoreCase("addItem")) {this.doAdd(request, response);return;

}if (operation.equalsIgnoreCase("removeItem")) {this.doRemove(request, response);

return;}}

Aplicaciones distribuidas multicomponenteJSP: la Vista

Ejemplo parcial de un JSP que crea dinámicamente una lista desplegable HTML apartir de la información contenida en una base de datos consultada por el Java Bean

Page 126: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 126/145

127127

<table><tr><td><select name=lista_socios><%SocioBean socio; // Java Bean de apoyo

InformacionBean info = new InformacionBean();Vector todos = info.getSocios();for(int i = 0; i < todos.size(); i++) {

socio = (SocioBean)todos.elementAt(i);%><option value=<%= socio.getId()%>><%=socio.getSocio()%></option>

<%}%></select>

</td></tr>

Instancia del componente

Generación dela respuesta

“InformacionBean”.

Aplicaciones distribuidas multicomponenteJava Beans: el Modelo

Java Bean con la lógica de negocio y acceso a la base de datos (1/2)

Page 127: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 127/145

128128

public class InformacionBean {public Vector getSocios() {

Vector todos = new Vector();DataBean datos= new DataBean();try {

Connection con = datos.getConnection();String sql = "SELECT * FROM socios";Statement st = con.createStatement();ResultSet rs = st.executeQuery(sql);while(rs.next()) {

SocioBean socio = new SocioBean();socio.setId(rs.getInt("id"));socio.setSocio(rs.getString("socio"));socio.setMail(rs.getString("e_mail"));todos.addElement(socio);

}

Acceso a losdatos en el

componente

Aplicaciones distribuidas multicomponenteComponentes Java Beans: el Modelo

Java Bean con la lógica de negocio y acceso a la base de datos (2/2)

Page 128: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 128/145

129129

rs.close();st.close();con.close();

}catch(Exception e){ }finally {

return todos;}

}}

Cierre de objetosy control deerrores

índice

Page 129: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 129/145

130130

1. Acceso a base de datos con JDBC

2. Introducción a la plataforma JEE

3. Servlets de Java

4. Páginas JSP

5. Aplicaciones distribuidas multicomponente6. Filtros en aplicaciones WEB

Los filtros son la incorporación más reciente a la tecnología servlet java.

En el ámbito de las tecnologías J2EE, los filtros ocupan un lugar aparte. Los

Filtros en aplicaciones Web¿qué es un filtro?

Page 130: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 130/145

131131

En el ámbito de las tecnologías J2EE, los filtros ocupan un lugar aparte. Loscomponentes de aplicación J2EE están controlados por el contenedor Web.

En el caso del contenedor, recibe las solicitudes HTTP e invoca varios recursos deaplicación Web incluido servlets, páginas JSP, archivos HTML, imágenes...Es decir elcontenedor web es el interceptor de solicitudes HTPP a recursos. Este procesoimplica varios pasos, incluido identificar la aplicación Web, encontrar asociaciones de

ruta a recursos, comprobar autenticación y autorización, e invocar recursos.Con las diversas funciones de servlets, no hay ninguna instalación para participar eneste proceso de interceptación. No puede cambiar, controlar o revisar en el modo enel que el contenedor invoca a recursos.

Con filtros podemos configurar el contenedor Web para invocar ciertos objetos filtrosdurante el proceso de solicitud-respuesta HTTP. De este modo, comodesarrolladores de aplicación Web, podemos adaptar el modo en que las solicitudesHTTP son manipuladas en un contenedor Web.

Un filtro es un objeto parecido a un servlet y controlado por un contenedor que puedeser insertado de forma declarativa en el proceso de solicitud-respuesta HTTP.

Filtros en aplicaciones Web¿qué es un filtro?

Page 131: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 131/145

132132

Algunas de las posibilidades que ofrecen los filtros son:

Validar solicitudes.

Solicitudes HTTP de registro.

Autorizar solicitudes HTTP.

Gestión de contenido. Proporcionar un entorno HTTP de adaptación para servlets y páginas JSP.

Debemos destacar que todas estas diferencias podrían realizarse en un servlets,aunque con alguna dificultad. Existen sin embargo algunas diferencias :

Filtros en aplicaciones Web¿qué es un filtro?

Page 132: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 132/145

133133

Un servlet es equivalente a un recurso Web excepto en que es dinámico. Un filtro,por otro lado, no es un recurso al que sirve un contenedor. En cambio el contenedorinvoca un filtro mientras procesa una solicitud para servir a un recurso. De este modolos filtros nos ofrecen la oportunidad de participar en el proceso de servir cualquierrecurso Web.

Con la ayuda de los filtros, podemos separar de un modo efectivo la lógica de losservlets. Podemos introducir declarativamente filtros sin cambiar nuestros servlets.

Los filtros pueden ser utilizados e cualquier aplicación Web, incluido las decontenido completamente estático.

Page 133: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 133/145

La interfaz de filtro (I):

public interface Filter

Filtros en aplicaciones Webel API de los filtros

Page 134: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 134/145

135135

Esta interfaz del paquete java.servlet tiene los métodos de ciclo de vida de un filtro:

 El método init( ) 

public void init (FilterConfig config) throws Servlet Exception

El contenedor invoca esté método antes de poner el filtro en servicio. Durante la

inicialización, el contenedor envía la información de configuración al filtro a través deun objetoFilterConfig .

El método doFilter( ): 

public void doFilter (ServletRequest, ServletResponse response, filterChain) throws IOException,Servlet Exception

El contenedor invoca este método mientras procesa el filtro. Utilizando el objetoFilterChain, cada filtro puede instruir al contenedor para que procese el resto de lacadena de filtro.

La interfaz de filtro (II):

El método destroy( ): 

Filtros en aplicaciones Webel API de los filtros

Page 135: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 135/145

136136

public void destroy ( ) 

El contenedor invoca este método antes de sacar a un filtro de servicio. Esto puedesuceder en el cierre del contenedor o cuando la aplicación es replegada. 

La interfaz de filtro (III):

Ciclo de la vida de un filtro.

Filtros en aplicaciones Webel API de los filtros

Page 136: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 136/145

137137

Los métodos init () y doFilter () pueden lanzar una excepción ServletException ,

mientras que el método doFilter () también puede lanzar una excepción java.io.IOException ,

Cuando se provocan estas excepciones, el contenedor no puede continuar con lacadena de filtro, lo que significa que no puede servir el recurso Web al querepresenta la solicitud. Por lo tanto, en los casos en los que se deseen que elcontenedor sirva el recurso sin tener en cuenta cualquier excepción, es importante

asegurarse de que los filtros consumen excepciones y registran casosadecuadamente.

Instanciación Inicialización Filtrado Destrucción

La interfaz FilterConfig (I):

public interface FilterConfig

Filtros en aplicaciones Webel API de los filtros

Page 137: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 137/145

138138

Esta interfaz es la equivalente aServletConfig para filtros. La interfaz proporcionaacceso al entrono de filtros y cuenta con los siguientes métodos.

El método getFilterName ( ):  public void getFilterName ( )

Este método devuleve el nombre del filtro tal y cómo está especificado en eldescriptor de despliegue.

El método getInitParameter ( ):  public String getInitParameter (String name)

Devuelve el valor de los parámetros de inicialización nominados o null si elparámetro no existe. Podemos especificar los parámetros de inicialización en eldescriptor de despliegue. 

La interfaz FilterConfig (II):

public interface FilterConfig

Filtros en aplicaciones Webel API de los filtros

Page 138: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 138/145

139139

-El método getInitParameterNames ( ): public Enumeration getInitParameterNames ( )

Devuelve los nombres de los parámetros de inicialización del servlet como unaEnumeración de objetos String o una enumeración vacía si el servlet no tieneparámetros de inicialización.

-El método getServletContext ( )  public ServletContext getServletContext ( )

Devuelve una referencia al contexto de servlet asociado a la aplicación Web relevante.

La interfaz FilterChain:

public interface FilterChain

Filtros en aplicaciones Webel API de los filtros

Page 139: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 139/145

140140

Esta interfaz proporciona al flitro una sa para invocar el resto de la cadena de filtro.Cada filtro obtiene acceso a un objeto FilterChain cuando el método doFilter ( ) esinvocado. Utilizando este objeto, el filtro puede permitir al contenedor invocar elsiguienete filtro de cadena. Esta interfaz tiene un único método

-El método doFilter ( ) 

public void doFilter (Servlet request, ServletResponse response)

Cuando un filtro invoca este método, el contenedor invoca el siguiente filtro de la cadena de filtro. Si el último que invoca es el último filtro de la cadena, el contenedor invoca al recurso Web de la solicitud.

Para desplegar filtros en una aplicación Web se requieren las siguientes entradasadicionales en el descriptor del despliegue:

U l filter d l d fil É i il l d l ió d

Filtros en aplicaciones Webdescriptor de despliegue para filtros

Page 140: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 140/145

141141

Un elemento <filter> para declarar cada filtro. Éste es similar a la declaración deservlet en el descriptor de despliegue y consiste en un nombre, <filter-name>, elnombre de clase cualificado del filtro, <filter-class> y cero o más parámetros deinicialización. Para cada parámetro, debemos especificar un nombre <param-name>y un valor, <param-value>. Podemos, opcionalmente especificar una descripción,<description>, para cada parámetro de la inicialización.

Un elemento <filter-mapping> para especificar patrones URL. El contenedor utilizaasociaciones URL para determinar si uno o más filtros deben ser invocados antes deprocesar un recurso Web. El patrón corresponde al URL asociado al recurso Web.

En esta declaración se asocian tres filtros para solicitudes empezando por /product/catalog/ 

Filtros en aplicaciones Webdescriptor de despliegue para filtros

Page 141: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 141/145

142142

<filter-mapping><filter-name>filter1</filter-name><url-pattern>/product/catalog/</url-pattern>

</filter-mapping><filter-mapping>

<filter-name>filter2</filter-name>

<url-pattern>/product/catalog/</url-pattern></filter-mapping><filter-mapping>

<filter-name>filter3</filter-name><url-pattern>/product/catalog/</url-pattern>

</filter-mapping>

Hay tres puntos clave a destacar:

Filtros en aplicaciones Webdescriptor de despliegue para filtros

Page 142: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 142/145

143143

El contenedor confía en el orden en el que las asociaciones son declaradas en eldescriptor para componer una cadena de filtro.

Cada filtro tiene una oportunidad de procesar antes y después de que el verdaderorecurso sea procesado. Esto se debe al anidamiento de las llamadas doFilter ( ).

Este proceso es completamente declarativo. Puede activar o desactivar filtrosincluyendo o eliminando declaraciones de representación de filtro en el descriptor dedespliegue. 

Autor Título Ciudad y/o Editorial Año Edición

bibliografía

Page 143: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 143/145

144144

Autor Título  Ciudad y/opaís 

Editorial  Año  Edición 

Jim KeoghManual de referencia

J2EEESPAÑA McGraw-Hill 2003 4

Francisco JavierCeballos

Java 2 V5.0 ESPAÑA Ra-Ma 2004 1

Agustín Froufe

Java 2, Manual de

usuario y tutorial ESPAÑA Ra-Ma 2000 2

bibliografía en internet

R bl Di ibilid d

Page 144: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 144/145

145145

Responsableprincipal

Título Disponibilidad

y acceso Fecha de consulta 

Sun Microsystemshttp://java.sun.com/j2ee/1.4/docs/tutorial

/doc/Libre 2005

Fernando Bellashttp://www.tic.udc.es/~fbellas/teaching/i

s/index.html 

Libre 2007

Marty Hallhttp://www.coreservlets.com/Apache-

Tomcat-Tutorial/Libre 2007

Page 145: Ft Jav a Es Manual Jee Jdbc Servlet Jsp

8/6/2019 Ft Jav a Es Manual Jee Jdbc Servlet Jsp

http://slidepdf.com/reader/full/ft-jav-a-es-manual-jee-jdbc-servlet-jsp 145/145

146146

everis.com