tienda virtual de revistas

62
1 TIENDA VIRTUAL DE REVISTAS. Tesis de Proyecto Terminal ll. Alumno: José Gastón Córdova Almanza. Asesor: Adolfo Escalona Buendía.

Upload: others

Post on 21-Nov-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TIENDA VIRTUAL DE REVISTAS

1

TIENDA VIRTUAL DE REVISTAS.

Tesis de Proyecto Terminal ll.

Alumno: José Gastón Córdova Almanza.

Asesor: Adolfo Escalona Buendía.

Page 2: TIENDA VIRTUAL DE REVISTAS

2

Contenido

AGRADECIMIENTO............................................................................................... 6

INTRODUCCIÓN .................................................................................................... 6

DESCRIPCIÓN DEL ÁREA PROBLEMÁTICA DEL PROYECTO.................... 6

OBJETIVO DEL PROYECTO.................................................................................. 6

OBJETIVO GENERAL ............................................................................................. 7

OBJETIVO ESPECÍFICO ......................................................................................... 7

¿PORQUE JAVA?...................................................................................................... 7

HISTORIA DE JAVA ............................................................................................... 8

¿QUÉ ES JAVA? ...................................................................................................... 10

CARACTERÍSTICAS DEL LENGUAJE JAVA ................................................... 11

Lenguaje simple........................................................................................................................ 11

Orientado a objetos.................................................................................................................. 11

Distribuido .................................................................................................................................. 11

Interpretado y compilado a la vez......................................................................................... 11

Robusto....................................................................................................................................... 12

Seguro (?)................................................................................................................................... 12

Indiferente a la arquitectura.................................................................................................... 12

Portable ...................................................................................................................................... 12

Alto rendimiento........................................................................................................................ 12

Multihebra .................................................................................................................................. 12

Dinámico.................................................................................................................................... 13

Produce applets ........................................................................................................................ 13

HERRAMIENTAS UTILIZADAS......................................................................... 13

Page 3: TIENDA VIRTUAL DE REVISTAS

3

ACCESS....................................................................................................................................... 13

Generalidades .......................................................................................................................... 14

Fecha de lanzamientos............................................................................................................ 14

Ultima versión ............................................................................................................................ 15

Inconvenientes.......................................................................................................................... 15

Extensiones de archivo ............................................................................................................ 15

Uso de Access........................................................................................................................... 16

Una vista de la ventana de la base de datos ....................................................................... 16

Instalación de Access .............................................................................................................. 16

JBUILDER. ............................................................................................................... 17

Versiones de JBuilder ............................................................................................................... 17

100% Java y multiplataforma.................................................................................................. 18

Generación de aplicaciones .................................................................................................. 19

Acceso a datos ......................................................................................................................... 19

Aplicaciones distribuidas......................................................................................................... 20

Un entorno mejorado ............................................................................................................... 21

Vista de Jbuilder 3..................................................................................................................... 22

Apache tomcat......................................................................................................................... 22

Entorno ....................................................................................................................................... 22

Estado de su desarrollo ............................................................................................................ 23

Estructura de directorios .......................................................................................................... 23

Características del producto .................................................................................................... 23

Tomcat 3.x (distribución inicial) .............................................................................................. 23

Tomcat 4.x.................................................................................................................................. 23

Tomcat 5.x.................................................................................................................................. 24

Tomcat 6.x.................................................................................................................................. 24

Historia ....................................................................................................................................... 24

Tomcat 6.x .................................................................................................................................. 24

Page 4: TIENDA VIRTUAL DE REVISTAS

4

Tomcat 5.5.x ............................................................................................................................... 24

Tomcat 5.0.x ............................................................................................................................... 25

Tomcat 4.x .................................................................................................................................. 25

CICLO DE VIDA DE UN SERVLET ....................................................................... 25

INSTALACIÓN DE APACHE TOMCAT Y DE APACHE. .............................. 26

Instalación del Servidor Apache. ........................................................................................... 26

Instalación de Apache. ........................................................................................................... 27

Instalación de Apache 2.2.6. .................................................................................................. 28

DIAGRAMAS PARA EL PROYECTO. ................................................................ 32

Clases creadas.......................................................................................................................... 33

Casos de Uso ............................................................................................................................. 33

Diagrama de secuencia. ......................................................................................................... 34

Base de Datos ACCESS............................................................................................................. 34

Relación de las tablas. ............................................................................................................. 35

Vista de la tabla Suscriptores .................................................................................................. 35

Vista de la tabla Revistas ......................................................................................................... 36

Vista de la tabla de Suscripciones ......................................................................................... 37

Vista de la información de una dada de alta y una suscripción ....................................... 37

ESTRUCTURA DEL PROYECTO......................................................................... 38

CÓDIGO DE CADA UNO DE LOS ARCHIVOS .............................................. 38

Index.html (Página principal).................................................................................................. 38

Vista index.html ......................................................................................................................... 39

AltasSuscriptores.htm................................................................................................................ 40

Vista AltasSuscriptores.htm...................................................................................................... 41

AltasSuscriptor.java .................................................................................................................. 41

Vista AltasSuscriptores.class .................................................................................................... 45

AltasARevistas.jsp ..................................................................................................................... 46

Page 5: TIENDA VIRTUAL DE REVISTAS

5

Vista AltaARevistas.jsp.............................................................................................................. 48

AltaARevistas.java .................................................................................................................... 48

Vista de AltaARevistas.class .................................................................................................... 53

RevYPrecios.jsp ......................................................................................................................... 53

Vista del RevYPrecios.jsp ......................................................................................................... 55

Consultas.htm ............................................................................................................................ 55

Vistas de Consultas.htm ........................................................................................................... 56

Consultas2.htm.......................................................................................................................... 56

Vista de Consultas2.htm........................................................................................................... 57

InformaSuscripciones.jsp ......................................................................................................... 57

Vista del InformaSuscripciones.jsp ......................................................................................... 59

ServletVerPub.htm..................................................................................................................... 59

Vista de ServletVerPub.htm...................................................................................................... 60

Algunas de las Imágenes usadas en proyecto .................................................................... 60

Referencias ................................................................................................................................ 61

Page 6: TIENDA VIRTUAL DE REVISTAS

6

Agradecimiento En principio agradezco a todos y cada uno de los maestros que me compartieron sus conocimientos, a mi familia que supo apoyarme en todo momento, es por ellos que realmente logre terminar y titularme; Además a todos mis amigos y compañeros y a todos los que de alguna manera pusieron su granito de arena para que yo lograrla dar termino a este ciclo de mi vida. No puedo olvidarme de quien realmente hace mi vida con sentido, gracias DIOS por todo y bendice a todos los que me apoyaron con su tiempo, consejos, etc.

Introducción La existencia de bastantes opciones de proyecto existente en java me ayudo a tomar una decisión de que proyecto realizar, tome el desarrollo de una aplicación web, en razón de la nula experiencia en este campo y como quería desarrollarme en todo lo relacionado con la aplicaciones de comercio electrónico, donde se veía un gran campo para trabajar y/o crear negocio, me incline al uso de java que tenía poco tiempo de haber sido lanzado. El futuro trabajo es solo una superficial visión de las posibilidades de trabajo en un futuro, así que busque lo que de alguna manera me ayudará de la mejor manera posible.

Descripción del área problemática del proyecto. Se requiere una aplicación donde se pueda ofrecer información de revistas que se están editando con un determinado espacio de tiempo, los periodos pueden ser por quincenas, mensuales, bimestral y en caso que se requiera agregar otras opciones a la lista, que sería un catalogo, además de que se puedan dar de alta los usuarios y ya dados de alta en la aplicación que puedan inscribirse a una de las revistas existentes, hasta ese momento.

Objetivo del proyecto Esto es, que con la realización de este proyecto se logre una visión amplia de lo que se puede hacer en una aplicación con java en la web. En el momento de que se active el sitio, el usuario podrá darse da alta en la aplicación e inscribirse a una o n revistas que estarán disponibles al momento

Page 7: TIENDA VIRTUAL DE REVISTAS

7

de la inscripción a alguna de ella y que además exista la edición en el momento de la inscripción. La aplicación tendrá una parte donde se podrán dar de alta las nuevas revistas que se vendrán, pero, a esta página solo accederán los usuarios que deban tener acceso a esta tarea, en este momento no se desarrolla esta parte. La aplicación se estará creciendo constantemente, de acuerdo a los objetivos que se vayan planteando.

Objetivo general La aplicación consiste en la construcción de un sitio web para la venta de revistas, donde los suscriptores o clientes, podrán acceder a estas páginas para darse de alta, ver información de las revistas e inscribirse a una o a varias revistas.

Objetivo específico En principio lo que se quiere es tener la pagina web activa con las dadas de alta y las suscripciones de algunas de las revistas actuales de las cuales podrá ver la información el usuario, sin embargo los errores existentes y funcionalidad no se corrigen en su totalidad, únicamente los requeridos en el momento de la actualización.

¿Porque Java? Java es un nuevo lenguaje de programación orientado a objetos desarrollado por Sun Microsystems. Sun describe al lenguaje Java de la siguiente manera: Simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutral, portable, de alto rendimiento, multitarea y dinámico. Sun admite totalmente que lo dicho anteriormente es una cadena de halagos por parte suya, pero el hecho es que todo ello describe al lenguaje Java. Java permite hacer cosas excitantes con las páginas Web que antes no eran posibles. De manera que en este momento la gran interactividad que proporciona Java marca la diferencia en las páginas Web. Imagina un Web donde puedes jugar a un juego, como el fútbol, tú y otras personas que están en lugares remotos forman parte de un equipo y otras más del contrario, verías a los jugadores animados en la pantalla obedeciendo las instrucciones de las personas que están jugando al juego desde sitios remotos.

Page 8: TIENDA VIRTUAL DE REVISTAS

8

