• No se han encontrado resultados

Sistema móvil de mercadeo empresarial basado en tecnología WEB y WAP.

N/A
N/A
Protected

Academic year: 2023

Share "Sistema móvil de mercadeo empresarial basado en tecnología WEB y WAP."

Copied!
130
0
0

Texto completo

(1)

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y

ADMINISTRATIVAS

SISTEMA MÓVIL DE MERCADEO EMPRESARIAL BASADO EN TECNOLOGÍA WEB Y WAP”

T E S I N A

Q U E P A R A O B T E N E R E L T Í T U L O D E:

LICENCIADO EN CIENCIAS DE LA INFORMÁTICA

P R E S E N T A N :

G U S T A V O A R I A S C R U Z R E Y E S S A L A Z A R O L I V A R E S

MÉXICO DF. 2009

(2)

Índice.

Resumen. i

Introducción. ii

Capitulo 1. Marco Metodológico 1

1.1 Planteamiento del sistema 1

1.2 Objetivo 1

1.3 Alcances 2 1.4 Justificación 2 1.5 Tipos de Investigación 4 1.6 Técnicas de Investigación a Emplear 4 Capítulo 2. Análisis del sistema 5 2.1 E-business 5 2.2 Wap 5 2.3 Aplicaciones 7 2.4 Java Server Pages 7 2.5 Profesional Home Pages 8

2.6 Lenguaje de Desarrollo 8

2.7 Características ASP 9 2.8 Características PHP 9

2.9 Características JSP 10

2.10 Características Servlets 11

2.11 Servidor de Base de Datos 12

2.12 Controladores de Bases de Datos 15

2.13 Servidor WAP 19

2.14 Secure Socket Layer (SSL) 20

2.15 Java Beans 23

Capítulo 3. Diseño del Sistema 26

3.1 Arquitectura del Sistema 26

3.2 Correo Electrónico 27

3.3 Diagrama a Bloques del Sistema 34

3.4 Diagrama de Clases 36

3.5 Casos de Uso 37

3.6 Diagramas de Secuencia 43

(3)

3.7 Diagramas de Colaboración 49

3.8 Diagramas de Transición de Estados 54

Capítulo 4. Desarrollo del Sistema 55

4.1 Codificación 55

4.2 Diccionario de Datos 55

4.3 HTML 58

4.4 WML 62

4.5 JSP 64

4.6 Java Beans 70

Capítulo 5. Implementación del Sistema 75

5.1 Instalación de Servidor de producción 75

5.2 Instalación de servidor de aplicaciones 77

5.3 Instalación de base de datos 79

Capítulo 6. Pruebas Unitarias y Generales del Sistema 80

6.1 Instalación de ambiente de pruebas 80

6.2 Pruebas para someter a estrés la aplicación 80

6.3 Pruebas unitarias por modulo 81

6.3.1 Reporte 81

6.4 Consulta de Banners 84

6.5 Pruebas Integrales 84

6.5.1 Descripción del Proceso 85

6.5.2 Reporte 86

6.5.3 Matriz de Pruebas 86

6.6 Manual de Usuario 91

6.7 Manual de Instalación 91

Conclusiones 92

Bibliografía 94

Glosario 95

Anexos 99

(4)

i

Resumen

La presente tesina está dividida en seis capítulos cada uno de los cuáles se refiere a una parte especifica del desarrollo del sistema Sistema Móvil de Mercadeo Empresarial Basado en Tecnología Web y Wap. Para el final del capítulo seis, usted será capaz de manejar el sistema de una manera adecuada aprovechando todo el sistema y cada una de sus partes. Es importate recalcar que usted debe de contar con fundamentos de programación.

En el primer capítulo se describe el marco metodologico que se empleo para la realización del proyecto, apartir del capítulo dos al capítulo seis corresponden al desarrollo especifico del sistema, desde el análisis, diseño, desarrollo, implementación hasta pruebas. Es importante mencionar que en la parte de los anexos se encuentra información de vital importancia para el buen funcionamiento del sistema.

Se presenta una descripción de cómo se desarrolló el software del proyecto mediante los componentes de software de un computador tipico. Además en los anexos puede encontrar un manual de usuario y un manuel de instalación con los cuales será más facil la instalación y el manejo del sistema.

Al término del último capítulo usted será capaz de diferenciar y llevar acabo una aplicación web y una aplicación wap. Así mismo usted será capaz de manejar de una manera adecuada el software necesario para llevar acabo las aplicaciones.

Esta tesina constituye el conjunto de conocimientos que han adquirido los autores de la presente tesina durante el periodo de enseñanza en la carrera de Ciencias de la Informática, del curso de seminario Análisis, Diseño y Programación Orientada a Objetos, asi como de otras fuentes y de su experiencia laboral. Esperamos querido lector sea de su agrado.

(5)

ii

Introducción

El uso de páginas dinámicas que se están utilizando actualmente para los portales de e-business en internet, como es el caso de ASP, el cual esta muy difundido en Internet ya que es una creación de Microsoft; a si mismo actualmente se utiliza el lenguaje WML para elaborar páginas que puedan ser desplegadas en celulares, el cual es el lenguaje que se está empleando para la tecnología Wireless, que son las redes inalambricas, el cual sentará las bases para la nueva forma de realizar comercio electrónico.

Por lo tanto este proyecto es un sistema que utiliza la tecnología que se está utilizando para el desarrollo de los actuales portales de Internet y sistemas que se pueden acceder por medio de un navegador de Internet, los cuales son herramientas de administración del negocio y de comercio electrónico que se rentan por Internet a las empresas conocidos como ASP (Application Service Provider, Proveedor de Servicios de Aplicación), los cuales ofrecen que la empresa tenga una buena estructura tecnológica sin hacer una gran inversión que si mandara a realizar un sistema a una compañía consultora de software.

Es un doble sistema ya que contempla dos modos de acceso al mismo, por medio de WEB y por medio de WAP, además será una herramienta potente para la comercialización de los productos de las empresas adscritas a él y para los consumidores.

Lo esencial aquí es que la nueva economía no es la economía de las empresas que producen o diseñan Internet, es la de las empresas que funcionan con y a través de Internet. Ésa es la nueva economía y eso es lo que está ocurriendo en todo el mundo. Es cierto que el desarrollo de los usos de Internet empieza primero en aquellas empresas de alta tecnología y empresas de creación de equipos de Internet y de programas de software que lo aplican a su propia organización, pero, a partir de ahí, se está difundiendo rapidísimamente a todo tipo de empresas, creando un nuevo modelo de organización empresarial. Se habla mucho del comercio electrónico. El comercio electrónico tiene interés, pero se incide demasiado en la idea de la venta del comercio electrónico, el llamado bussines to consumers B2C, la venta a los consumidores. Esto sólo representa el 20%

del total de las transacciones electrónicas comerciales en Internet. El 80% son transacciones de empresa a empresa para relaciones comerciales entre las empresas y esto se está acentuando en estos momentos (B2B). Es decir, que el volumen crece y, por tanto, al crecer el volumen global, también crece el número de transacciones hacia los consumidores. El volumen que crece mucho

(6)

iii

más, en términos absolutos y relativos, es el de relación de empresa a empresa ¿Qué está ocurriendo? Que casi todo el trabajo interior de empresa, de relación con los proveedores y de relación con los clientes se está haciendo por la red.

Actualmente, la gestión de compras es un elemento clave para la competitividad de las empresas debido a la importancia que tiene en los resultados empresariales a través del margen de beneficio, de los plazos de entrega, de la calidad del producto/servicio, de la satisfacción del cliente, etc.

Una de las principales ventajas de realizar compras por Internet es la ampliación del número de proveedores potenciales y disminución del tiempo de localización: El comprador tiene acceso rápido y económico a gran cantidad de proveedores potenciales tanto a nivel nacional como internacional, teniendo mucha información adicional sobre los mismos que le posibilita su fácil localización y evaluación.

