Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes Tutoria 2
Apuntes Tutoria 2
Contenido
Apuntes Tutoría 2:.....................................................................................................1
a) pageContext:................................................................................................9
b) Objeto Request:..........................................................................................10
c) Objeto Response:.......................................................................................11
d) Objeto ServletConfig:.................................................................................11
e) Objeto Session:..........................................................................................12
f) Out:................................................................................................................13
g) Exception:...................................................................................................14
5. JavaBeans:.................................................................................................16
6. API JDBC:...................................................................................................17
Driver:.............................................................................................................18
DriverManager:..............................................................................................18
DriverPopertyInfo:..........................................................................................19
Connection:....................................................................................................19
DatabaseMetaData:.......................................................................................20
ResultSetMetadata:.......................................................................................21
Statement:......................................................................................................21
1
PreapredStatement:.......................................................................................22
CallableStatement:........................................................................................22
ResulSet:.......................................................................................................23
1. ¿Qué es JSP ?:
“La tecnología Java para la creación de páginas web con programación en el
servidor.”
Con JSP podemos crear aplicaciones web que se ejecuten en variados servidores
web, de múltiples plataformas, ya que Java es en esencia un lenguaje
multiplataforma. Las páginas JSP están compuestas de código HTML/XML
mezclado con etiquetas especiales para programar scripts de servidor en sintaxis
Java. Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML
habitual.
Motor JSP
El motor de las páginas JSP está basado en los servlets de Java -programas en
Java destinados a ejecutarse en el servidor-, aunque el número de desarrolladores
que pueden afrontar la programación de JSP es mucho mayor, dado que resulta
mucho más sencillo aprender que los servlets.
Otra pequeña
definición:
Java Server
Pages (JSP) es una
tecnología que ayuda a
los desarrolladores
de software a
crear páginas
web dinámicas basadas
en HTML y XML, entre
otros tipos de
documentos. JSP es
similar a PHP, pero usa
el lenguaje de
programación Java.
La diferencia entre Servlets y JSP es que los Servlets son clases que deben
implementar la clase abstracta HttpServlet, en especial el método doGet() o
doPost() y deben ser previamente compilados, mientras que los archivos JSP
contienen código Java entre código HTML utilizando los símbolos <% y %>. Por
esto un archivo JSP debe ser interpretado por el servidor al momento de la
petición por parte del usuario.
3
Un poco de HTML Y XML:
XML y HTML son lenguajes muy diferentes. Ambos nacen de la misma inspiración
llamada SGML por lo que su sintaxis es similar, aunque cada uno fue diseñado
para cumplir distintas funciones:
Un archivo XML se divide en dos partes: prolog y body. La parte prolog consiste
en metadatos administrativos, como declaración XML, instrucción de
procesamiento opcional, declaración de tipo de documento y comentarios. La
parte del body se compone de dos partes: estructural y de contenido (presente en
los textos simples).
El HTML (HyperText Markup Language) por otro lado ha sido concebido para
mostrar información, determinar cómo actúa y que hace. Su función radica en
ayudarnos a darle formato a los diversos contenidos de una página.
Resumiendo, el XML sirve para describir información y el HTML sirve para darle
formato y presentarla a través de un navegador. O sea que el XML no es ni será
nunca un reemplazo del HTML sino un complemento que sirve para manejar la
información separada del formato.
4
está ayudando a que seamos más ordenados y respetemos el lenguaje que
gracias a la tolerancia de los navegadores ha ido decayendo.
Note el signo (!) de admiración que acompaña justo detrás del signo porcentaje
(%), allí donde comienza del código JSP.
Estas variables o métodos así definidos serán globales y por tanto accesibles
desde cualquier lugar de la página JSP. Hay que tener en cuenta que el servidor a
través del motor JSP transforma la página JSP en un servlet, y éste es usado por
múltiples peticiones, lo que provoca que este tipo de variables conserven su valor
entre sucesivas llamadas o ejecuciones. Las declaraciones se ejecutan una única
vez, en la primera llamada al servlet equivalente.
5
Para eso tengo la tabla de medidas y sus conversiones:
6
7
3. Funcionalidad de los objetos:
Los objetos implícitos son objetos creados por el motor que no necesitan ser
declarados para ser usados, sino que se pueden invocar directamente. Por lo
tanto, estos objetos son accesibles al motor JSP, por lo que el desarrollador JSP
puede utilizarlos. En realidad, estos objetos son variables instanciadas de manera
automática en el servlet generado a partir del JSP.
a) pageContext:
PageContext es una clase que aglutina un conjunto de operaciones que se
ejecutan en los diferentes ámbitos. En ese sentido funciona como una
fachada/adaptador a la hora de darnos acceso a diferentes características de la
app. Este objeto permite acceder al espacio de nombres de la página JSP actual,
asimismo, ofrece el acceso a varios atributos de la página, así como una capa
sobre los detalles de implementación. Este objeto también cuenta con la
capacidad de almacenar y recuperar atributos en el ámbito de la página, sin
8
embargo, su uso más frecuente es el acceso y obtención de los objetos integrados
de JSP. El objeto pageContext se utiliza para representar a toda la página JSP.
Este objeto está concebido como un medio para acceder a información sobre la
página evitando al mismo tiempo la mayor parte de los detalles de
implementación.
pageContext.removeAttribute(“nombreAtributo”, PAGE_SCOPE);
Finalmente, cuando se trabaja con Servlets este objeto puede proporcionar los
accesos a los objetos implícitos.
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();licación.
9
b) Objeto Request:
En efecto, la acción de escribir una dirección cualquiera en la línea de URL de tu
navegador, se traduce en solicitar un determinado fichero a un servidor, o dicho en
la jerga técnica, se le hace un request al servidor.
Todas las variables pueden ser accedidas directamente mediante una llamada del
tipo Request(variable) sin mencionar el nombre de la colección. En este caso, el
servidor web busca entre todas las colecciones la clave pedida (variable),
buscando por este orden:
c) Objeto Response:
La interfaz Response de la Fetch API representa la respuesta a una petición.
El objeto Response
10
d) Objeto ServletConfig:
Comenzaremos estudiando el contexto de los servlets (Servlet Context). Este
objeto de contexto es propio de cada aplicación web, es decir, tendremos un
objeto ServletContext por aplicación web, por lo que nos servirá para comunicar
los servlets de dicha aplicación.
Obtener los valores de los parámetros de inicialización del servlet, que se hayan
establecido en el descriptor de despliegue. Tanto los nombres como los valores de
los parámetros son cadenas de texto (String).
Esta última función es la más importante, ya que nos permite acceder al objeto de
contexto global de la aplicación, con el que podremos realizar una serie de
operaciones.
e) Objeto Session:
Es un objeto integrado es una instancia del interfaz javax.servlet.http.HttpSession
y representa la sesión del usuario actual conectado a una aplicación web. Este
11
objeto es usado por sobre todo para almacenar y recuperar información
relacionada con el usuario.
Este objeto es muy usado en aplicaciones que tienen controles de usuarios con
base en la aplicación, es decir un usuario se loguea y automáticamente se crea un
atributo de sesión con un valor predefinido que se será verificado en cada una de
las páginas donde el usuario desea acceder, se le permitirá el acceso cuando el
atributo tenga valor predefinido.
Los métodos para almacenar y recuperar atributos son similares a los que tienen
request.
12
f) Out:
out, Instancia de javax.servlet.jsp.JspWriter, este objeto permite escribir la
respuesta o parte de ella, en HTML o cualquier otro contenido, como resultado de
la petición del cliente y enviarla al browser.
newLine(): Este método se utiliza para escribir una nueva línea. La sintaxis es
out.newLine()
NOTAS:
13
<% out.println(“Hola mundo”); %>
La cadena del argumento de print y println no tiene porqué ser una constante,
podría ser también una marca de HTML y así, por ejemplo,
g) Exception:
Es Aquel objeto que representa un error producido en la aplicación. Solo es
accesible si la página se ha designado como página de error (mediante la directiva
page isErrorPage).
Los errores son diferentes de las excepciones. Los errores normalmente indican
problemas de enlaces o de la máquina virtual de los que nuestra aplicación Web
podría no recuperarse, como errores de memoria. Sin embargo, las excepciones
son condiciones que pueden capturarse y recuperarse de ellas. Estas excepciones
podrían ser, por ejemplo, un NullPointerException o un ClassCastException,
que nos dicen que se ha pasado un valor nulo o un dato del tipo erróneo a nuestra
aplicación mientras se estaba ejecutando.
14
Y los operadores son los clásicos que conocemos
JSP Language Expresión (EL) de modo que los datos de acceso almacenados en
un JavaBean se vuelven muy simple. JSP EL o bien se puede utilizar para crear
una expresión aritmética también se puede utilizar para crear una expresión
15
lógica. En las expresiones JSP EL pueden utilizar enteros, números de punto
flotante, cadenas, constantes verdadero, falso, no es nulo.
5. JavaBeans:
Los JavaBeans son un modelo de componentes creado por Sun Microsystems
para la construcción de aplicaciones en Java.
Se usan para encapsular varios objetos en un único objeto (la vaina o Bean en
inglés), para hacer uso de un solo objeto en lugar de varios más simples.
Mas propiedades:
16
6. API JDBC:
Java Database Connectivity (en español: Conectividad a bases de datos de
Java), más conocida por sus siglas JDBC,12 es una API que permite la ejecución
de operaciones sobre bases de datos desde el lenguaje de programación Java,
independientemente del sistema operativo donde se ejecute o de la base de datos
a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se
utilice.
17
Driver:
Los drivers JDBC son adaptadores del lado del cliente (instalados en la máquina
cliente, no en el servidor) que convierten la petición proveniente del programa
JAVA a un protocolo que el SGBD pueda entender.
Driver JDBC Tipo 2 (también llamado driver API-Nativo) convierte el método JDBC
a llamadas nativas de la API de la base de datos. Es más rápido que el puente
JDBC-ODBC pero se necesita instalar la librería cliente de la base de datos en la
máquina cliente y el driver es dependiente de la plataforma.
Driver JDBC Tipo 4 (también llamado Driver Java Puro directo a la base de datos).
Es independiente a la plataforma.
DriverManager:
La clase DriverManager implementa la capa de gestión de JDBC, y trabaja como
intermediaria entre el usuario y los drivers. Guarda la lista de los drivers que están
disponibles y establece la conexión entre la base de datos y el driver apropiado.
Además, la clase DriverManager se ocupa de cosas cómo gestionar los límites de
tiempo de ‘login’ en el driver y de la salida de los mensajes de traza y log.
Para aplicaciones simples, el único método en esta clase que necesita un
18
programador general para su uso directamente es
DriverManager.getConnection. Como su nombre indica, este método
establece una conexión con la base de datos. JDBC permite al usuario llamar a los
métodos de DriverManager getDriver, getDrivers y registerDriver así
como al método de Driver connect, pero en la mayoría de los casos es preferible
dejar que la clase DriverManager gestione los detalles al establecer la conexión.
DriverPopertyInfo:
Esta permite proporcionar diversa información acerca de un Driver.
Connection:
El objeto Connection es el principal objeto utilizado para proporcionar un vínculo
entre las bases de datos y una aplicación en Java. Connection proporciona
métodos para manejar el procesamiento de transacciones, para crear objetos y
ejecutar instrucciones SQL, y para crear objetos para la ejecución de
procedimientos almacenados.
19
Se puede emplear tanto el objeto Driver como el objeto DriverManager para crear
un objeto Connection. Se utiliza el método connect() para el objeto Driver, y el
método getConnection() para el objeto DriverManager.
DatabaseMetaData:
En java, las clases DataBaseMetaData y ResultSetMetaData permiten,
respectivamente, analizar la estructura de una base de datos (qué tablas tiene,
que columnas cada tabla, de qué tipos, etc) o de un ResultSet de una consulta,
para averiguar cuántas columnas tiene dicho ResulSet, de qué columnas de base
de datos proceden, de qué tipo son, etc.
Para ver qué catálogos, esquemas, tablas, tipos de tablas, columnas de las tablas
y demás de una base de datos, tenemos la clase DataBaseMetaData. Una vez
establecida la conexión, podemos obtener la instancia correspondiente de dicha
clase con el método getDataBaseMetaData() de la Connection,
20
ResultSetMetadata:
Objeto que se puede utilizar para obtener información sobre los tipos y
propiedades de las columnas de un ResultSetobjeto. El siguiente fragmento de
código crea el ResultSetobjeto rs, crea el ResultSetMetaDataobjeto rsmd y usa
rsmd para averiguar cuántas columnas tiene rs y si la primera columna de rs se
puede usar en una WHEREcláusula.
Statement:
Un objeto Statement se usa para enviar sentencias SQL a la base de datos.
Actualmente hay tres tipos de objetos Statement, todos los cuales actúan como
contenedores para la ejecución de sentencias en una conexión dada: Statement,
PreparedStatement que hereda de Statement y CallableStatement que hereda
de PreparedStatement. Estas están especializadas para enviar tipos particulares
de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL
simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar
sentencias SQL precompiladas con o sin parámetros IN; y un objeto
CallableStatement se usa para ejecutar un procedimiento de base de datos
almacenado. La interfase Statement suministra métodos básicos para ejecutar
sentencias y devolver resultados. La interfase PreparedStatement añade
métodos para trabajar con los parámetros IN; y la interfase CallableStatement
añade métodos para trabajar con parameters OUT.
21
Statement stmt = conn.createStatement();
PreparedStatement:
La interfase PreparedStatement hereda de Statement y difiere de esta en dos
maneras.
• Las instancias de PreparedStatement contienen una sentencia SQL que
ya ha sido compilada. Esto es lo que hace que se le llame ‘preparada’.
• La sentencia SQL contenida en un objeto PreparedStatement pueden
tener uno o más parámetros IN. Un parámetro IN es aquel cuyo valor no se
especifica en la sentencia SQL cuando se crea. En vez de ello la sentencia
tiene un interrogante (‘?’) como un ‘encaje’ para cada parámetro IN. Debe
suministrarse un valor para cada interrogante mediante el método apropiado
setXXX antes de ejecutar la sentencia.
Como los objetos PreparedStatement están precompilados, su ejecución, es más
rápida que los objetos Statement. Consecuentemente, una sentencia SQL que se
ejecute muchas veces a menudo se crea como PreparedStatement para
incrementar su eficacia.
Siendo una subclase de Statement, PreparedStatement hereda toda la
funcionalidad de Statement. Además, se añade un set completo de métodos
necesarios para fijar los valores que van a ser enviados a la base de datos en el
lugar de los ‘encajes’ para los parámetros IN. También se modifican los tres
métodos execute, executeQuery y executeUpdate de tal forma que no toman
argumentos.
CallableStatement:
Un objeto CallableStatement provee de una forma estándar de llamar a
procedimientos almacenados de la base de datos. Un procedimiento almacenado
se
encuentra en la base de datos. La llamada al procedimiento es lo que contiene el
22
objeto CallableStatement. Esta llamada se escribe en una sintaxis de escape que
puede tomar una de dos formas: un formato con un parámetro resultado y el otro
sin él.
La sintaxis para invocar un procedimiento almacenado en JDBC se muestra a
continuación: Notar que los corchetes indican que lo que se encuenta contenido
en ellos es opcional, no froma parte de la sintaxis.
{call procedure_name[(?, ?, ...)]}
La sintaxis para un procedimiento que devuelve un resultado es:
{? = call procedure_name[(?, ?, ...)]}
La sintaxis para un procedimiento almacenado sin parámetros se parece a algo
como:
{call procedure_name}
ResulSet:
Un ResultSet contiene todas las filas que satisfacen las condiciones de una
sentencia SQL y proporciona el acceso a los datos de estas filas mediante un
conjunto de métodos get que permiten el acceso a las diferentes columnas de la
filas. El método ResultSet.next se usa para moverse a la siguiente fila del result
set,
convirtiendo a ésta en la fila actúal.
El formato general de un result set es una tabla con cabeceras de columna y los
valores correspondientes devueltos por la ‘query’. Por ejemplo, si la ‘query’ es
SELECT a, b, c FROM Table1, el resultado tendrá una forma semejante a :
23
El objeto ResultSet proporciona varios métodos para obtener los datos de columna
correspondientes a una fila. Todos ellos tienen el formato get<Tipo>, siendo
<Tipo> un tipo de datos Java.
Un ResultSet mantiene un cursor que apunta a la fila actual de datos. El cursor se
mueve una fila hacia abajo cada vez que se llama al método next. Inicialmente se
sitúa antes de la primera fila, por lo que hay que llamar al método next para
situarlo
en la primera fila convirtiéndola en la fila actual. Las filas de ResultSet se
recuperan en secuencia desde la fila más alta a la más baja.
executeUpdate:
Ejecuta la instrucción SQL dada, que puede ser una instrucción INSERT, UPDATE
o DELETE; o una sentencia SQL que no devuelve nada, como una sentencia DDL
SQL. A partir de Microsoft SQL Server JDBC Driver 3.0, executeUpdate devolverá
el número correcto de filas actualizadas en una operación MERGE.
24