Además las puntuaciones quedarían registradas. O un Web con una aplicación en donde el usuario pueda hacer transacciones y estas se actualicen en tiempo real. O un sitio que ofrezca pequeñas aplicaciones como hojas de cálculo o calculadoras para uso de los visitantes. Uno que muestre figuras 3D, tales como moléculas o dinosaurios que pueden ser rotados con un clic del ratón. Java también aumenta el contenido multimedia de un sitio, ofreciendo animaciones fluidas, gráficos mejorados, sonido y vídeo, fuera de lo necesario para enganchar aplicaciones de ayuda dentro de sus navegadores Web. Hasta aquí Internet había crecido y madurado un poco, cada vez eran mas los sitios donde se podían encontrar paginas Web mostrando información de todo tipo, pero había un detalle: las paginas eran estáticas, y de pronto Sun Microsystems anuncia un nuevo producto asegurando que JAVA, así se llamaba, iba revolucionar Internet, las páginas Web se convertirían en dinámicas e interactivas. El avance de la tecnología informática y de las telecomunicaciones ha hecho posible que estemos viviendo tiempos en donde la globalización de la información, nos permita alcanzar uno de los grandes sueños de la humanidad: "Tener igualdad de condiciones para acceder al conocimiento", y esto se ha venido logrando gracias a Internet.

Historia de java A finales de la década de los 80 Sun Microsystems inicia un proyecto de investigación encabezado por James Gosling con el propósito de desarrollar un lenguaje de programación para dispositivos electrónicos como tostadoras, hornos microondas y asistentes digitales personales. Gosling y su equipo de investigación llegaron a la conclusión de que el software para dispositivos de consumo tiene algunos requerimientos de diseño únicos. Por ejemplo, el software necesita ser capaz de trabajar en nuevos chips de computadora. Cuando los chips son introducidos, los fabricantes más de una vez los cambian por otros por ser más baratos o introducir nuevos mecanismos. El software también necesita ser extremadamente inteligente, porque cuando un producto del consumidor falla, el fabricante usualmente tiene que reemplazar todo el dispositivo y no el componente que originó el fallo. Gosling y su equipo también descubrieron que existían lenguajes de programación como C y C++ con los cuales no se podía realizar la tarea de hacer un software que fuera independiente de la arquitectura en donde se este ejecutando.

Page 9: TIENDA VIRTUAL DE REVISTAS

9

Un programa escrito en C o C++ debe ser compilado para un chip de computadora particular. Cuando se cambia de chip el programa debe ser recompilado. La complejidad de C y C++ también hace extremadamente dificultoso escribir software fiable. Como resultado de lo dicho anteriormente, en 1990 Gosling comenzó a diseñar un nuevo lenguaje de programación que fuera más apropiado para dispositivos que utilizan software electrónico. Este lenguaje fue conocido originalmente como Oak. Fue pequeño, de fiar e independiente de la arquitectura. En 1993 cuando el equipo de Java continuaba trabajando en el diseño del nuevo lenguaje, la Word Wide Web apareció y tomó a todos por sorpresa. El equipo de Java pensó que un lenguaje de arquitectura neutral sería ideal para programar en la Internet, porque un programa correría en todos los diferentes tipos de computadoras conectadas a Internet. Y fue un hecho; todas las metas alcanzadas con las investigaciones anteriores coincidentemente sirvieron idealmente para la programación en Internet. En ese momento el desarrollo de Java se tornó en un asunto de mayor importancia para Sun. El equipo escribió un navegador Web llamado HotJava, que fue el primero en soportar applets de Java. Un applet es un pequeño programa que puede ser incrustado en una página Web. Puedes incluir un applet en un documento HTML para proporcionar interactividad y dar vida a una página Web.

Patrick Naugthon procedió a la construcción del lenguaje de programación Java que se accionaba con un browser prototipo, más tarde se le fueron incorporando algunas mejoras y el browser Hot Java fue dado a conocer al mundo en 1995.

HotJava demostró el poder del lenguaje Java y lo puso de moda entre los programadores y el resto de la gente. Y lo demás es historia. Los programadores comenzaron con la versión Alpha de Java que Sun puso a disposición de toda la gente, creando las clasificaciones de applets más maravillosas. La experiencia de Sun y la retroalimentación por parte de los usuarios ayudaron a refinar el lenguaje y la interfaz de programación de aplicaciones (API). Con el paso del tiempo el Hot Java se convirtió en un concepto práctico dentro del leguaje Java y demostró que podría proporcionar una forma segura multiplataforma para que el código pueda ser bajado y corrido del Host del World Wide Web y que de otra forma no son seguros.

Una de las características más atractivas del Hot Java fue su soporte para los "applets", que son las partes del código Java que pueden ser cargadas mediante una red de trabajo para después ejecutarlo localmente y así lograr o alcanzar soluciones dinámicas en computación acordes al rápido crecimiento del ambiente Web.

Page 10: TIENDA VIRTUAL DE REVISTAS

10

Para dedicarse al desarrollo de productos basados en la tecnología Java, Sun formó la empresa Java Soft en enero de 1996, de esta forma de se dio continuidad al fortalecimiento del programa del lenguaje Java y así trabajar con terceras partes para crear aplicaciones, herramientas, sistemas de plataforma y servicios para aumentar las capacidades del lenguaje.

Durante ese mismo mes, Java Soft dio a conocer el Java Developmet Kit (JDK) 1.0, una rudimentaria colección de componentes básicos para ayudar a los usuarios de software a construir aplicaciones de Java. Dicha colección incluía el compilador Java, un visualizador de applets, un debugger prototipo y una máquina virtual Java (JVM), necesaria para correr programas basados en Java, también incluía paquetería básica de gráficos, sonido, animación y trabajo en red.

Al mismo tiempo que Sun sacó la versión Beta de el lenguaje, Netscape anunció que la versión 2.0 del Web browser, Netscape Navigator soportaría applets de Java. Esto sirvió para incrementar el fuerte interés en la tecnología Java, en el mundo de la computación y en Internet. Con compañías como IBM, SGI y Oracle licenciando la tecnología Java de Sun se puede estar seguro de que más productos de software y hardware incorporarán la tecnología Java.

Como parte de su estrategia de crecimiento mundial y para favorecer la promoción de su nueva tecnología, Java Soft otorgó permisos a otras compañías para que pudieran tener acceso al código fuente de Java y al mismo tiempo mejorar sus navegadores, dicha licencia también les permitía crear herramientas de desarrollo para programación Java y los facultaba para acondicionar Máquinas Virtuales Java (JVM), a varios sistemas operativos.

Muy pronto las licencias o permisos contemplaban a prestigiadas firmas como IBM, Microsoft, Symantec, Silicon Graphics, Oracle, Toshiba y por supuesto Novell.

Desde su aparición, Java se ha ganado una impresionante cantidad de apoyo. Virtualmente cada vendedor importante de software ha obtenido autorización de Java y ahora ha sido incorporado en los principales sistemas operativos base de PC’s de escritorio hasta estaciones de trabajo UNIX.

Los applets Java (basados en JDK 1.02) son apoyados por los dos más populares navegadores web (Netscape Navigator 3.0 y Microsoft Internet Explorer 3.0). I.B.M./Lotus, Computer Asociates, Symantec, Informix, Oracle, Sybase y otras poderosas empresas de software están construyendo Software 100% puro JAVA.

¿Qué es java?

Page 11: TIENDA VIRTUAL DE REVISTAS

11

Lenguaje de programación orientado a objetos desarrollado por Sun Microsystems.

Características del lenguaje Java En seguida hacemos un recuento de todas y cada una de las caracteristicas que describen a java.

Lenguaje simple

Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.

Orientado a objetos

Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red.

Distribuido

Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

Interpretado y compilado a la vez

Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).

Page 12: TIENDA VIRTUAL DE REVISTAS

12

Robusto

Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

Seguro (?)

Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

Indiferente a la arquitectura

Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecución tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseñada para transportar el código eficientemente a múltiples plataformas hardware y software. El resto de problemas los soluciona el intérprete de Java.

Portable

La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. Estas dos últimas características se conocen como la Máquina Virtual Java (JVM).

Alto rendimiento

Multihebra

Page 13: TIENDA VIRTUAL DE REVISTAS

13

Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.

Dinámico

El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

Produce applets

Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets. Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java. Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.

Herramientas utilizadas

Para escribir la tesis, se actualizaron la base de datos, decidí usar el servidor Apache Tomcat 6.0, JDK 1.6.0, JRE 1.6.0, todo esto con el fin de que funcionara el proyecto y actualizar todas las herramientas para facilitar su reactivación. Access 2007, JBuilder 3, Apache tomcat 6.0, java JDK 1.6.0.

ACCESS.

Page 14: TIENDA VIRTUAL DE REVISTAS

14

Microsoft Office 2007 es la versión más reciente de la suite ofimática de Microsoft. Originalmente conocido como Office 12 durante su ciclo beta, fue lanzado el 30 de noviembre de 2006 al mercado empresarial y el 30 de enero de 2007 al público en general, coincidiendo con el lanzamiento oficial de Windows Vista. Office 2007 incluye nuevas características, la más notable es la nueva interfaz gráfica llamada Office Fluent, también conocido como cinta de opciones, que reemplaza al menú y a la barra de herramientas que fueron características desde su inicio.

Office 2007 incluye nuevas aplicaciones y herramientas del lado servidor, de las cuales una sobresaliente es Grove, un sistema de colaboración y comunicación para pequeñas empresas que fue originalmente desarrollado por Grove Networks, hasta que Microsoft lo compró en 2005. También esta nueva versión incluye Microsoft Office Server 2007, un sistema de revisión en red de aplicaciones de Office, tales como Excel o Word.

Aunque Office 2007 incluye nuevas aplicaciones, sólo una fue eliminada enteramente: Microsoft Office FrontPage, cuyos sucesores son Microsoft Office Share Point Designer y Microsoft Express Web.

Microsoft Access es un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft para uso personal de pequeñas organizaciones. Es un componente de la suite Microsoft Office aunque no se incluye en el paquete "básico". Una posibilidad adicional es la de crear ficheros con bases de datos que pueden ser consultados por otros programas.

Generalidades

Es un software de gran difusión entre pequeñas empresas (PYMES) cuyas bases de datos no requieren de excesiva potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeñas aplicaciones con unos pocos conocimientos del Programa.

Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programación de pequeños y medianos tamaños.