(7)

1

Capítulo 1. Marco Metodológico

1.1 Planteamiento del sistema

En la época actual en el que la tecnología nos esta rebasando se vuelve indispensable utilizar la tecnología WEB (el Internet) para las tareas mas cotidianas tanto en el hogar como en las industrias, es así como surge la necesidad de emplear tecnologías de Internet para mejorar y transformar los procesos clave de los negocios. Poner en Internet procesos importantes para robustecer sus operaciones de atención al cliente, afinar sus cadenas de abastecimiento y alcanzar nuevos clientes.

Una de las principales ventajas de realizar compras por Internet es la ampliación del número de proveedores potenciales y disminución del tiempo de localización: El comprador tiene acceso rápido y económico a gran cantidad de proveedores potenciales tanto en el ámbito nacional como internacional, teniendo mucha información adicional sobre los mismos que le posibilita su fácil localización y evaluación.

Con la tecnología WAP se pretende que desde cualquier teléfono celular WAP se pueda acceder a la información que hay en Internet así como realizar operaciones de comercio electrónico, aplicaciones de consulta y transacciones bancarias, operaciones en bolsa o compra de entradas para el cine serán algunos de los servicios que esta tecnología ya está explotando.

Con WAP podemos navegar por Internet, desde la pantalla del móvil. Al poder consultar la información desde un dispositivo móvil, no es necesario trasladarse al punto de venta para poder hacerlo, lo que representa un ahorro en tiempo, dinero y espacio. La información se queda almacenada en el dispositivo, por lo que no es necesario conectarse nuevamente a Internet para poder observarla.

1.2 Objetivo

El objetivo de este proyecto es diseñar e implementar un sistema de ventas que sirva de interfaz entre comerciantes y consumidores, aprovechando las tecnologías WEB y WAP, para ampliar el mercado a los comerciantes y facilitar la compra a los consumidores. Se pretende desarrollar un sistema que realice el control de ventas de artículos de diferentes empresas, por medio de Internet y además por medio de dispositivos móviles.

(8)

2

1.3 Alcances

El sistema final estará conformado por:

Un sitio WEB donde las empresas promocionen sus productos para que los consumidores consulten la información de su interés, y realicen las compras de acuerdo a sus necesidades y gustos.

Un subsistema que controle la información de las empresas asociadas a nuestro sistema, incluyendo catálogos de los diferentes productos que ofrece cada una de ellas.

Un sitio WAP con la misma finalidad del sitio WEB, pero para su acceso a través de dispositivos móviles.

Un subsistema que controle la información de los clientes.

Un subsistema para el manejo de los pedidos realizados por el cliente y de la realización de dichos pedidos.

Un subsistema encargado de la búsqueda de los productos para el cliente.

1.4 Justificación

El motivo de realizar esta tesina es desarrollar toda habilidad, conocimiento y capacidades para el entendimiento propio de este tema: Análisis, diseño y programación orientada a objetos.

Actualmente, la gestión de compras es un elemento clave para la competitividad de las empresas debido a la importancia que tiene en los resultados empresariales a través del margen de beneficio, de los plazos de entrega, de la calidad del producto/servicio, de la satisfacción del cliente, etc.

Una de las principales ventajas de realizar compras por Internet es la ampliación del número de proveedores potenciales y disminución del tiempo de localización: El comprador tiene acceso rápido y económico a gran cantidad de proveedores potenciales tanto a nivel nacional como internacional, teniendo mucha información adicional sobre los mismos que le posibilita su fácil localización y evaluación.

(9)

3

Una de las áreas más importantes en la industria y en el ámbito académico es la programación orientada a objetos. La programación orientada a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software.

El uso de páginas dinámicas que se están utilizando actualmente para los portales de e-business en Internet, como es el caso de ASP, el cual esta muy difundido en Internet ya que es una creación de Microsoft; también se empleará el lenguaje WML para elaborar páginas que puedan ser desplegadas en celulares, el cual es el lenguaje que se está empleando para la tecnología Wireless, que son las redes inalámbricas, el cual sentará las bases para la nueva forma de realizar comercio electrónico.

Por lo tanto este proyecto es un sistema que utiliza la tecnología que se está empleando para el desarrollo de los actuales portales de Internet y sistemas que se pueden acceder por medio de un navegador de Internet, los cuales son herramientas de administración del negocio y de comercio electrónico que se rentan por Internet a las empresas conocidos como ASP (Application Service Provider, Proveedor de Servicios de Aplicación), los cuales ofrecen que la empresa tenga una buena estructura tecnológica sin hacer una gran inversión que si mandara a realizar un sistema a una compañía consultora de software.

Es un doble sistema ya que contempla dos modos de acceso al mismo, por medio de WEB y por medio de WAP, además será una herramienta potente para la comercialización de los productos de las empresas adscritas a él y para los consumidores. La importancia de este tema radica en la búsqueda de avances decisivos para la innovación de nuevas técnicas, que faciliten a todo aquel individuo que desee optimizar tiempos para la implementación de sistemas.

La empresa es uno de los principales entes que dependen de los cambios significativos que trae consigo la orientación a objetos:

Modernización, transformación e implementación del cambio con rapidez, eficacia y sin afectar a la organización. Esto es lo que buscan hoy en día y sin dejar a un lado la capacidad para competir.

Se pretende que al final del desarrollo de la presente tesina, esta propuesta alcance el desarrollo optimo para la empresa, disminución de la carga de trabajo para el área de sistemas (servidores y redes) y reducción de tiempos de consulta de artículos en venta para los clientes.

(10)

4

Para los alumnos que desarrollan esta tesina, resulta de gran valor la comprensión y desarrollo de este tema y sus aplicaciones, con el objeto único de ampliar sus habilidades para evaluar, planificar e implementar la programación orientada a objetos.

No perder de vista el objetivo principal del proyecto que es conseguir el titulo profesional deseado por cada uno de los estudiantes.

1.5 Tipos de Investigación

Para nuestro proyecto comenzaremos con una investigación de tipo exploratorio ya que no obstante que el tema que abordamos en nuestro proyecto ya ha sido estudiado, nosotros le daremos un enfoque diferente para después entrar a una investigación de tipo descriptivo en donde mostraremos el sistema ya terminado con respuestas tangibles que son consecuencia de un análisis.

1.6 Técnicas de Investigación a Emplear

Para la recolección de información durante el desarrollo del proyecto nos basaremos en técnicas documentales o hemerográficas, ya sea en libros, páginas web, artículos, revistas, etc. Cabe mencionar que como el proyecto se basa en tecnologías informáticas, es necesario apoyarnos en lo que ya esta comprobado.

(11)

5

Capítulo 2. Análisis del Sistema

2.1 E-business

E-bussines es usar tecnologías de Internet para mejorar y transformar los procesos clave de los negocios. Poner en Internet procesos importantes para robustecer sus operaciones de atención al cliente, afinar sus cadenas de abastecimiento y alcanzar nuevos clientes.

En la generación e-business podrá encontrar, entre otras soluciones:

Soluciones de Gestión Empresarial (ERP).

E-Collaboration.

Comercio Electrónico.

E-Markets.

Gestión de Relación con Clientes (CRM).

Tecnología Inalámbrica (Wireless)

2.2 WAP

WAP es un protocolo basado en los estándares de Internet que ha sido desarrollado para permitir a teléfonos celulares navegar a través de Internet. Con la tecnología WAP se pretende que desde cualquier teléfono celular WAP se pueda acceder a la información que hay en Internet así como realizar operaciones de comercio electrónico.

