Tecnología JDBC
Esta tecnología nos permite, mediante programas de Java o desde una JSP, realizar conexiones a una base de datos y ejecutar sentencias SQL para realizar consultas. Para más información, consultar la página web: http://java.sun.com/jdbc/.
API JDBC
El API JDBC, una tecnología estándar creada por Sun, permite a los desarrolladores de páginas Java y JSP conectar con cualquier tipo de motor de base de datos.
Las características más importantes de esta API JDBC son:
- Posibilidad de utilizar SQL (Structured Query Language).
- Acceso sencillo a todas las funciones de SQL.
- Tratamiento de los resultados devueltos por SQL como objetos, permitiendo el manejo de errores como excepciones.
El API JDBC de Sun se inspira en la filosofía del estándar ODBC (Open Data Base Connectivity) de Microsoft, que busca crear un estándar para el uso de cualquier base de datos con Java. Sun creó un puente entre JDBC y ODBC que realiza la conversión de llamadas de forma transparente para el programador. Sin embargo, el puente JDBC-ODBC no es la solución ideal debido al proceso de conversión entre APIs, lo que puede afectar el rendimiento en aplicaciones con un uso intensivo de consultas.
Tipos de Controladores JDBC
Existen cuatro tipos de controladores o drivers JDBC definidos en la especificación de Sun:
- Puente 1 (JDBC-ODBC): Utiliza el sistema de puente. Requiere la instalación de software específico en el cliente y puede ser lento.
- Puente 2 (API Nativas): Contiene código Java que realiza llamadas a métodos nativos de la base de datos en C o C++. En ocasiones, requiere la instalación de software cliente.
- Puente 3: Se comunica con una aplicación intermedia en el servidor mediante sockets, trasladando las peticiones del cliente a una API específica del controlador. No requiere software cliente.
- Puente 4: Utiliza protocolos de red incluidos en el SGBD (Sistema de Gestión de Bases de Datos), comunicándose directamente con la base de datos mediante sockets de Java. Es el mejor de los cuatro, escrito completamente en Java y generalmente provisto por el fabricante del SGBD.
Objetos Implícitos en JSP
Existen objetos implícitos o integrados disponibles para el programador de páginas JSP, sin necesidad de instanciarlos. Estos objetos simplifican la programación JSP.
Objeto page
Instancia de java.lang.Object
con ámbito de página. Representa la instancia de la clase generada a partir de una página JSP (la página actual). Se utiliza this
para referirse a esta página.
Objeto config
Instancia de javax.servlet.ServletConfig
que maneja la configuración del servlet generado al solicitar la página JSP. Su ámbito es de página.
Objeto request
Instancia de javax.servlet.ServletRequest
que contiene información de los datos enviados al servidor a través de una página web. El método getParameter()
recupera valores enviados mediante un formulario o una URL. Ejemplo:
<% String nombre = request.getParameter("nombre"); %>
Objeto sesión
Instancia de javax.servlet.http.HttpSession
que maneja las acciones relacionadas con la sesión del usuario. Su ámbito es de sesión. Una sesión se crea automáticamente (a menos que se especifique lo contrario) al solicitar una página JSP, permitiendo almacenar información del usuario. Ejemplo:
<% HttpSession unaSesion = request.getSession(); unaSesion.setAttribute(usuario,"pancho_lopez"); %>
Objeto application
Instancia de java.servlet.ServletContext
con ámbito de aplicación. Representa la aplicación web donde se ejecuta la página JSP.
Flujos en Java
El modelo básico de un algoritmo consiste en tres conexiones: entrada, procesamiento y salida. La entrada/salida (E/S) es fundamental en computación, permitiendo la interacción con el mundo exterior.
¿Qué es un Flujo?
Un flujo es un sistema de comunicación en el paquete java.io
para guardar y recuperar información en dispositivos de almacenamiento. Se puede visualizar como un tubo para leer o escribir bytes, independientemente del origen (teclado, monitor, archivo, proceso, conexión TCP/IP, etc.).
Todos los flujos en java.io
pertenecen a dos clases abstractas: java.io.InputStream
(flujos de entrada) y java.io.OutputStream
(flujos de salida). Se interactúa con ellos mediante los métodos read()
y write()
.