Fecha de lanzamientos

• 1992 Access 1.0 • 1993 Access 1.1 • 1994 Access 2.0 • 1995 Access 95 • 1997 Access 97 • 2000 Access 2000 • 2001 Access XP o 2002 • 2003 Access 2003 • 2007 Access 2007

Page 15: TIENDA VIRTUAL DE REVISTAS

15

Ultima versión

En Microsoft Office Access 2007, puede comenzar a trabajar rápidamente con soluciones de bases de datos, incluso aunque no tenga experiencia previa con esquemas de base de datos o lenguajes de programación. Del mismo modo puede utilizar la interfaz de usuario de Microsoft Office Fluent, la vista de ventanas con fichas, la barra de estado, las barras de desplazamiento y una barra de título para proporcionar a las aplicaciones creadas en Access 2007 un aspecto moderno. Con las nuevas características, como la columna Agregar nuevo campo y las capacidades de selección mejoradas, la experiencia es similar a la de trabajar con Microsoft Office Excel 2007.

La nueva interfaz de usuario de Office Fluent, que reemplaza los antiguos menús y barras de herramientas, así como la mayoría de paneles de tareas, depende del contexto y está optimizada para obtener la máxima eficiencia y facilidad de uso. Con el nuevo panel de exploración de Access 2007, obtendrá una vista completa de tablas, formularios, consultas e informes. Incluso puede crear grupos personalizados para organizar y ver todos los formularios e informes relacionados con una sola tabla.

Inconvenientes

Para base de datos de gran calibre (en cuanto a volumen de datos o de usuarios) es recomendable usar otros sistemas como MySQL o Microsoft SQL Server y código VBA (Visual Basic para Aplicaciones).

Entre sus mayores inconvenientes figuran que no es multiplataforma, pues sólo está disponible para sistemas operativos de Microsoft, Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos o muchos accesos simultáneos a la base de datos.

Extensiones de archivo

Microsoft Access usa las siguientes extensiones para guardar sus datos:

-mdb -Base de datos de Access (Versión 2003 y anteriores) -mdb -Base de datos de Access (Versión 2003 y anteriores) -mde -Base de datos de Access protegida, con macros (Versión 2003 y anteriores) -accdb - Base de datos de Access (Versión 2007) -accde - Base de datos de Access protegida, con macros (Versión 2007 y anteriores) -mam - Macro de Access -maq - Consulta de Access -mar - Informe de Access

Page 16: TIENDA VIRTUAL DE REVISTAS

16

-mat - Tabla de Access -maf - Formulario de Access -adp - Proyecto de Access -adn - Plantilla de proyecto de Access

Uso de Access

Usé la base de datos relacional Access 2007, para actualizar el uso de Access 97 que fue la versión de la base de datos que se usó para la aplicación y para evitar problemas al momento de rehabilitar el proyecto; Esta base de datos se uso por la facilidad de obtención y la cantidad de registros que se almacenarían, además lo que me nos importaba, era la funcionalidad de la aplicación en general (en principio), como es parte de office y como contábamos con esta herramienta, la teníamos el office instalado en el laboratorio Liz, donde participé como administrador, pues se me facilito el uso de las herramientas existentes. Una vista de la ventana de la base de datos

Instalación de Access

La instalación de Access 2007 se realiza junto con la instalación de Microsoft Office 2007.

Page 17: TIENDA VIRTUAL DE REVISTAS

17

Esta liga muestra paso a paso la instalación: http://translate.google.com.mx/translate?hl=es&langpair=en|es&u=http://www.simplyguides.net/guides/office_2007_install/office_2007_install.shtml&prev=/translate_s%3Fhl%3Des%26q%3Dinstalaci%25C3%25B3n%2Bde%2BMicrosoft%2BOffice%2B2007%26tq%3Dinstallation%2Bof%2BMicrosoft%2BOffice%2B2007%26sl%3Des%26tl%3Den

JBUILDER.

Para programar en Java existen distintos entornos de desarrollo , como son:

Java Workshoop de Sun El entorno de los creadores del lenguaje

Microsoft Visual J ++ El entorno de Microsoft, que, aunque muchos lo ignoran, permite crear programas tanto para Windows como para todos los otros S.O

Symantec Café El de la empresa Symantec

Visual Age for Java de IBM

Quizá el más potente de todos ellos

JBuilder 1,2 y 3 El ambiente de creación de Borland

JBuilder fue concebido en Borland a finales de 1995 por la gente fascinada por el nuevo lenguaje java incluyendo David Williams, Carl Quinn y Jayson Minard trabajando en el grupo de productos componentes de Borland y el grupo C++. Carl Quinn mas tarde creo el Modelo de Componentes Baja el cual fue la base de la especificación de los Java Beans. Jayson Minard creó el prototipo de Java el cual fue la fundación del JBuilder IDE y el modelo de DataSet para la base de datos Access. Otras personas que forman el equipo donde Joe Nuxoll y Blake Stone que lidero el desarrollo de versión total en Java del producto, con Blake Stone convirtiéndose el científico principal de JBuilder después de Jayson Minard desocupo el rol. La primera versión de JBuilder fue sobre todo escrita en Delphi, otros como el diseño de la forma y librerías componentes. La versión 3.5 fue la primera escrita completamente en Java. jBuilder 3 tiene la reputación de ser lento e inestable. En este momento existe también Eclipse un open source plataforma/IDE que es modular y altamente extensible. Borland fue uno de los miembros fundadores de la fundación eclipse. Esta reseña está enfocada en JBuilder 3, existe más información en las referencias que vienen al final del documento. Versiones de JBuilder

• JBuilder 1. Disponible en 1997. Esto viene en Cliente / Servidor, Ediciones Profesional y Estándar.

• JBuilder 2. Disponible en 1998. Esto viene en Cliente / Servidor, Ediciones Profesional y Estándar.

• JBuilder 3. Disponible en 1999.

Page 18: TIENDA VIRTUAL DE REVISTAS

18

• JBuilder 4. Disponible en 2000. • JBuilder 5. Disponible en 2001. • JBuilder 6. Disponible en 2001. • JBuilder 7. Disponible en 2002. Esto viene en Empresarial, Estándar

(SE) y edición Personal. La actualización subió a Actualización 3. • JBuilder 8. Disponible en 2002. Esto viene en Empresarial, Estándar y

edición Profesional. Actualizar a la primera, "JBuilder 8 Update". • JBuilder 9. Disponible en 2003. Esto viene en Empresarial, Estándar

(SE) y edición Personal. La actualización subió a la Actualización 2. • JBuilder X. Disponible en 2003. Esto viene en Empresarial,

Desarrollador y edición Fundación. La actualización subió a la Actualización 3.

• JBuilder 2005. Disponible en 2004. Esto vienen en Empresarial, Desarrollador y edición Fundación. La actualización subió a la Actualización 4.

• JBuilder 2006. Disponible en 2005. Esto viene en Empresarial, Desarrollador y edición Fundación.

• JBuilder 2007. Disponible en 2006. Esta es la primer versión JBuilder echa de nuevo para trabajar al tope con Eclipse Esto es la interface de usuario y características son muy diferentes que las versiones previas de JBuilder.

• JBuilder 2007 r2 Disponible en 2007. Esto viene en Empresarial, Estándar (SE) y edición Turbo.

• JBuilder 2008. Esto viene en Empresarial, Profesional y edición Turbo.

100% Java y multiplataforma

Borland JBuilder 3 es una herramienta que genera código 100% Java, garantizando el uso de las aplicaciones desarrolladas en un sistema determinado en otros sistemas para las que exista la correspondiente plataforma Java. Los asistentes, componentes y diseñadores han sido actualizados para adaptarse a los nuevos componentes "JFC/Swing", habiéndose integrado también un compilador JIT (Just In-Time) para Java 2.

La integración de JBuilder 3 con Java 2 se deja notar, por ejemplo, en las posibilidades de depuración, notablemente mejoradas al utilizarse la nueva API de depuración de Java 2. No obstante, es posible depurar también aplicaciones de versiones previas e, incluso, efectuar depuración remota, sobre máquinas virtuales que se ejecutan en otros dispositivos conectados a la red, sin importar el sistema operativo que utilizan.

El propio JBuilder se ha reescrito prácticamente en su totalidad usando Java 2, lo cual va a hacer posible que en un futuro, cuando las pocos módulos nativos restantes se conviertan a Java, aparezcan versiones de JBuilder 3 para otras plataformas. Para final de año, concretamente, se espera la presentación de JBuilder para Solaris, mientras que a principio del 2000 se espera una versión de JBuilder para Linux.

Page 19: TIENDA VIRTUAL DE REVISTAS

19

Pocas veces los departamentos de desarrollo de las grandes empresas, generalmente obligados a trabajar con entornos heterogéneos, han podido contar con una herramienta similar. Ahora podrán desarrollar sus aplicaciones en Windows, Solaris o Linux, y que podrán distribuirse y ejecutarse en cualquier sistema operativo para el que exista la correspondiente máquina virtual.

La transición a Java 2 de proyectos desarrollados con versiones anteriores de Java o JBuilder también está garantizada, gracias a la existencia de un asistente que se ocupa, básicamente, de renombrar la denominación de clases y paquetes según la nueva nomenclatura que tienen en Java 2 y JBuilder 3.

Generación de aplicaciones

Aparte de los típicos elementos del Depósito de objetos de JBuilder, que facilitan la creación de nuevos proyectos vacíos, esqueletos de componentes JavaBeans o "servlets", JBuilder 3 incorpora muchas novedades en el campo de la generación de aplicaciones. En este aspecto hay dos nuevas herramientas fundamentales: el Modelador de datos y el Creador de aplicaciones.

El Modelador de datos es una interfaz simple desde la que pueden diseñarse consultas de forma visual, estableciendo criterios de filtro, orden y agrupación. Los enlaces entre tablas se efectúan también de manera visual, con un simple arrastrar y soltar. Antes de guardar la consulta, es posible incluso ejecutarla para ver cuáles serían los resultados. La consulta se guarda en el propio archivo de código, pudiendo recuperarse posteriormente para modificación