En la versión 1 de WAP, definida en 1999, el lenguaje de presentación de contenidos es el WML, o Wireless Markup Language. La pila de protocolos de WAP 1 no es compatible directamente con la de Internet: WSP (Wireless Session Protocol), WTP (Wireless Transaction Protocol), WTLS (Wireless Transport Layer Security), y WDP (Wireless Datagram Protocol). WDP corresponde a la capa de transporte, con funcionalidad equivalente al protocolo UDP de Internet, y se apoya en los servicios de la "portadora" WAP, que depende de la red móvil que esté usando el terminal. WAP 1 además define la interfaz de acceso de las aplicaciones a las funciones de telefonía del terminal con WTAI (Wireless Telephony Application Interface), y también un sencillo lenguaje de "scripting", WMLScript, basado en ECMAscript/JavaScript.

(12)

6

La incompatibilidad de la pila de protocolos WAP 1 con la de Internet exige la presencia de un nodo pasarela para hacer de intermediario en la comunicación entre un terminal WAP y un servidor de contenidos WAP residente en Internet. WAP 1 ha sido objeto de fuertes críticas por diversos motivos, que incluyen la pobreza del soporte gráfico (gráficos monocromos WBMP, Wireless Bitmap), las diferencias en las implantaciones de WAP en los terminales de distintos fabricantes, y un potencial problema de seguridad debido a que WTLS no es muy robusto y además, por no ser compatible con las capas de seguridad usadas en Internet, en la pasarela WAP los contenidos deben estar en claro.

La nueva versión de WAP, WAP 2.0, está presente en los teléfonos móviles de nueva generación (a partir de 2004). Esta versión es una reingeniería de WAP que utiliza XHTML-MP (Mobile Profile) como lenguaje de presentación de contenidos, y mejora el soporte de los gráficos (incluye color).

En cuanto a los protocolos usados, en la capa de transporte se usa TCP y en la de aplicación, HTTP. Así pues, WAP 2.0 ha adoptado los protocolos de Internet. WAP 2.0 además especifica opciones tanto en TCP como en HTTP para mejorar las prestaciones de dichos protocolos sobre redes de comunicaciones móviles.

Los mecanismos de seguridad usados ya son compatibles con los de Internet por lo que los problemas de seguridad de WAP 1 se resuelven. La pasarela WAP no es estrictamente necesaria en WAP 2.0, pero su presencia puede tener funciones útiles, como caché web y para dar soporte a las opciones de TCP y HTTP antes mencionadas.

Las características principales de WML son:

1. Soporte para imágenes y texto, con posibilidad de texto con formato.

2. Tarjetas agrupadas en barajas. Una pagina WML es como una página HTML en la que hay una serie de cartas, al conjunto de estas cartas se les suele llamar baraja.

3. Posibilidad de navegar entre cartas y barajas de la misma forma que se navega entre paginas Web.

4. Manejo de variables y formularios para el intercambio de información entre el teléfono celular y el servidor.

WML es un lenguaje de marcas similar al HTML. WML es compatible con XML 1.0. Las páginas WML son llamadas barajas ya que están compuestas por cartas, un navegador WAP, solo puede mostrar una carta al mismo tiempo.

(13)

7

En la figura 2.2.1 se muestra la equivalencia de los protocolos WAP y de Internet.

Fig. 2.2.1

2.3 Aplicaciones.

El tamaño del dispositivo y la movilidad son los dos puntos fuertes que avalan el éxito de esta tecnología y que la han convertido en una referencia en tan solo unos meses. Por el contrario, las reducidas dimensiones de la pantalla y las limitaciones de velocidad de acceso son sus enemigos principales.

Aplicaciones de consulta y transacciones bancarias, operaciones en bolsa o compra de entradas para el cine serán algunos de los servicios que esta tecnología ya está explotando.

2.4 Java Server Pages.

Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámicamente. Muchas páginas Web que están construidas con programas CGI son casi estáticas, con la parte dinámica limitada a muy pocas localizaciones. Pero muchas variaciones CGI, incluyendo los servlets, hacen que generemos la página completa mediante nuestro programa, incluso aunque la mayoría de ella sea siempre lo mismo. JSP nos permite crear dos partes de forma separada.

2.5 Profesional Home Pages.

(14)

8

PHP es uno de los lenguajes de lado servidor más extendidos en la web. Nacido en 1994, se trata de un lenguaje de creación relativamente creciente que ha tenido una gran aceptación en la comunidad de webmasters debido sobre todo a la potencia y simplicidad que lo caracterizan. PHP es un lenguaje de programación el cual se ejecuta en los servidores web y que permite crear contenido dinámico en páginas HTML.

Dispone de múltiples herramientas que permiten acceder a bases de datos de forma sencilla, por lo que es ideal para crear aplicaciones para Internet. Es multiplataforma, funciona tanto para Unix (con Apache) como para Windows (con Microsoft Internet Information Server) de forma que el código que se haya creado para una de ellas no tiene porqué modificarse al pasar a la otra.

La sintaxis que utiliza, la toma de otros lenguajes muy extendidos como C y Perl. Para quien conozca las ASP (Active Server Pages) de Microsoft, PHP es muy parecido, sólo que más rápido, gratuito y multiplataforma.

2.6 Lenguaje de Desarrollo

Se realizo la investigación de los lenguajes posibles para el desarrollo del proyecto tales como ASP, Perl, JSP, PHP, etc., para proceder con la evaluación de cada uno de ellos y realizar una elección apropiada.

La versatilidad de un lenguaje está íntimamente relacionada con su complejidad. Un lenguaje complicado en su aprendizaje permite en general el realizar un espectro de tareas más amplio y más profundamente. Es por ello que a la hora de elegir el lenguaje que queremos utilizar tenemos que saber claramente qué es lo que queremos hacer y si el lenguaje en cuestión nos lo permite o no. En el dominio de la red, los lenguajes de lado servidor más ampliamente utilizados para el desarrollo de páginas dinámicas son el ASP, PHP y PERL.

2.7 Características ASP

El ASP es un lenguaje derivado del Visual Basic desarrollado por Microsoft. Por lo que su empleo se realiza sobre plataformas funcionando bajo sistema Windows NT.

Estos son los servidores de contenidos ASP posibles para plataformas Microsoft:

(15)

9

Internet Information Server 3.0 o superior (para sistema operativo NT).

Personal Web Server (Para Windows 95 y Windows 98).

Para plataformas Unix es necesario añadir un software que actúe de intérprete siendo algunos de los más conocidos:

Chili soft Instant ASP

2.8 Características PHP

El PHP podría ser considerado como el lenguaje análogo al ASP utilizado en plataformas Unix y Linux. Es multiplataforma, funciona tanto para Unix (con Apache) como para Windows (con Microsoft Internet Information Server) de forma que el código que se haya creado para una de ellas no tiene porqué modificarse al pasar a la otra.

Por otra parte, y es aquí donde reside su mayor interés con respecto a los lenguajes pensados para los CGI, PHP ofrece un sinfín de funciones para la explotación de bases de datos de una manera llana, sin complicaciones.

Funcionalidades:

Funciones de correo electrónico: Podemos con una facilidad enviar un e-mail a una persona o lista parametrizando toda una serie de aspectos tales como el e-mail de procedencia, asunto, persona a responder, etc.

Gestión de bases de datos: El lenguaje PHP ofrece interfaces para el acceso a la mayoría de las bases de datos comerciales y por ODBC a todas las bases de datos posibles en sistemas Microsoft.

Gestión de archivos: Crear, borrar, mover, modificar... cualquier tipo de operación más o menos razonable que puede ser realizada a partir de una amplia librería de funciones para la gestión de archivos por PHP. También podemos transferir archivos por FTP a partir de sentencias en nuestro código, protocolo para el cual PHP ha previsto también gran cantidad de funciones.

