ft jav a es manual jee jdbc servlet jsp
TRANSCRIPT
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
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
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
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
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
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
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)
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
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
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.
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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?
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
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
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
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
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)
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)
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
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?
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?
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?
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.
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
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
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
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
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
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
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
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
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
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
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
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
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