Partiendo de un módulo de datos, el Creador de aplicaciones es capaz de construir una aplicación cliente con el diseño que se prefiera. Es posible desarrollar tanto clientes Java, con arquitectura C/S, como HTML que utilizan "servlets" Java para comunicarse con el servidor.

Si partimos de un módulo IDL (Interface Definition Language) en lugar de hacerlo de un módulo de datos, el Creador de aplicaciones nos permitirá generar tanto el servidor como el cliente CORBA, pudiendo este último ser un cliente Java o HTML basado en un "servlet".

Acceso a datos

Las novedades en lo relativo al acceso a datos no terminan en el nuevo Modelador de datos que acaba de describirse. Todos los componentes dbSwing han sido actualizados, estando ahora basados en los componentes JFC (Java Foundation Classes) de Java 2. También existen algunos nuevos

Page 20: TIENDA VIRTUAL DE REVISTAS

20

enlazados a datos, como "JdbEditorPane" o "JdbTree". El primero es un pequeño editor de texto que puede enlazarse a una tabla, contemplando el uso de distintos formatos de texto, como RTF o HTML. El segundo facilita el almacenamiento de los elementos que el usuario elija en un árbol jerárquico.

Posiblemente la aportación más importante, en el campo del tratamiento de datos, sea el nuevo "DataStore", una base de datos 100% Java que puede utilizarse como cualquier otro gestor pero que, además, ofrece otras posibilidades.

Para acceder a "DataStore" existen dos alternativas: usar JDBC, como se haría con cualquier otra base de datos, o bien utilizar los componentes "DataExpress". Con éstos, el acceso a "DataStore" es nativo y directo, sin necesidad de configurar orígenes de datos, instalar JDBC o el puente JDBC-ODBC. El rendimiento, por tanto, es mucho mejor. Existe la ventaja, además, de que al ser la aplicación 100% Java y serlo también el servidor de datos, ambos podrían instalarse y ejecutarse en cualquier sistema para el que exista la plataforma Java 2, sin necesidad de configuraciones adicionales para facilitar la conexión con los datos.

"DataStore" puede ser utilizado como una base de datos tradicional, almacenando datos estructurados en filas, columnas y tablas, o bien como un archivo en el que es posible alojar cualquier flujo de datos que interese, incluso la serialización de los componentes empleados en el programa.

Al igual que otras bases de datos, el "DataStore" cuenta con una utilidad, el "DataStoreExplorer", que facilita la creación y edición visual de las bases de datos. En la Figura 4 puede ver esta herramienta en funcionamiento, editando los datos de una tabla.

Aplicaciones distribuidas

Toda la experiencia de Inprise en tecnologías CORBA, asociada a productos como VisiBroker y el Inprise Application Server, resulta esencial a la hora de facilitar desde una herramienta de desarrollo, en este caso JBuilder 3, la creación de aplicaciones distribuidas. En la versión que hemos tenido ocasión de probar, JBuilder 3 Enterprise, se integran todos los servicios habituales, como el de directorio o eventos, aparte del ORB VisiBroker.

El estado de los diferentes servicios puede conocerse utilizando el Explorador ORB, otra aplicación 100% Java y que, por tanto, puede utilizarse en distintos sistemas operativos. Desde el Explorador ORB es posible acceder al servicio de localización de objetos o al depósito de interfaces, para los cuales antes tan sólo existían utilidades que se ejecutaban desde la línea de comandos.

La edición de los módulos IDL ahora resulta mucho más efectiva, ya que el editor de código reconoce la sintaxis IDL y utiliza diferentes colores, como en el caso del código Java, para identificar los diversos elementos. JBuilder,

Page 21: TIENDA VIRTUAL DE REVISTAS

21

además, analiza la estructura del código IDL y la representa jerárquicamente en el panel de estructura, como también hace con el código Java.

Es posible añadir al proyecto un módulo IDL vacío, para editarlo manualmente; obteniéndolo del Depósito de interfaces o bien generándolo a partir de un módulo de datos. Esta última posibilidad resulta muy interesante ya que, a partir de una consulta SQL de selección de datos, JBuilder genera una interfaz IDL que permitiría recuperar y modificar los datos. Partiendo de la interfaz IDL, el Creador de aplicaciones puede diseñar tanto el servidor como distintos tipos de clientes. De esta forma, el desarrollo de aplicaciones en tres niveles resulta realmente sencillo.

Las posibilidades de creación de aplicaciones distribuidas no terminan en CORBA y, como no podía ser de otra manera, JBuilder también contempla otros mecanismos más cercanos a Java como RMI (Remote Meted Invocation) y EJB (Enterprise Java Beans). Especialmente interesante resulta el uso de EJB, componentes JavaBeans que se ejecutan en un servidor de aplicaciones y que están, de manera implícita, diseñados para desenvolverse en entornos distribuidos.

Un entorno mejorado

Ya se han mencionado algunas de las mejoras que ha sufrido el propio entorno de JBuilder, como la identificación de la sintaxis IDL en el editor de código y el panel de estructura o la existencia de múltiples nuevos asistentes.

Existen otras mejoras, que quizá pueden considerarse de carácter "menor" respecto a otras novedades, pero que en conjunto facilitan la utilización del entorno. A la hora de seleccionar un componente, por ejemplo, no es necesario buscarlo por las diferentes páginas con que cuenta la paleta. Si conocemos el paquete al que pertenece dicho componente, basta con pulsar un botón para abrir un explorador jerárquico de paquetes (véase la Figura 6) y localizar el componente.

Las propiedades ahora pueden clasificarse en el Inspector de propiedades, mostrando u ocultando las que nos interesen. También existen nuevos editores de propiedades, que simplifican la tarea de configurar un borde alrededor de un control, por poner un ejemplo.

Seguramente la novedad más importante, en lo que respecta al entorno de JBuilder, es la posibilidad de integrar otras herramientas o utilidades externas. Con este fin, JBuilder 3 incluye una API, conocida como "OpenTools", que cualquiera puede utilizar para ampliar las posibilidades del entorno.

Elegí desarrollar en JBuilder 3, por todo los descrito anteriormente y por lo por la facilidad para obtenerlo, ya que se estaba desarrollando en este IDE en el laboratorio de Ingeniería de la UAMI.

Page 22: TIENDA VIRTUAL DE REVISTAS

22

La instalación de Jbuilder se deja para una versión mejorada.

Vista de Jbuilder 3

Apache tomcat Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona como un contenedor de servlets desarrollado bajo el proyecto jakarta en la Apache Software Fundation. Tomcat implementa las especificaciones de los servlets y de Java Server Page (JSP) de Sun Microsystems. Entorno

Tomcat es un servidor web con soporte de servlets y JSPs. Tomcat no es un servidor de aplicaciones, como JBooss o JOnAS. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web apache.

Tomcat puede funcionar como servidor web por sí mismo. En sus inicios existió la percepción de que el uso de Tomcat de forma autónoma era sólo recomendable para entornos de desarrollo y entornos con requisitos mínimos de velocidad y gestión de transacciones. Hoy en día ya no existe esa

Page 23: TIENDA VIRTUAL DE REVISTAS

23

percepción y Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad.

Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la maquina virtual Java.

Estado de su desarrollo

Tomcat es mantenido y desarrollado por miembros de la Apache Software Foundation y voluntarios independientes. Los usuarios disponen de libre acceso a su código fuente y a su forma binaria en los términos establecidos en la Apache Software Licence. Las primeras distribuciones de Tomcat fueron las versiones 3.0.x. Las versiones más recientes son las 6.x, que implementan las especificaciones de Servlet 2.5 y de JSP 2.1. A partir de la versión 4.0, Jakarta Tomcat utiliza el contenedor de servlets Catalina.

Estructura de directorios

La jerarquía de directorios de instalación de Tomcat incluye:

• bin - arranque, cierre, y otros scripts y ejecutables • common - clases comunes que pueden utilizar Catalina y las

aplicaciones web • conf – ficheros XML y los correspondientes DTD para la

configuración de Tomcat • logs - logs de Catalina y de las aplicaciones • server - clases utilizadas solamente por Catalina • shared - clases compartidas por todas las aplicaciones web • webapps - directorio que contiene las aplicaciones web • work - almacenamiento temporal de ficheros y directorios

Características del producto

Tomcat 3.x (distribución inicial)

• Implementado a partir de las especificaciones Servlets 2.2 y JSP 1.1 • Recarga de servlets • Funciones básicas HTTP

Tomcat 4.x

• Implementado a partir de las especificaciones Servlet 2.3 y JSP 1.2 • Contenedor de servlets rediseñado como Catalina • Motor JSP rediseñado con Jasper • Conector Coyote

Page 24: TIENDA VIRTUAL DE REVISTAS

24

• Java Management Extensions (JMX), JSP Y administración basada en Struts

Tomcat 5.x

• Implementado a partir de las especificaciones Servlet 2.4 y JSP 2.0 • Recolección de basura reducida • Capa envolvente nativa para Windows y Unix para la integración de las

plataformas • Análisis rápido JSP

Tomcat 6.x

• Implementado de Servlet 2.5 y JSP 2.1 • Soporte para Unified Expression Language 2.1 • Diseñado para funcionar en Java SE 5.0 y posteriores • Soporte para Comet a través de la interfaz CometProcessor

Historia

Tomcat empezó siendo una implementación de la especificación de los servlets comenzada por James Duncan Davidson, que trabajaba como arquitecto de software en Sun Microsystem y que posteriormente ayudó a realizar el proyecto open source y en su donación a la Apache Software Foudation.

Duncan Davidson inicialmente esperaba que el proyecto se convirtiese en open source y dado que la mayoría de los proyectos open source tienen libros de O´Really asociados con un animal en la portada, quiso ponerle al proyecto nombre de animal. Eligió Tomcat (gato), pretendiendo representar la capacidad de cuidarse por sí mismo, de ser independiente.

Tomcat 6.x

• 6.0.18 - 31 de julio de 2008 • 6.0.16 - 7 de febrero de 2008 • 6.0.14 - 13 de agosto de 2007 • 6.0.13 - 15 de mayo de 2007 • 6.0.10 - 1 de marzo de 2007 • 6.0.0 - 1 de diciembre de 2005