(16)

10

Muchas otras funciones pensadas para Internet (tratamiento de cookies, accesos restringidos, comercio electrónico) o para propósito general (funciones matemáticas, explotación de cadenas, de fechas, corrección ortográfica, compresión de archivos) son realizadas por este lenguaje.

Otras Características.

Soporta un único "Safe Mode", es decir, un mecanismo de seguridad que permite que varios usuarios estén corriendo scripts PHP sobre el mismo servidor. Este mecanismo está basado en un esquema de permisos de ficheros, permitiendo el acceso a aquellos ficheros que son apropiados por el mismo identificador de usuario que el del script que está intentando acceder a ese fichero, o bien cuando el fichero está en el directorio que es propiedad del mismo identificador de usuario que el del script que está intentando acceder.

La mayor fuerza de PHP es que está preparado para soportar accesos a muchos tipos de bases de datos como:

Adabas D, dBase, Empress, FiclePro, informix, Internase, Solid, Sybase, Veloces, Unix dbm, mSQL, MySQL, Oracle, PosgreSQL.

Acceso a Bases de Datos: Esta interacción se realiza, por un lado, a partir de las funciones que PHP nos propone para cada tipo de base de datos y, por otro estableciendo un diálogo a partir de un idioma universal: SQL (Structured Query Language) el cual es común a todas las bases de datos.

2.9 Características JSP

Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámicamente. Muchas páginas Web que están construidas con programas CGI son casi estáticas, con la parte dinámica limitada a muy pocas localizaciones. Pero muchas variaciones CGI, incluyendo los servlets, hacen que generemos la página completa mediante nuestro programa, incluso aunque la mayoría de ella sea siempre lo mismo. JSP nos permite crear dos partes de forma separada.

Contra Active Server Pages (ASP): ASP es una tecnología similar de Microsoft. Las ventajas de JSP están duplicadas. Primero, la parte dinámica está escrita en Java, no en Visual Basic, otro

(17)

11

lenguaje específico de MS, por eso es mucho más poderoso y fácil de usar. Segundo, es portable a otros sistemas operativos y servidores Web.

Contra JavaScript: JavaScript puede generar HTML dinámicamente en el cliente. Esta es una capacidad útil, pero sólo maneja situaciones donde la información dinámica está basada en el entorno del cliente. Con la excepción de las cookies, el HTTP y el envió de formularios no están disponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript no puede acceder a los recursos en el lado del servidor, como bases de datos, catálogos, información de precios, etc.

Las Java Server Pages (JSP) están basadas en la tecnología de servlets. Cuando se combina con el uso de componentes JavaBeans, JSP proporciona una capacidad que es al menos tan poderosa como los Servlets, posiblemente más que un servlet en crudo, y potencialmente mucho más fácil de usar.

Una pagina JSP se comporta internamente como un servlet (un servlet es la versión CGI de Java, se detallará mas adelante) ya que la parte estática es automáticamente desplegada mediante el método print del mismo.

Como en el caso de los Servlets y JDBC, para probar nuestros ficheros JSP, necesitaremos algo más que un compilador Java y una máquina virtual.

Además de estas dos cosas, necesitamos un servidor web compatible con JSP.

2.10 Características Servlets

Los Servlets son la respuesta de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Los Servlets Java son más eficientes, fáciles de usar, más poderosos, más portables, y más baratos que el CGI tradicional y otras muchas tecnologías del tipo CGI.

Eficiencia. Con CGI tradicional, se arranca un nuevo proceso para cada solicitud HTTP. Si el programa CGI hace una operación relativamente rápida, la sobrecarga del proceso de arrancada puede dominar el tiempo de ejecución. Con los Servlets, la máquina Virtual Java permanece arrancada, y cada petición es manejada por un thread Java de peso ligero, no un pesado proceso del sistema operativo. De forma similar, en CGI tradicional, si hay N peticiones simultáneas para el mismo programa CGI, el código de este problema se cargará N veces en memoria. Sin embargo,

(18)

12

con los Servlets, hay N threads pero sólo una copia de la clase Servlet. Los Servlet también tienen más alternativas que los programas normales CGI para optimizaciones como los cachés de cálculos prévios, mantener abiertas las conexiones de bases de datos, etc.

Conveniencia. Los Servlets tienen una gran infraestructura para análisis automático y decodificación de datos de formularios HTML, leer y seleccionar cabeceras HTTP, manejar cookies, seguimiento de sesiones, y muchas otras utilidades.

Potencia. Los Servlets Java nos permiten fácilmente hacer muchas cosas que son difíciles o imposibles con CGI normal. Por algo, los servlets pueden hablar directamente con el servidor Web.

Esto simplifica las operaciones que se necesitan para buscar imágenes y otros datos almacenados en situaciones estándares. Los Servlets también pueden compartir los datos entre ellos, haciendo las cosas útiles como almacenes de conexiones a bases de datos fáciles de implementar.

Portable. Los Servlets están escritos en Java y siguen un API bien estandarizado.

Consecuentemente, los servlets escritos, digamos en el servidor I-Planet Enterprise, se pueden ejecutar sin modificarse en Apache, Microsoft IIS, o WebStar. Los Servlets están soportados directamente o mediante plug-in en la mayoría de los servidores Web.

2.11 Servidor de Base de Datos

El servidor de Base de Datos se encarga de administrar las operaciones que se ejecuten sobre la misma, controlando el acceso de diferentes usuarios en un mismo instante de tiempo, además de permitir algunas otras características que brindan soporte de seguridad en el manejo de la base de datos, controlando las conexiones y los usuarios que realizan las mismas.

Para este fin se utilizó el servidor de base de datos MySQL versión 3.23.41. MySQL es un robusto servidor de base de datos SQL (Structured Query Language), muy rápido, multi-hilo y multi-usuario.

MySQL es software libre bajo licencia de GNU (General Public License).

Características de MySQL.

La siguiente lista muestra las características más importantes de MySQL:

Completo uso de hilos del Kernel, Esto significa que puede utilizar fácilmente múltiples CPU sí existen.

(19)

13

API’s para C, C++, Eiffel, Java, Perl, PHP, Pithon y Tcl.

Funciona en diferentes Plataformas.

Manejo de muchos tipos de datos: signed/unsigned integers 1, 2, 3,4 y 8 bytes de longitud float, double, char, varchar, text, blob, date, time, datetime, timestamp, year, set y tipos enum.

Uso de consultas Join muy rápido usando un optimizado one-sweep multi-join.

Funciones SQL están implementadas a través de una librería de clases altamente optimizada y deben ser tan rápidas como sea posible.

Total soporte de las clausulas Group by y Order by. Soporte para funciones de Grupo (count(), distinct(), avg(), std(), sum(), max() y min()).

Puedes mezclar tablas de diferentes bases de datos en la misma consulta.

Un sistema de privilegios y contraseñas que es muy flexible y seguro, y permite verificación basada en el Host. Contraseñas seguras porque todo el tráfico de las mismas es encriptado cuando se conecta al servidor.

Soporte ODBC (Open Data Base Connectivity) para Win32. Todas las funciones de ODBC 2.5 y muchas otras. Por ejemplo se puede usar MS. Acces para conectarse a tu servidor MySQL.

Tablas en disco muy rápidas con Árboles B y compresión de índice.

Más de 32 índices por tabla son permitidos. Cada índice debe consistir de 1 a 16 columnas o partes de columnas. La máxima longitud de un índice es de 500 bytes, y un índice debe usar un prefijo de campo char o varchar.

Tablas hash en memoria que son usadas como tablas temporales.

Soporta grandes bases de datos. Se ha usado MySQL con bases de datos que contienen 50,000,000 de registros, aproximadamente 60,000 tablas y cerca de 5,000,000,000 de columnas.