Tomcat 5.5.x

• 5.5.26 - Febrero de 2008 • 5.5.25 - Septiembre de 2007 • 5.5.23 - Marzo de 2007 • 5.5.20 - 1 de septiembre de 2006 • 5.5.17 - 28 de abril de 2006 • 5.5.16 - 16 de marzo de 2006

Page 25: TIENDA VIRTUAL DE REVISTAS

25

• 5.5.15 - 21 de enero de 2006 • 5.5.12 - 9 de octubre de 2005 • 5.5.9 - 11 de abril de 2005 • 5.5.7 - 30 de enero de 2005 • 5.5.4 - 10 de noviembre de 2004 • 5.5.1 - 7 de septiembre de 2004 • 5.5.0 - 31 de agosto de 2004

Tomcat 5.0.x

• 5.0.30 - 30 de agosto de 2004 • 5.0.28 - 28 de agosto de 2004 • 5.0.23 • 5.0.0 - 9 de octubre de 2002

Tomcat 4.x

• 4.1.36 - 24 de marzo de 2007 • 4.1.31 - 11 de octubre de 2004 • 4.0 - Septiembre de 2001

Ciclo de vida de un Servlet

The Servlet lifecycle consists of the following steps:

1. La clase servlet es cargada por el contenedor durante el arranque. 2. El contenedor llama el método init(). Este método inicializa el servlet y

debe ser llamado antes que el servlet pueda responder alguna petición. En la vida completa del servlet, el método init() es llamado únicamente una vez.

3. Después de iniciar, el servlet puede atender peticiones del cliente. Cada petición es atendida en su propio hilo separado. El contenedor llama el método serviceL() del servlet para cualquier petición. El método service() determina el tipo de petición siendo echa y despachada a un método apropiado para manejar la petición. El desarrollador de servlets debería proveer una implementación para estos métodos. Si una petición para un método que no es implementada por el servlet es echa, el método de la clase padre es llamado, típicamente resulta un error siendo regresada la petición.

4. Finalmente, el contenedor llama al método destroy() el cual toma la salida del servlet del servicio. El método destroy() como el init() es llamado únicamente una vez en el ciclo de vida de un servlet.

Page 26: TIENDA VIRTUAL DE REVISTAS

26

Instalación de Apache Tomcat y de Apache. En la actualización de la aplicación usé Apache tomcat 6.0.16, pero, para la creación y pruebas usé Apache. De modo que presentaré la manera de instalar las tanto Apache. Instalación de Apache Tomcat 6.0.16 La instalación de Apache Tomcat, no la muestro por espacio, sin embargo se puede usar el Servidor Apache o Apache Tomcat, indistintamente.

Instalación del Servidor Apache.

Última Actualización: 24 / 09 / 2007 a las 17:48 Hs Nombre del Archivo: apache_2.2.6-win32-x86-no_ssl.msi Licencia: Freeware (Gratis)

Page 27: TIENDA VIRTUAL DE REVISTAS

27

Idioma: Inglés Windows: Todos Tamaño: 4.689 KB Rating: 10 Visitas: 6.710 Homepage: http://www.apache.org/ Apache es un servidor HTTP, diseñado originalmente para sistemas UNIX. Esta es la versión de Apache para sistemas Microsoft Windows XP, NT, 2000 y 9x. Más del 50% de los sitios web en el planeta tierra tienen instalado el servidor web Apache, capaz de desarrolar desde páginas simples html, pasando por CGI y sistemas con bases de datos utilizando ODBC o motores independientes. Las características más importantes que tiene es que consume pocos recursos del sistema y es gratuito. Si realmente querés ahorrarle dinero a tu compañía te conviene instalar este servidor Web para tu Intranet o tu servidor de Internet, es muy configurable y confiable.

Instalación de Apache. Ejecutatamos el archivo apache_2.2.6-win32-x86-no_ssl

Page 28: TIENDA VIRTUAL DE REVISTAS

28

Instalación de Apache 2.2.6.

Para esta versión, en la fecha de actualizción del manual la última versión disponible era la 2.0.53, por lo que el archivo que tenemos que bajar puede ser: apache_2.0.53-win32-x86-no_ssl.exe También puede existir el mismo archivo pero con extensión msi, en este caso podríamos bajarlo si disponemos del Windows Installer, la ventaja es que ocupa menos.

Bien, una vez que lo tengamos ejecutamos el instalador y vamos recorriendo las pantallas

Page 29: TIENDA VIRTUAL DE REVISTAS

29

hasta que salga una donde nos piden unos datos, en cuyo caso pondremos:

Network Domain : 127.0.0.1

Page 30: TIENDA VIRTUAL DE REVISTAS

30

Server Name : 127.0.0.1

Administrator’s Email Address : nuestro e-mail, aunque no es totalmente necesario.

For All Users, on Port 80, as a Service : seleccionamos esta opción.

La IP 127.0.0.1 es la dirección IP asociada a nuestra máquina, es decir el host local o vulgarmente conocido como Localhost . Es importante decir que a la hora de probar tus scripts en modo local, da igual que pongas 127.0.0.1 o localhost.

Page 31: TIENDA VIRTUAL DE REVISTAS

31

Page 32: TIENDA VIRTUAL DE REVISTAS

32

Finalmente, recordar que el Apache se instala por defecto en la carpeta:

C:\Archivos de programa\Apache Group\Apache\

Bien, ahora vamos a instalar el PHP. Asegúrate ahora de tener cerrado el Apache.

Diagramas para el Proyecto. Los diagramas reflejaran la información de la vida real de la cual partiremos, incluendo clases, casos de uso y diagramas de secuencia, estos se muestran en seguida.

Page 33: TIENDA VIRTUAL DE REVISTAS

33

Clases creadas

Clase Asociación

Casos de Uso El proyecto se fue realizando en parte, por lo cual hasta el punto que llegue no se codifico la parte de Alta de Revistas, solo la parte del caso del cliente.

Page 34: TIENDA VIRTUAL DE REVISTAS

34

Diagrama de secuencia.

Base de Datos ACCESS.

Page 35: TIENDA VIRTUAL DE REVISTAS

35

Las tablas las creamos de cada una de las clases creadas con el análisis. Las clases las vemos en el diagrama anterior.

Relación de las tablas.

Vista de la tabla Suscriptores

Page 36: TIENDA VIRTUAL DE REVISTAS

36

Vista de la tabla Revistas

Page 37: TIENDA VIRTUAL DE REVISTAS

37

Vista de la tabla de Suscripciones

Vista de la información de una dada de alta y una suscripción

Page 38: TIENDA VIRTUAL DE REVISTAS

38

Estructura del proyecto La página principal tendrá cuatro ligas, las cuales dirigirán a: - Área de suscriptores: donde se podrá dar de alta el cliente. - Suscribirme a una revista: podrá darse de suscribirse a alguna revista o

varias. o Podrá verificar información acerca de las revistas.

- Área de consultas: aquí podrán consultar revistas y suscripciones o Verificar revistas disponibles: esto es las revistas en existencia.

� Ver revistas: es solo el llamado a la página que mostrara el detalle de las revistas disponibles.

o Verificar mis suscripciones a revistas: ver las suscripciones que tiene y para verlas en detalle, tendrá que ir a la liga que esta marcada.

- Lo relevante en la noticia y promociones: donde podremos ver o Noticias actuales o Promociones o Contactos

Código de cada uno de los archivos Los archivos codificados en esta parte son los que se han usado en la aplicación, incluyendo algunas imágenes. Los archivos que se usaron fueron servlets, jsp, html y las imágenes que se verán más adelante. Index.html (Página principal) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title> SUSCRIPCIONES A REVISTAS </title> </head> <body> <H3> <marquee behavior="alternate" bgcolor="#6699FF">BIENVENIDO A LA SECCION DE REVISTAS</marquee> </H3> <HR> <p align="center"><CENTER> <font size="5" face="Arial Black"></font>

Page 39: TIENDA VIRTUAL DE REVISTAS

39

<font size="5" face="Arial Black"><font color="#FFFFFF">**</font></font><font color="#333399"><font size="2" face="Arial Black">*** INDICE ***</font></font><BR> <img src="image/swing.gif" width="109" height="140" longdesc="image/swing.gif" ALIGN= LEFT><IMG SRC="image/continued.gif" width="109" height="140" longdesc="image/continued.gif" ALIGN= RIGHT></p> <div align="center"> <p><font size="2"><A HREF = "AltasSuscriptor.htm"><B> A) AREA DE SUSCRIPTORES</B> </A><br> <br> <A HREF = "AltasARevistas.jsp"><B> B) SUSCRIBIRME A UNA REVISTA</B> </A><BR> <BR> <A HREF = "Consultas.htm"><B> C) AREA DE CONSULTAS</B> </A><BR> <BR> <A HREF = "ServletVerPub.htm"><B> D) LO RELEVANTE EN LA NOTICIA Y PROMOCIONES</B></A></font><font size="2"> </font></p> <p>&nbsp;</p> </div> <HR> <p> <B><I><font size="2">SI TIENES DUDAS O SUGERENCIAS CONTACTANOS </font></I></B> <HR> <FORM ACTION = "MAILTO:[email protected]" METHOD = "POST" ENCTYPE = "TEXT/PLAIN"> Escribe tu Nombre y Apellidos: <INPUT TYPE = "password" NAME ="apellido"> <p><br> <TEXTAREA NAME = "comentarios" ROWS="6" COLS="30"> </TEXTAREA></p> <p> <font size="1"> <input type ="submit" VALUE = "ENVIAR DATOS"> </font> <font size="1"> <input type ="RESET" VALUE = "BORRAR LOS DATOS"> </font> </p> <p><span style="background-color: #6699FF">mail: <a href="mailto:[email protected]">[email protected]</a></span></p> </FORM> </body> </html>

Vista index.html

Page 40: TIENDA VIRTUAL DE REVISTAS

40

AltasSuscriptores.htm <HTML> <HEAD> <TITLE> SUSCRIBASE </TITLE> </HEAD> <BODY> <H3> <marquee behavior="alternate" bgcolor="#6699FF">SIRVACE LLENAR SUS DATOS POR FAVOR</marquee> </H3><HR> <a href="index.htm"><img src="image/second-edition.gif" width="109" height="140" longdesc="image/second-edition.gif" alt="Atrás" align=RIGHT></a> <div align = "left"> <FORM ACTION="http://localhost:8080/Sample/altassuscriptor" method="POST"> <!P><!font size="2"><!b><!i><!/i> <!INPUT type = "Text" name="claves" size=12> <P><b><i><font size="2">Nombre(s): </font></i></b> <INPUT type = "Text" name="nombrecliente" size=40><br> <P><b><i><font size="2">Apellidos(s):</font></i></b> <INPUT type = "Text" name="apellidos" size=35><br> <P><b><i><font size="2">Direccion: </font></i></b> <INPUT type = "Text" name="direccion" size=45><br> <P><b><i><font size="2">Estado:</font></i></b><INPUT type ="Text" name="estado" size=15>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p><b><i><font size="2">Codigo Postal:</font></i></b><INPUT type = "Text" name="codigoPostal" size=15> <P><b><i><font size="2">Telefono:</font></i></b> <INPUT type = "Text" name="telefono" size=18><br> <P><b><i><font size="2">No. Targeta:</font></i></b> <INPUT type = "Text" name="targeta" size=18><br> <P><b><i><font size="2">Ciudad:</font></i></b> <INPUT type = "Text" name="ciudad" size=18><br> <p><b><i><font size="2">Fecha de Inscripcion :</font></i></b> <INPUT type = "Text" name="fechaInscripcion" size=11> <br> <P><b><i><font size="2">observaciones.:</font></i></b> <INPUT name="observaciones" size=64><br<br> <P>

Page 41: TIENDA VIRTUAL DE REVISTAS

41

<INPUT TYPE ="SUBMIT" NAME = "botonEnviar" VALUE="Enviar"> <INPUT TYPE ="RESET" NAME = "botonLimpiar" VALUE="Limpiar"> </div> </BODY> </HTML>

Vista AltasSuscriptores.htm

AltasSuscriptor.java //fichero ServletOpinion2 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class AltasSuscriptor extends HttpServlet { //Declaración de variables miembro private String claves = null; private String asnombrecliente = null; private String asapellidos = null; private String asdireccion = null; private String asestado = null; private String ascodigoPostal = null; private String astelefono = null; private String astargeta = null;

Page 42: TIENDA VIRTUAL DE REVISTAS

42

private String asciudad = null; private String asfechaInscripcion = null; private String asobservaciones = null; //Referencia a un objeto de la interface java.sql.Connection Connection conn = null; //El siguiente metodo se ejecuta una única vez //(al ser inicializado el servlet por primera vez) //Se suelen inicializar variables y ejecutar operaciones //costosas rn tiempo de ejecución (abrir ficheros, etc.) public void init(ServletConfig config) throws ServletException { //llamada al metodo init() de la superclase (GenericServlet) //Así se asegura una correcta inicailización del servlet super.init(config); //dsn (Data Source Name) de la base de datos String dsn = new String("jdbc:odbc:revistasx"); //Carga del driver del puente JDBC-ODBC try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ex) { System.out.println("Error al cargar el driver"); System.out.println(ex.getMessage()); } //Establecimiento de la conexión con la b.d try { conn = DriverManager.getConnection(dsn,"",""); } catch(SQLException sqlEx) { System.out.println("Se ha producido un error al " + "establecer la conexión con : " + dsn); System.out.println(sqlEx.getMessage()); } System.out.println("Iniciando Servlet AltasSuscriptores (Versión BD)..."); } // fin del metodo init() //Este metodo es llamado por el servidor web al "apagarse" (al hacer /// shut down). //Sirve para proporcionar una correcta desconexión de una base de datos //Cerrar ficheros abiertos, etc. public void destroy(){ super.destroy(); System.out.println("Cerrando Conexión..."); try { conn.close(); }catch(SQLException ex) { System.out.println("No se pudo cerrar la conexión"); System.out.println(ex.getMessage()); } } //Fin del metodo destroy() //Metodo de llamada mediante un HTTP POST public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { boolean hayError = false; System.out.println("Estoy iniciando el servlet" + req.getRequestURI() + " Valor de Error: "+ hayError); //adquisisción de los valores del formulario

Page 43: TIENDA VIRTUAL DE REVISTAS

43

if(req.getParameter("nombrecliente") != null) asnombrecliente = req.getParameter("nombrecliente"); else hayError = true; if(req.getParameter("apellidos") != null) asapellidos = req.getParameter("apellidos"); else hayError = true; if(req.getParameter("direccion") != null) asdireccion = req.getParameter("direccion"); else hayError = true; if(req.getParameter("estado") != null) asestado = req.getParameter("estado"); else hayError = true; if(req.getParameter("codigoPostal") != null) ascodigoPostal = req.getParameter("codigoPostal"); else hayError = true; if(req.getParameter("telefono") != null) astelefono = req.getParameter("telefono"); else hayError = true; if(req.getParameter("targeta") != null) astargeta = req.getParameter("targeta"); else hayError = true; if(req.getParameter("ciudad") != null) asciudad = req.getParameter("ciudad"); else hayError = true; if(req.getParameter("observaciones") != null) asobservaciones = req.getParameter("observaciones"); else hayError = true; System.out.println("Termino de asignación de parametros de entrada en el" + " servlet" + " Valor de Error: "+ hayError); //Mandar al usuario los valores adquiridos // (Si no se ha producido error) if(!hayError) { if(actualizarBaseDeDatos()==0) devolverPaginaHTML(resp); else resp.sendError(500,"se ha producido un error " + "al almacenar la base de datos"); } else resp.sendError(500, "Se ha producido un error " +

Page 44: TIENDA VIRTUAL DE REVISTAS

44

"en la adquisisción de parametros"); } // fin de doPost public int actualizarBaseDeDatos() { // crea un statement de SQL Statement stmt = null; PreparedStatement sqlStatement = null; ResultSet resultado = null; int numeroFilasActualizadas=0; String cadena = ""; //Ejecución del query de actualización de la base de datos try { stmt = conn.createStatement(); numeroFilasActualizadas = stmt.executeUpdate("INSERT INTO"+ " suscriptores (nombrecliente, apellidos, direccion, estado,"+ " codigoPostal, telefono, targeta, ciudad, fechaInscripcion,"+ " observaciones) VALUES ('"+asnombrecliente+"','"+asapellidos+ "','"+asdireccion+ "','"+asestado+"','"+ascodigoPostal+ "','"+astelefono+"','"+astargeta+"','"+asciudad+ "','"+asfechaInscripcion+"','"+asobservaciones+"')"); if (numeroFilasActualizadas != 1 ) return -1; } catch(SQLException sql) { System.out.println("Se produjo un error creando el Statement"); System.out.println(sql.getMessage()); return -2; } finally { //se cierra el statement //if(stmt!= null) { if(sqlStatement!= null) { try { //stmt.close(); sqlStatement.close(); }catch(SQLException e){ System.out.println("Error cerrando Statement"); System.out.println(e.getMessage()); return -3; } } return 0; } // de finally } //del metodo public void devolverPaginaHTML(HttpServletResponse resp) { //Se obtiene un PrintWriter donde escribir (sólo para mandar texto) PrintWriter out=null; try { out=resp.getWriter(); } catch(IOException io) { System.out.println("Se ha producido una excepción"); } //Se establece el tipo de contenido MIME de la respuesta resp.setContentType("text/html"); //Se mandan los valores out.println("<html>"); out.println("<head>"); out.println("<title> Valores recogidos en le formulario</title>");

Page 45: TIENDA VIRTUAL DE REVISTAS

45

out.println("</head>"); out.println("<body>"); out.println("<font size=+2><b> VALORES DE ALTA DE SUSCRIPTOR </font></b>"); out.println("<BR><BR><BR><font size=+1><b>CLAVES : </b>" +claves+ "</font>"); out.println("<BR><BR><font size=+1><b>NOMBRE DEL CLIENTE : </b>"+ asnombrecliente+"</font><b><font size=+1></font></b>"); out.println("<BR><BR><font size =+1><b>APELLIDOS : </b>" + asapellidos + "</font>"); out.println("<BR><BR><font size =+1><b>DIRECCION : </b>" + asdireccion +"</font>"); out.println("<BR><BR><font size =+1><b>TELEFONO : </b>" + astelefono + "</font>"); out.println("<BR><BR><hr><center><h2> valores actualizados con exito</center>"); out.println("<BR><BR><font size =+1><b>No TARGETA : </b>" + astargeta + "</font>"); out.println("<BR><BR><font size =+1><b>CIUDAD : </b>" + asciudad + "</font>"); out.println("<BR><BR><a href= AltasSuscriptor.htm >Atrás</a>"); out.println("</body>"); out.println("</html>"); //se fuerza la descarga del buffer y se cierra el printWriter. //liberando recursos de esta forma. IMPORTANTE out.flush(); out.close(); } // fin de devolverPaginaHTML() //funcion que permite al servidor web obtener una peque¤a descripcion // del servlet, qu‚ cometido tiene, nombre del autor, comentarios //adicionales, etc. public String getServletInfo() { return "Este servlet lee los datos de un formulario" + "y los itroduce en una base de datos"; }//fin de getServletInfo() } //fin de la clase servletOpinion2

Vista AltasSuscriptores.class

Page 46: TIENDA VIRTUAL DE REVISTAS

46

AltasARevistas.jsp <%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <% // declarando y creando objetos globales Connection canal = null; ResultSet tabla= null; Statement instruccion=null; String sitiobase = "C:/Gaston/Tesis/Clases java y otros/revistas2.mdb"; String strcon= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sitiobase; String cveselect = ""; String strperiod = ""; String strprecio = ""; // detectando y cargando el objeto submit de html //if(request.getParameter("OK") != null) // abriendo canal o enlace en su propio try-catch try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Page 47: TIENDA VIRTUAL DE REVISTAS

47