Todas las columnas tienen valores por omisión, en caso de que no se especifique un valor para un campo en un consulta insert o update los valores por omisión son asignados al campo.

Escrito en C y C++, probado con un amplio rango de diferentes compiladores.

Un muy rápido sistema de alojamiento en memoria basado en hilos.

Sin lagos en memoria, MySQL ha sido probado con Purify, un detector de lagos de memoria comercial.

Soporte completo a diferentes juegos de caracteres, incluyendo ISO-8859-1 (Latin1), Big5, Ujis, y más.

Todos los datos son almacenados en el juego de caracteres escogido.

El ordenamiento es realizado en base al conjunto de caracteres que se eligió.

Alias en tablas en columnas están permitidos como en el estándar SQL92.

(20)

14

El servidor puede proveer mensajes de error a los clientes en muchos lenguajes.

Los clientes deben conectarse a MySQL a traves de Sockets TCP/IP, Unix Sockets, o Names Pips (WinNT).

Tamaño de las Tablas en MySQL.

MySQL 3.22 tiene un límite de 4 GB en el tamaño de la tabla, con el nuevo MyISAM en MySQL versión 3.23 el tamaño máximo de la tabla ha sido empujado por encima de 8 millones de Terabytes (263 bytes). Nota sin embargo que cada sistema operativo tiene su propio límite de tamaño de archivo como se muestra en la figura 2.11.1:

Sistema Operativo Límite en el tamaño de archivo

Linux-Intel 32 bit 2G, 4G o más, depende de la version de Linux

Linux-Alpha 8T (¿)

Solaris 2.5.1 2G (posiblemente 4G con parche)

Solaris 2.6 4G

Solaris 2.7 Intel 4G

Solaris 2.7 ULTRA-SPARC 8T (¿)

Fig. 2.11.1

Uso de MySQL: MySQL es un programa que utiliza el lenguaje SQL para la creación y edición de las bases de datos. El programa consta de un programa cliente, denominado monitor, que permite al usuario conectarse al servidor MySQL, para realizar consultas y crear y modificar sus bases de datos. Este programa cliente es “mysql.exe” ejecutando este programa nos conectamos al servidor y por medio del lenguaje SQL es como logramos manipular la base de datos.

Una vez que estamos en el monitor solo es necesario teclear quit para salir del mismo. MySQL tambien permite el manejo de archivos batch, los cuales contienen instrucciones SQL que el programa ejecutará, únicamente mediante la acción: mysql < archivo_batch.txt

El resto del manejo de MySQL depende únicamente de las instrucciones SQL que se encargan de ejecutar las operaciones que deseemos realizar, cabe destacar que estas deben terminar con “;”

(punto y coma) para indicar el fin de la misma.

(21)

15

2.12 Controladores de Bases de Datos

Se investigaron los tipos de controladores JDBC entre los que destacan los siguientes:

Puente JDBC-ODBC más controlador ODBC. Es la opción más tosca. El applet accede a la base de datos por medio de una combinación de un puente JDBC-ODBC. Se tiene que instalar los controladores en la PC del usuario, lo cual es trabajoso para usuarios de Internet e Intranet.

Java parcial de API nativa. Es controlador también es poco eficiente, es un controlador API híbrido de Java nativo que también debe ser instalado en la máquina del cliente. Su instalación es más sencilla.

Java puro JDBC-Net. Es una solución ideal para intranets e Internet. Los Applets utilizan controladores Java puro que son servidos desde los servidores WEB junto con los applets.

Se instalan los controladores automáticamente en la PC del usuario en forma transparente.

Los controladores de Java puro se conectan con el servidor de acceso a base de datos a través de un protocolo como puede ser http o http seguro, que puede ser representado por un cortafuego. El servidor de acceso a base de datos traduce las solicitudes de la base de datos a un protocolo de la marca específica de que se trate. El controlador JDBC IDS y el servidor IDS entran en está categoría.

Controlador de Java puro con protocolo nativo. Es un a solución útil, utiliza un controlador de Java puro. Sin embargo en vez de comunicarse con un servidor de base de datos por medio de un protocolo de representación, el controlador JDBC utiliza un protocolo de base de datos específica de la marca. Es eficiente en aplicaciones de Intranet, pero la desventaja de que puede ser que el protocolo de la marca no lo admite un cortafuegos (firewall). La falta de soporte de firewall puede excluir aplicaciones potenciales de Internet por razones de seguridad.

JDBC y MySQL: Para realizar la conexión entre Java y la base de datos de MySQL, es necesario descargar e instalar el API para tal efecto. El driver que se está utilizando es el MM.MySQL versión 1.2c que es un driver JDBC de tipo 4 bajo la licencia de GNU. El cual permite conexiones de un servidor MySQL a una aplicación Java y Applets. Para poder cargar dicho driver en el programa se realiza por medio de la clase DriverManager.

La clase DriverManager se usa para manejar el controlador JDBC que esta instalado en el sistema.

Este es instalado por medio del método forName() de la clase Class, el cual implementa la

interfase java.sql.Driver. Con MM.MYSQL el nombre de esta clase es org.gjt.mm.mysql.Driver. Por

(22)

16

lo que la invocación a este método debe ser:

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

Una vez que el driver ha sido cargado es necesario realizar la conexión con la base de datos, para lo cual es necesario especificar la URL de la misma. La URL que se emplea para establecer las conexiones con la base de datos varían en función del controlador JDBC que se use, pero son de la forma siguiente:Jdbc:subprotocol:subname.

Todos los protocolos JDBC empiezan empiezan por jdbc:. El subprotocolo se usa para identificar el mecanismo de conexión o el controlador JDBC. El subnombre identifica la base de datos y proporciona otros parámetros que dependen del subprotocolo y controladores JDBC.

La sintaxis de la URL que usa este controlador es la siguiente:

jdbc:mysql://[hostname][:port]/dbname[?param1=value1][=value2]...

En la tabla 2.12.1 se muestran los parámetros se pueden especificar después del “?” en el URL:

Nombre Uso Valor por

Omisión

User Nombre de usuario none

Password El password a usar en la conexión none

autoReconnect Intentar conectarse otra vez después de que se cae la conexión? (true/false)

false

maxReconnects Si autoReconnect es habilitado, cuanto tiempo debe esperar para reconectarse?

3

initialTimeout Si autoReconnect es habilitado, el tiempo inicial que debe esperar entre reconexiones (segundos)

2

maxRows Máximo de registros a enviar (0 regresa todos los registros) 0 useUnicode Debe el driver usar codificación de carácter Unicode cuando se

usen cadenas? (true/false)

false

characterEncoding Si useUnicode esta en true, que codificación de carácter debe el driver usar cuando trata con cadenas?

none

Tabla. 2.12.1

(23)

17

Una vez que ha sido especificado el URL es pasado al DriverManager.getConnection() para obtener un objeto Connection, se realiza la siguiente acción:

conexion=DriverManager.getConnection(

“jdbc:mysql://localhost/test?user=monty=greatsqldb” );

Después de que se establece la conexión se pueden crear objetos Statements y PrepareStatements, también como obtener los objetos metadata de la base de datos.

Usando Statements: Estos te permiten ejecutar peticiones SQL para obtener los resultados por medio de la clase ResultSet. Se obtiene por medio del método createStatemenT() de la clase Connection. Una vez obtenido el objeto Statement se puede ejecutar el SELECT por medio del método executeQuery(String SQL) y para actualizar la base de datos se usa el método executeUpdate(String SQL).

Por medio del método execute(String SQL) se puede realizar tanto un SELECT como un INSERT/UPDATE, si se realizo un select devuelve –1 y los resultados se obtienen por medio del objeto ResultSet y devuelve el número de registros afectados por el INSERT/UPDATE usado.

ResultSet: Representa el conjunto de registros obtenidos en una consulta, puedes obtener todos los valores de las columnas de un registro o moverte al siguiente registró. Siempre se posiciona antes del primer registro (si es que existe alguno), se usa ResultSet.next() para moverte al siguiente registró, regresa true si se movio al siguiente registró, si ya no hay algún registró regresa false.

ResulSetmetaData: Se utiliza para obtener información acerca de los objetos ResultSet. El método getColumnCount() devuelve el número de columnas que tienen los datos tabulares a los que ha accedido el RecordSet, getColumnName() devuelve el nombre de la columna de la base de datos de donde se recuperaron los datos.

Aquí tenemos un ejemplo de todo esto:

public static void main(String args[]) {

try {

// se implementa el driver JDBC

(24)

18

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// se realiza la conexión a la base de datos

Connection conexion= DriverManager.getConnection("jdbc:odbc:biblio");

// creamos un objeto Statement para hacer una consulta SQL Statement consulta=conexion.createStatement();

// realizamos dicha consulta

boolean resultado=consulta.execute("SELECT * FROM Titles");

if(resultado) {

// se obtienen los reaultados por medio del ResultSet ResultSet result=consulta.getResultSet();

// se llama para imprimirlos en forma tabular desplegar(result);

// cerrar la conexión conexion.close();

} else

System.out.print("No hay resultados");

}

catch(Exception e) {

System.out.print(e);

System.out.print("No hay conexión");

System.exit(0);

} }

public static void desplegar(ResultSet r) throws SQLException {

String text="";

// se obtiene información del ResultSet por medio del //RsultSetMetaData ResultSetMetaData data=r.getMetaData();

// se obtiene el número de columnas int columnas= data.getColumnCount();

(25)

19

for(int i=0;i<columnas;i++) {

// se obtiene el nombre de cada columna text+=data.getColumnName(i)+"|";

}

text+="\n";

//se realiza el ciclo hasta que ya no existan más //registros en el ResultSet while(r.next())

{

for(int i=0;i<columnas;i++) {

// se obtiene el valor de cada columna del registro text+=r.getString(i)+"|";

} }

System.out.print(text);

}

2.13 Servidor WAP

Es un servidor web que acepta MIME wml, wmls, etc. (text/vnd.wap.wml, etc.) y que en muchos casos es el mismo que da el servicio www.

Normalmente, como estándares de facto, las páginas WAP se sitúan en un directorio virtual quedando la URL de acceso al servicio WAP de la siguiente forma: http://www.miservidor.com/wap o bien como subdominio del servidor mostrándose la URL de acceso de este modo:

http://wap.miservidor.com Para que el servidor de HTTP sepa que debe servir las páginas *.wml como páginas WAP debemos indicárselo, de lo contrario el servidor responderá como que el tipo de fichero es de texto.

Para decirle al servidor que las páginas de extensión wml son páginas WAP existen los tipos MIME, con estos tipos indicamos al servidor como se debe comunicar con el cliente cuando le solicitan una página wml.

(26)

20

Como se muestra en la tabla 2.13.1 La configuración de tipos MIMES para el servidor, es la siguiente:

Contenido Tipo MIME Extensión

WML Source Text/vnd.wap.wml wml

Compiled WML Application/vnd.wap.wmlc wmlc

WMLScript source Text/vnd.wap.wmlscript wmls Compiled WMLScript Application/vnd.wap.wmlscriptc wmlsc

Wireless Bitmap image/vnd.wap.wbmp wbmp

Tabla 2.13.1

2.14 Secure Socket Layer (SSL)

El protocolo SSL fue desarrollado por Netscape para permitir confidencialidad y autenticación en Internet. SSL opera como una capa adicional entre Internet y las aplicaciones, esto permite que el protocolo sea independiente de la aplicación, siendo posible utilizar FTP, Telnet y otras aplicaciones además de HTTP.

Para establecer una comunicación segura utilizando SSL se tienen que seguir una serie de pasos.

Primero se debe hacer una solicitud de seguridad. Después de haberla hecho, se deben establecer los parámetros que se utilizarán para SSL. Esta parte se conoce como SSL Handshake. Una vez se haya establecido una comunicación segura, se deben hacer verificaciones periódicas para garantizar que la comunicación sigue siendo segura a medida que se transmiten datos. Tras finalizar la transacción se termina SSL.

Solicitud de SSL: Antes de que se establezca SSL, se debe hacer una solicitud. Típicamente esto implica un cliente haciendo una solicitud de un URL a un servidor que soporte SSL. SSL acepta solicitudes por un puerto diferente al utilizado normalmente para ese servicio. Una vez se ha hecho la solicitud, el cliente y el servidor empiezan a negociar la conexión SSL, es decir, hacen el SSL Handshake.

SSL Handshake: Durante el handshake se cumplen varios propósitos. Se hace autenticación del servidor y opcionalmente del cliente, se determina que algoritmos de criptografía serán utilizados y se genera una llave secreta para ser utilizada durante el intercambio de mensajes subsiguientes durante la comunicación SSL. Los pasos que se siguen son los siguientes:

(27)

21

Client Hello: El "saludo de cliente" tiene por objetivo informar al servidor que algoritmos de criptografía puede utilizar y solicita una verificación de la identidad del servidor. El cliente envía el conjunto de algoritmos de criptografía y compresión que soporta y un número aleatorio. El propósito del número aleatorio es para que en caso de que el servidor no posea un certificado para comprobar su identidad, aún se pueda establecer una comunicación segura utilizando un conjunto distinto de algoritmos. Dentro de los protocolos de criptografía hay un protocolo de intercambio de llave que define como cliente y servidor van a intercambiar la información, los algoritmos de llave secreta que definen que métodos pueden utilizar y un algoritmo de hash de una sola vía. Hasta ahora no se ha intercambiado información secreta, solo una lista de opciones.

Server Hello: El servidor responde enviando su identificador digital el cual incluye su llave pública, el conjunto de algoritmos criptográficos y de compresión y otro número aleatorio.

La decisión de que algoritmos serán utilizados está basada en el más fuerte que tanto cliente como servidor soporten. En algunas situaciones el servidor también puede solicitar al cliente que se identifique solicitando un identificador digital.

Aprobación del Cliente: El cliente verifica la validez del identificador digital o certificado enviado por el servidor. Esto se lleva a cabo desencriptando el certificado utilizando la llave pública del emisor y determinando si este proviene de una entidad certificadora de confianza. Después se hace una serie de verificaciones sobre el certificado, tales como fecha, URL del servidor, etc. Una vez se ha verificado la autenticidad de la identidad del servidor. El cliente genera una llave aleatoria y la encripta utilizando la llave pública del servidor y el algoritmo criptográfico y de compresión seleccionado anteriormente. Esta llave se le envía al servidor y en caso de que el handshake tenga éxito será utilizada en el envío de futuros mensajes durante la sesión.

Verificación: En este punto ambas partes conocen la llave secreta, el cliente por que la generó y el servidor por que le fué enviada utilizando su llave pública, siendo la única forma posible de desencriptarla utilizando la llave privada del servidor. Se hace una última verificación para comprobar si la información transmitida hasta el momento no ha sido alterada. Ambas partes se envían una copia de las anteriores transacciones encriptada con la llave secreta. Si ambas partes confirman la validez de las transacciones, el handshake se completa, de otra forma se reinicia el proceso.

(28)

22

En la figura 2.14.1 se ilustra el proceso de handshake:

Fig. 2.14.1

Intercambio de datos: Ahora que se ha establecido un canal de transmisión seguro SSL, es posible el intercambio de datos. Cuando el servidor o el cliente desea enviar un mensaje al otro, se genera un digest (utilizando un algoritmo de hash de una vía acordado durante el handshake), encriptan el mensaje y el digest y se envía, cada mensaje es verificado utilizando el digest.

Terminación de una sesión SSL: Cuando el cliente deja una sesión SSL, generalmente la aplicación presenta un mensaje advirtiendo que la comunicación no es segura y confirma que el cliente efectivamente desea abandonar la sesión SSL.

Implementación del protocolo SSL: Como ya se ha comentado anteriormente, el sistema más utilizado en la actualidad para garantizar pagos seguros por Internet es el SSL (Secure Socket Layer), un protocolo de seguridad que se ha convertido en un estándar de Internet y que viene incluido por defecto en los navegadores Microsoft Explorer y Netscape Navigator. Lo que permite una implementación muy sencilla del sistema de pago ya que el cliente puede comenzar a comprar sin tener que realizar ningún proceso de autentificación previa.

Para crear un sistema de pago electrónico basado en SSL es necesario conseguir un certificado electrónico, generalmente se obtiene de la empresa Verisign (filial de RSA Data Security Inc. y

Petición de Certificado Algoritmos disponibles

Selección de algoritmos Envío del Certificado Comprobación del Certificado

Creación de Clave de sesión Envío de Clave encriptada

Envío de mensaje de verificación

HANDSHAKE

Intercambio de Datos (canal de comunicaciones seguro)

Envío de mensaje de verificación

Cliente Servidor

(29)

23

principal Autoridad Certificadora mundial). Verisign está considerada por Microsoft y Netscape como CA de confianza por lo que por defecto viene activada en sus respectivos navegadores.

2.15 Java Beans.

Un JavaBean es una clase que puede implementar la interfaz serializable y que tiene un constructor público sin argumentos. Los componentes JavaBeans representan una parte de la tecnología java que no es simple. Un JavaBean puede contener cualquier numero de propiedades a las cuales hay que proporcionar un método get() y set(), para recuperar su valor o asignarle un valor, respectivamente.

Especificación JavaBean: Se trata en realidad de convenciones, más que especificaciones, que indican la forma de escribir código para que el analizador de clases pueda interpretar los métodos de la clase como propiedades. La convención indica las reglas a seguir para definir constructores del JavaBean y los métodos que se van a considerar como propiedades.

Según esta especificación, los JavaBeans son componentes Java reutilizables que están diseñados para su integración en entornos de desarrollo que puedan aprovechar sus características. Es decir, los JavaBeans no están pensados para su uso a nivel de código, o a nivel de desarrollo de programas, sino a nivel de compilación, como cualquier otro fichero compilado.

Esta circunstancia hace necesario que el entorno de desarrollo conozca las características del JavaBean compilado para poder utilizarlo. Esta información se proporciona a través de las propiedades, métodos y eventos del JavaBean.

Las características citadas de los JavaBeans son las que los hacen útiles en el desarrollo de páginas JSP, porque en sus propiedades pueden encapsular gran parte de la funcionalidad de la página; aunque estos JavaBeans no estén destinados a integrarse en ningún entorno de desarrollo.

Constructor: Se había mencionado antes que un JavaBean debe tener un constructor sin argumentos. Este constructor es necesario por que es el que posibilita que el JavaBean sea instanciado a través de la acción jsp:useBean dentro de una página JSP.

(30)

24

Propiedades: Al igual que cualquier otra clase Java, las instancias de un JavaBean son objetos Java, es decir, será posible acceder a los métodos del JavaBean directamente como si de cualquier otra clase se tratase. Sin embargo, si la clase sigue las convenciones JavaBean se podrá acceder a esos métodos de forma más sencilla y, además se proporciona la posibilidad de que sus métodos sean accedidos como propiedades por los desarrolladores JSP.

Cuando se requiere que una clase sea tratada como un JavaBean y se ha escrito según las convenciones, se suele añadir la palabra Bean al final de su nombre, para indicar claramente su naturaleza. Aunque esto no constituye un requerimiento.

La forma en que el motor JSP interactúa con un JavaBean sin el uso de una interfaz o una clase base, es mediante un proceso de introspección por el cual una clase permite que se conozcan desde el exterior sus métodos y capacidades. La introspección se produce a través de un mecanismo de reflexión que permite al contenedor de Beans examinar cualquier clase en tiempo de ejecución para conocer la firma de sus métodos. Para que una propiedad exista, debe definir un método de acceso para devolver el valor de la propiedad, modificar su valor o ambos. Una propiedad es pues cualquier valor o conjunto de valores, almacenado que define el estado del JavaBean.

Para definir una propiedad basta con crear un método público con el nombre de la propiedad y colocarle el prefijo get o set según corresponda. Los métodos set() deben ser declarados void y aceptar un argumento del tipo de dato almacenado en la propiedad. Los métodos get() deben devolver el mismo tipo de dato. Ej.

public void setValor(int _valor);

public int getValor();

Una excepción al uso de los métodos get() para recuperar el valor de una propiedad es el caso de que esa propiedad sea booleana. En este caso se permite el uso del prefijo is y devolver un valor booleano.

La diferencia entre una propiedad y una variable normal estriba en que Java proporciona características especiales a las propiedades, de forma que pueden ser de tipo bound y restringidas. Las propiedades pueden ser por tanto: planas, bound y restringidas. Una propiedad plana es aquella que no dispone de atributos ni callbacks especiales. Una propiedad bound es la que tiene la habilidad de registrar uno o más receptores de eventos para informar de cuando

(31)

25

cambia el valor de esa propiedad. Una propiedad restringida es aquella que puede registrar uno o más receptores de eventos para notificar los cambios en el valor de la propiedad, pero cualquiera de esos receptores puede impedir que se produzca el cambio efectivo en el valor de la propiedad.

(32)

26

Capítulo 3. Diseño del Sistema

3.1 Arquitectura del Sistema

La arquitectura que cumple este sistema esta basada en el uso de componentes compilados Java Beans, ya que estos permiten encapsular el código y aislarlo del diseño, evitando que la página JSP se encuentre saturada de código, ya sea HTML, JSP o JavaScript, además los JavaBeans podrán ser invocados desde paginas de ambos sitios, ya sea HTML o WML sin necesidad de repetir código y agregando modularidad al sistema, esto también permite que todo el código del sistema sea mas legible y facilita la realización de mantenimiento y correcciones.

Por lo que la arquitectura de las páginas se puede ejemplificar de la siguiente figura 3.1.1:

Paginas WML Formularios y entrada de Datos

Paginas JSP de resultados de peticiones

y presentacion

JavaBeans y clases Paginas HTML

Formularios y entrada de datos

Fig. 3.1.1

El acceso al sistema se compondrá principalmente de 4 capas como se muestra en la figura 3.1.2.

WML

Java BD Beans JSP

HTML

Fig. 3.1.2

(33)

27

Las paginas HTML y WML invocan a las paginas JSP, pasando la información pertinente, los JSP’s reciben la información y la canalizan a los JavaBeans correspondientes, los cuales se encargan de realizar las tareas necesarias tal como el acceso a la base de datos, la información obtenida activa las propiedades del JavaBean que la invoco, y después fluye de regreso a los JSP, los cuales la presentan al usuario y continúan la ejecución.

De esta forma cada parte cumple una tarea específica y particular, facilitando el desarrollo del sistema.

3.2 Correo Electrónico

Para poder enviar cualquier tipo de información al cliente, desde simples ofertas hasta notificaciones acerca de las ventas que éste ha solicitado, es necesario que él nos proporcione una dirección de correo electrónico a la cual poder enviar dichos mensajes, y esta bajo su responsabilidad revisar periódicamente su correo para estar enterado, sobre todo, del estado de alguna compra que haya realizado, principalmente el uso del correo se hará para notificarle en caso de que su compra no pueda ser llevada acabo, informándole el problema y las causas que reportó la empresa encargada de dicho surtido.

Para poder enviar cualquier tipo de correo electrónico a cualquier destinatario, es necesario especificar un servidor de correo electrónico, el cual realizará la transferencia del mensaje a través del protocolo apropiado al servidor correspondiente.

Existen diversos tipos de protocolos para la comunicación en correo electrónico, por lo cual haremos una revisión de algunos de los más importantes.

SMTP: Simple Mail Transfer Protocol: Esta definido por la RFC 821. Define el mecanismo para enviar e-mail. Nuestra aplicación se comunica con nuestro servidor SMTP, el cual coloca el mensaje en el SMTP del recipiente(s), para que sea recogido por los usuarios a través de POP o IMAP.

POP: Post Office Protocol: Actualmente en la versión 3, mejor conocido como POP3, la RFC 1939 define este protocolo. POP es el mecanismo que la mayoría de la gente utiliza en Internet para conseguir su correo. Define el soporte de un solo mail box por cada usuario. Esto es todo lo que lo hace, y ésta también es la fuente de la mayoría de la confusión. Muchas de las cosas con las que

(34)

28

la gente se familiariza cuando usa POP, como la capacidad de ver cuantos mensajes de correo nuevos tienen, no lo soporta POP en absoluto. Estas capacidades se construyen en programas como Eudora o Microsoft Outlook, que recuerdan cosas como los últimos correos recibidos y calculan cuantos tenemos nuevos.

IMAP: Internet Message Access Protocol: Es un protocolo más avanzado para recibir mensajes, y esta actualmente en la versión 4. Para usar el IMAP, nuestro servidor de correo debe soportar este protocolo. No podemos simplemente cambiar nuestro programa para utilizar IMAP en vez de POP y que se soporte todo IMAP, este protocolo permite que los usuarios tengan carpetas múltiples en el servidor y estas carpetas se pueden compartir por varios usuarios. Debido a las capacidades más avanzadas sobrecarga mucho el servidor de correo, requiriendo que el servidor reciba los nuevos mensajes, los entregue a los usuarios cuando sean solicitados, y los mantiene en las distintas carpetas de cada usuario. Aunque esto no centraliza las copias de seguridad, también hace que las carpetas de correo a largo plazo se hagan cada vez más grandes. Con POP los mensajes recuperados son eliminados del servidor de correo.

MIME: Multipurpose Internet Mail Extensions: No es un protocolo de transferencia de e-mail. En su lugar, define el contenido de lo que se esta transfiriendo: el formato de los mensajes, los attachments, etc. Hay muchos documentos que tienen efecto sobre esto: Las RFC 822, RFC 2045, RFC 2046 RFC 2047.

Servidores de Correo: Para cumplir con este fin es necesario entonces tener instalado y configurado un servidor de correo electrónico, en el caso de Linux y versiones de Windows con el fin de mantener un servidor (tales como Windows NT o Windows 2000 Server), estos cuentan con un servidor de correo integrado que solo es necesario configurar, en el caso de contar con algún otro sistema operativo, es necesario instalar y configurar un servidor de correo que se haya obtenido por otro medio.

En este caso el sistema esta siendo desarrollado bajo Windows Me Edittion y Windows XP Professional Edittion, para lo cual se utiliza el servidor de correo Workgroup Mail 7.0.2 que cuenta con una licencia de solo 30 días y el IMail Server 6 que es gratuito.

API JavaMail: Para el desarrollo de la aplicación encargada de la transferencia y creación de los mensajes de correo, se utiliza el lenguaje Java, el cual ha sido utilizado en el desarrollo de todo el proyecto.

(35)

29

El API JavaMail es un paquete opcional (extensión estándar) para leer, componer y enviar mensajes electrónicos.

Este paquete es usado para crear programas del tipo MUA (Mail User Agent), similares a Eudora, Pine y Microsoft Outlook. Su propósito no es transportar, enviar o re-enviar mensajes como sendmail u otros programas del tipo MTA (Mail Transfer Agent). En otras palabras, los usuarios interactúan con los programas para leer y escribir mails. Los programas MUA tratan con los programas MTA para el envío real.

El API JavaMail esta diseñado para proporcionar acceso independiente del protocolo para enviar y recibir mensajes dividiéndose en dos partes:

La primera parte del API trata básicamente de cómo enviar y recibir mensajes independientemente del proveedor/protocolo.

La segunda parte habla de lenguajes específicos del protocolo como SMTP, POP, IMAP y NNTP. Con el API JavaMail para poder comunicarnos con un servidor, necesitamos un proveedor para un protocolo.

Para comenzar el envío del correo a través del API JavaMail, es necesario crear una sesión de correo electrónico esta se logra mediante un objeto de tipo Session. La clase Session define una sesión de correo básica. Es a través de esta de sesión de la que todas las demás funcionan. El objeto Session se aprovecha de un objeto java.util.Properties para obtener información como el servidor de correo, el nombre de usuario, la contraseña, y otra información que puede compartirse a lo largo de toda la aplicación. Lo cual logramos de la siguiente manera:

Properties props = new Properties();

// fill props with any information

Session session = Session.getDefaultInstance(props, null);

Una vez que tenemos nuestro objeto Session , es hora de empezar a crear un mensaje para enviar. Esto se hace con un objeto Message.

Siendo una clase abstracta, debemos trabajar con una subcalse, en la mayoría de los casos será javax.mail.internet.MimeMessage. Un MimeMessage es un mensaje de e-mail que entiende los tipos MIME, definidos en las distintas RFCs. Las cabeceras de mensajes están restringidas a

(36)

30

caracteres US-ASCII, aunque en ciertos campos de cabecera se pueden codificar caracteres no ASCII. Para crear un Message, le pasamos el objeto Session al constructor de MimeMessage:

MimeMessage message = new MimeMessage(session);

Una vez que tenemos nuestro mensaje, podemos configurar sus diferentes partes. El mecanismo básico para configurar el contenidos es el método setContent(), con los argumentos para el contenido y tipo mime:

message.setContent("Hello", "text/plain");

Sin embargo, si sabemos que estamos trabajando con un MimeMessage y nuestro mensaje es texto plano, podemos usar su método setText() que sólo requiere el contenido real, dejando por defecto el tipo MIME a text/plain:

message.setText("Hello");

Para seleccionar el Asunto, usamos el método setSubject():

message.setSubject("First");

Una vez que hemos creado la Session y el Message, y también hemos rellenado el mensaje con contenido, es hora de poner dirección a nuestra carta con un objeto Address. Como Message, Address es una clase abstracta. Usaremos la clase:

javax.mail.internet.InternetAddress

Para crear una dirección con sólo la dirección e-mail, se la pasamos al constructor:

Address address = new InternetAddress("[email protected]");

Si queremos que aparezca el nombre junto a la dirección e-mail, también podemos pasárselo al constructor:

Address address = new InternetAddress( "[email protected]", "George Bush");

Necesitaremos crear objetos address para los campos from y to del mensaje.

Una vez que hemos creado las direcciones, las conectamos al mensaje de una de estas dos formas. Para identificar al que lo envía, usamos los métodos setFrom() y setReplyTo().

message.setFrom(address).

Referencias

Documento similar

Porcentaje de radiación solar interceptada (RSI; 0,35 - 2,5 µm) y de radiación fotosintéticamente activa interceptada (RFAI) a lo largo del ciclo de cultivo para las

“La unificación de la clasificación de empresas otorgada por las CC.AA.”, “La unificación de criterios en la acreditación de los servicios de prevención de riesgos

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

• El monumento debió ser visible desde la ciudad dada la ubicación general en El Espinillo, un Mo- numento Conmemorativo y planteado en paralelo a otro en la barranca, debió