canal=DriverManager.getConnection(strcon); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; %> <HTML> <HEAD> <TITLE> INSERTE SUS DATOS </TITLE> </HEAD> <BODY> <H3> <marquee behavior="alternate" bgcolor="#6699FF">BIENVENIDO, ALTA A REVISTAS </marquee> </H3><HR> <P> <FORM id="incRev" name="incRev" action= "http://localhost:8080/Sample/altasarevistas" method="POST"> <B>NOMBRE DEL CLIENTE:<INPUT TYPE="TEXT" NAME="nombrecliente"></B><BR><BR><BR> <B> APELLIDOS:</B><INPUT TYPE="TEXT" NAME="apellidos"><BR><BR> <BR> <A HREF="index.htm"><img src="image/time2006.gif" width="110" height="141" longdesc="image/time2006.gif" alt= "Atrás" ALIGN = RIGHT></A> <B>SELECCIONE LA REVISTA A LA CUAL DESEA SUSCRIBIRSE:</B><BR><BR> <B> REVISTA / PERIODO / PRECIO:</B><BR><BR> <% //leyendo tabla en disco y pasandola al resultset try { tabla = instruccion.executeQuery("select * from revistas"); // empezando a construir un combo out.println("<SELECT ID=claver NAME=claver >"); out.println("<OPTION>"); // mandando resultset a un combo while(tabla.next()) { out.println("<OPTION value = " + tabla.getString(1) + ">" + tabla.getString(2) + " / " + tabla.getString(3) + " / " + tabla.getString(4)); } out.println("</SELECT>"); // cerrando resultset tabla.close(); instruccion.close(); canal.close(); //fin try no usar ; al final de dos o mas catchs } catch(SQLException e) {} %> <BR><BR> <INPUT TYPE ="SUBMIT" NAME = "botonEnviar" VALUE="Enviar"> <INPUT TYPE ="RESET" NAME = "botonLimpiar" VALUE="Limpiar"> <P ALIGN = "CENTER"><A HREF="RevYPrecios.jsp" >Ver más Revistas</A></P> </form> </BODY> </HTML>

Page 48: TIENDA VIRTUAL DE REVISTAS

48

Vista AltaARevistas.jsp

AltaARevistas.java //fichero ServletOpinion2 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import java.lang.Integer;

public class AltasARevistas extends HttpServlet { //Declaración de variables miembro private String vclaves = null; private String vclaver = null; private String vnombrerevista = null; private String vnombrecliente = null; private String vapellidos = null; private String vperioricidad = null; private String vcosto = null; //Referencia a un objeto de la interface java.sql.Connection Connection conn = null;

//El siguiente metodo se ejecuta una única vez //(al ser inicializado el servlet por primera vez)

Page 49: TIENDA VIRTUAL DE REVISTAS

49

//Se suelen inicializar variables y ejecutar operaciones //costosas rn tiempo de ejecución (abrir ficheros, etc.) public void init(ServletConfig config) throws ServletException { //llamada al metodo init() de la superclase (GenericServlet) //Así se asegura una correcta inicailización del servlet super.init(config); //dsn (Data Source Name) de la base de datos String dsn = new String("jdbc:odbc:revistasx"); //Carga del driver del puente JDBC-ODBC try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ex) { System.out.println("Error al cargar el driver"); System.out.println(ex.getMessage()); } //Establecimiento de la conexión con la b.d try { conn = DriverManager.getConnection(dsn,"",""); } catch(SQLException sqlEx) { System.out.println("Se ha producido un error al" + "establecer la conexión con : " + dsn); System.out.println(sqlEx.getMessage()); } System.out.println("Iniciando ServletOpinion (Versión BD)..."); } // fin del metodo init() //Este metodo es llamado por el servidor web al "apagarse" (al hacer /// shut down). //Sirve para proporcionar una correcta desconexión de una base de datos //Cerrar ficheros abiertos, etc. public void destroy(){ super.destroy(); System.out.println("Cerrando Conexión..."); try { conn.close(); }catch(SQLException ex) { System.out.println("No se pudo cerrar la conexión"); System.out.println(ex.getMessage()); } } //Fin del metodo destroy() //Metodo de llamada mediante un HTTP POST public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { boolean hayError = false; //adquisisción de los valores del formulario System.out.println("VALOR DE CLAVER : " + req.getParameter("claver")); if(req.getParameter("claver") != null) vclaver = req.getParameter("claver"); else hayError = true; System.out.println("VALOR DE NOMBRE DEL CLIENTE : " + req.getParameter("nombrecliente")); if(req.getParameter("nombrecliente") != null) vnombrecliente = req.getParameter("nombrecliente");

Page 50: TIENDA VIRTUAL DE REVISTAS

50

else hayError = true; System.out.println("VALOR DE APELLIDOS : " + req.getParameter("apellidos")); if(req.getParameter("apellidos") != null) vapellidos = req.getParameter("apellidos"); else hayError = true; System.out.println("TERMINO DE CARGADO DE PARAMETROS "); if(!hayError) { if(validaDatosBaseDeDatos()==0 && actualizarBaseDeDatos()==0) devolverPaginaHTML(resp); else resp.sendError(500,"se ha producido un error" + "al almacenar la base de datos"); } else resp.sendError(500, "Se ha producido un error" + "en la adquisisción de parametros"); } // fin de doPost public int validaDatosBaseDeDatos() { // crea un statement de SQL Statement stmt = null; ResultSet rs = null; Integer i = new Integer(vclaver); long l = i.longValue(); //Ejecución del query de actualización de la base de datos try { stmt = conn.createStatement(); System.out.println("SELECCIÓN DEL QUUERY :" + l); rs = stmt.executeQuery("SELECT * FROM suscriptores s, revistas r "+ "WHERE s.nombrecliente = '"+vnombrecliente+"' AND s.apellidos = '"+vapellidos+"' AND r.claver = " + l); System.out.println("INICIO DE ASIGNACIÓN DE VALORES DE LA TABLA ... "); while(rs.next()) { vclaves = rs.getString("claves"); System.out.println("VALORE RECUPERADO DE LA TABLA vclaves: " + vclaves ); vclaver = rs.getString("claver"); System.out.println("VALORE RECUPERADO DE LA TABLA vclaver : " + vclaver ); vnombrerevista = rs.getString("nombrerevista"); System.out.println("VALORE RECUPERADO DE LA TABLA vnombrerevista : " + vnombrerevista );

Page 51: TIENDA VIRTUAL DE REVISTAS

51

vnombrecliente = rs.getString("nombrecliente"); System.out.println("VALORE RECUPERADO DE LA TABLA vnombrecliente : " + vnombrecliente ); vapellidos = rs.getString("apellidos"); System.out.println("VALORE RECUPERADO DE LA TABLA vapellidos : " + vapellidos ); vperioricidad = rs.getString("perioricidad"); System.out.println("VALORE RECUPERADO DE LA TABLA vperioricidad : " + vperioricidad ); vcosto = rs.getString("costo"); System.out.println("VALORE RECUPERADO DE LA TABLA vcosto : " + vcosto ); } System.out.println("FIN DE ASIGNACIÓN DE VALORES DE LA TABLA ... "); } catch(SQLException sql) { System.out.println("Se produjo un error creando Statement"); System.out.println(sql.getMessage()); return -2; } finally { //se cierra el statement if(stmt!= null) { try { stmt.close(); }catch(SQLException e){ System.out.println("Error cerrando Statement"); System.out.println(e.getMessage()); return -3; } } return 0; } // de finally } //del metodo public int actualizarBaseDeDatos() { // crea un statement de SQL Statement stmt = null; int numeroFilasActualizadas=0; //Ejecución del query de actualización de la base de datos try { stmt = conn.createStatement(); System.out.println("INICIO DE ASIGNACIÓN DEL QUERY DE INSERT... "); numeroFilasActualizadas = stmt.executeUpdate("INSERT INTO"+ " suscripciones ( claves, claver, nombrerevista, nombrecliente, apellidos, perioricidad, costo )" + " VALUES ('"+vclaves+"','"+vclaver+"','"+vnombrerevista+ "','"+vnombrecliente+"','"+vapellidos+ "','"+vperioricidad+ "','" +vcosto+"')"); System.out.println("FIN DE ASIGNACIÓN DEL QUERY DE INSERT... "); if (numeroFilasActualizadas != 1 ) return -1;

Page 52: TIENDA VIRTUAL DE REVISTAS

52

} catch(SQLException sql) { System.out.println("Se produjo un error creado Statement"); System.out.println(sql.getMessage()); return -2; } finally { //se cierra el statement if(stmt!= null) { try { stmt.close(); }catch(SQLException e){ System.out.println("Error cerrando Statement"); System.out.println(e.getMessage()); return -3; } } return 0; } // de finally } //del metodo public void devolverPaginaHTML(HttpServletResponse resp) { //Se obtiene un PrintWriter donde escribir (sólo para mandar texto) PrintWriter out=null; try { out=resp.getWriter(); } catch(IOException io) { System.out.println("Se ha producido una excepción"); } //Se establece el tipo de contenido MIME de la respuesta resp.setContentType("text/html"); //Se mandan los valores out.println("<html>"); out.println("<head>"); out.println("<title> Valores de la Inserción</title>"); out.println("</head>"); out.println("<body>"); out.println("<H3>"); out.println("<marquee behavior=alternate bgcolor=#6699FF>DADO DE ALTA A LA REVISTA </marquee>"); out.println("</H3>"); out.println("<HR>"); out.println("<BR><A HREF=AltasARevistas.jsp><img src=image/time2006.gif width=110 height=141 longdesc=image/time2006.gif alt= Atrás ALIGN = RIGHT></A>"); out.println("<BR><font size=+1><b> VALORES DE LA SUSCRIPCION </b></font>"); out.println("<BR><BR><BR><font size=+1><b>CLAVE DE SUSCRIPCION : </b>" +vclaves+ "</font>"); out.println("<BR><BR><font size=+1><b>CLAVE DE REVISTA : </b>" +vclaver+ "</font>"); out.println("<BR><BR><font size=+1><b>NOMBRE DE REVISTA : </b>"+ vnombrerevista+"</font>"); out.println("<BR><BR><font size=+1><b>NOPMBRE DE CLIENTE : </b>"+ vnombrecliente+ "</font>"); out.println("<BR><BR><font size =+1><b>APELLIDOS : </b>" + vapellidos + "</font>"); out.println("<BR><BR><font size =+1><b>PERIODO : </b>"+vperioricidad+"</font>"); out.println("<BR><BR><font size =+1><b>COSTO : </b>" +vcosto+ "</font>"); out.println("</body>");

Page 53: TIENDA VIRTUAL DE REVISTAS

53

out.println("</html>"); //se fuerza la descarga del buffer y se cierra el printWriter. //liberando recursos de esta forma. IMPORTANTE out.flush(); out.close(); } // fin de devolverPaginaHTML() //funcion que permite al servidor web obtener una peque¤a descripcion // del servlet, qu‚ cometido tiene, nombre del autor, comentarios //adicionales, etc. public String getServletInfo() { return "Este servlet lee los datos de un formulario" + "y los itroduce en una base de datos"; }//fin de getServletInfo()

} //fin de la clase servletOpinion2 Vista de AltaARevistas.class

RevYPrecios.jsp <%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <% // declarando y creando objetos globales Connection canal = null; ResultSet tabla= null;

Page 54: TIENDA VIRTUAL DE REVISTAS

54

Statement instruccion=null; String sitiobase = "C:/Gaston/Tesis/Clases java y otros/revistas2.mdb"; String strcon= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sitiobase; String cveselect = ""; String strperiod = ""; String strprecio = ""; // detectando y cargando el objeto submit de html //if(request.getParameter("OK") != null) // abriendo canal o enlace en su propio try-catch try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); canal=DriverManager.getConnection(strcon); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; %> <HTML> <HEAD> <TITLE> INFORMACION DE REVISTAS EXISTENTES </TITLE> </HEAD> <BODY> <H3> <marquee behavior="alternate" bgcolor="#6699FF">BIENVENIDO, REVISTAS EXISTENTES </marquee> </H3><HR> <P> <BR> <A HREF="AltasARevistas.jsp"><img src="image/revistanumero0025.gif" width="110" height="141" longdesc="image/time2006.gif" alt= "Atrás" ALIGN = RIGHT></A> <B> LOS DATOS PUEDEN CAMBIAR SIN PREVIO AVISO </B><BR><BR> <% //leyendo tabla en disco y pasandola al resultset try { tabla = instruccion.executeQuery("select * from revistas where status = true"); // empezando a construir una tabla html out.println("<TABLE Border=10 CellPadding=5><TR>"); out.println("<th bgcolor=Green> NOMBRE </th><th bgcolor=White> PERIODO </th><th bgcolor=Red> PRECIO </th></TR>"); // mandando resultset a una tabla html // y ciclo de lectura del resultset while(tabla.next()) { out.println("<TR>"); out.println("<TD>"+tabla.getString(2)+"</TD>");

Page 55: TIENDA VIRTUAL DE REVISTAS

55

out.println("<TD>"+tabla.getString(3)+"</TD>"); out.println("<TD>"+tabla.getString(4)+"</TD>"); out.println("</TR>"); }; // fin while out.println("</TABLE></CENTER></DIV></HTML>"); // cerrando resultset tabla.close(); instruccion.close(); canal.close(); //fin try no usar ; al final de dos o mas catchs } catch(SQLException e) {} %> <P ALIGN = "CENTER"><A HREF="Consultas2.htm" >Ir a Consultas Generales</A></P> </BODY> </HTML>

Vista del RevYPrecios.jsp

Consultas.htm <html> <head> <title>CONSULTAS DE REVITAS </title> </head> <body>

Page 56: TIENDA VIRTUAL DE REVISTAS

56

<H3><marquee behavior="alternate" bgcolor="#6699FF">ESTA UD. EN EL AREA DE CONSULTAS</marquee> </H3><HR> <BR> SELECCIONE UNA DE LAS DOS OPCIONES PARA VER INFORMACION REFERENTE A LAS REVISTAS <BR><BR> <BR><A HREF="index.htm"><img src="image/revistanumero0026.gif" width="110" height="141" longdesc="image/revistanumero0026.gif" alt= "Atrás" ALIGN = RIGHT></A> <a Href= "Consultas2.htm">1.- VERIFICAR REVISTAS DISPONIBLES</a><br><br> <a Href = "InformaSuscripciones.jsp">2.-VERIFICAR MIS SUSCRIPCIONES A REVISTAS.</a> <BR><BR><BR> Estamos en contrucción... </body> </html>

Vistas de Consultas.htm

Consultas2.htm <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Bienvenido</title> </head> <body>

Page 57: TIENDA VIRTUAL DE REVISTAS

57

<H3><marquee behavior="alternate" bgcolor="#6699FF">LISTA DE REVISTAS DISPONIBLES</marquee></H3> <hr><br> <input type="radio" name="revistax" value="revistax" checked>Ver las revista disponibles <form action="http://localhost:8080/Sample/RevYPrecios.jsp" method="POST"> <BR><A HREF="Consultas.htm"><img src="image/revistanumero0027.gif" width="110" height="141" longdesc="image/revistanumero0026.gif" alt= "Atrás" ALIGN = RIGHT></A> <BR><input type = "submit" name = "Enviar" Value="VerRevistas"> </form> </body> </html>

Vista de Consultas2.htm

InformaSuscripciones.jsp <%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <% // declarando y creando objetos globales Connection canal = null; ResultSet tabla= null; Statement instruccion=null; String sitiobase = "C:/Gaston/Tesis/Clases java y otros/revistas2.mdb"; String strcon= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sitiobase; String cveselect = "";

Page 58: TIENDA VIRTUAL DE REVISTAS

58

String strperiod = ""; String strprecio = ""; // detectando y cargando el objeto submit de html //if(request.getParameter("OK") != null) // abriendo canal o enlace en su propio try-catch try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); canal=DriverManager.getConnection(strcon); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; %> <HTML> <HEAD> <TITLE> INFORMACION ACTUALIZADA </TITLE> </HEAD> <BODY> <H3> <marquee behavior="alternate" bgcolor="#6699FF">BIENVENIDO, INFORMACION DE SUSCRIPCIONES ACTUALES</marquee> </H3><HR> <P> <BR> <A HREF="Consultas.htm"><img src="image/rev21.gif" width="110" height="141" longdesc="image/time2006.gif" alt= "Atrás" ALIGN = RIGHT></A> <B> DATOS DE SUSCRIPCIONES ACTUALES </B><BR><BR> <% //leyendo tabla en disco y pasandola al resultset try { tabla = instruccion.executeQuery("select * from suscripciones"); // empezando a construir una tabla html out.println("<TABLE Border=10 CellPadding=5><TR>"); out.println("<th bgcolor=Green>NOMBRE DE REVISTA </th><th bgcolor=White>NOMBRE DE CLIENTE </th><th bgcolor=Red>APELLIDOS </th><th bgcolor=Green>PERIRISIDAD </th><th bgcolor=White>COSTO </th></TR>"); // mandando resultset a una tabla html // y ciclo de lectura del resultset while(tabla.next()) { out.println("<TR>"); out.println("<TD>"+tabla.getString(3)+"</TD>"); out.println("<TD>"+tabla.getString(4)+"</TD>"); out.println("<TD>"+tabla.getString(5)+"</TD>");

Page 59: TIENDA VIRTUAL DE REVISTAS

59

out.println("<TD>"+tabla.getString(6)+"</TD>"); out.println("<TD>"+tabla.getString(7)+"</TD>"); out.println("</TR>"); }; // fin while out.println("</TABLE></CENTER></DIV></HTML>"); // cerrando resultset tabla.close(); instruccion.close(); canal.close(); //fin try no usar ; al final de dos o mas catchs } catch(SQLException e) {} %> <P ALIGN = "CENTER"><A HREF="Consultas2.htm" >Ir a Consultas Generales</A></P> </BODY> </HTML>

Vista del InformaSuscripciones.jsp

ServletVerPub.htm <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Pagina nueva 1</title>

Page 60: TIENDA VIRTUAL DE REVISTAS

60

</head> <body> <H3><marquee behavior="alternate" bgcolor="#6699FF">INFORMACIÓN ADICIONAL</marquee></H3> <HR> <center><h3><b>1.- Noticias actuales</b></h3></center><br> <center><h3><b>2.- Promociones</b></h3></center><br> <center><h3><b>3.- Contactos</b></h3></center><br> </body> </html>

Vista de ServletVerPub.htm

Algunas de las Imágenes usadas en proyecto

Estas imágenes son algunas de las que use en el desarrollo de la aplicación, como ligas para el llamado a paginas html, jsp. Estas imágenes además de ser útiles para darle funcionalidad a la aplicación, ayudan a dar una mejor presentación al diseño de la misma. La presentación es una de las armas de la mercadotecnia, esto es, el uso de un buen diseño ayuda a reforzar la imagen que quedará grabada en la mente de las personas, lo que ayudará a que se aumente la productividad.

Page 61: TIENDA VIRTUAL DE REVISTAS

61

continued.GIF

swing.GIF

second-edition.GIF

time2006.GIF

revistanumero0025.GIF

Referencias http://en.wikipedia.org/wiki/JBuilder http://www.idg.es/pcworld/Borland_JBuilder_3,_herramienta_para_diseno_de_apl/art101183.htm

Page 62: TIENDA VIRTUAL DE REVISTAS

62

http://es.wikipedia.org/wiki/Microsoft_Office_2007 http://es.wikipedia.org/wiki/Microsoft_Access http://translate.google.com.mx/translate?hl=es&langpair=en|es&u=http://www.simplyguides.net/guides/office_2007_install/office_2007_install.shtml&prev=/translate_s%3Fhl%3Des%26q%3Dinstalaci%25C3%25B3n%2Bde%2BMicrosoft%2BOffice%2B2007%26tq%3Dinstallation%2Bof%2BMicrosoft%2BOffice%2B2007%26sl%3Des%26tl%3Den http://es.wikipedia.org/wiki/Apache_Tomcat