MANUAL Aplicaciones Cliente Servidor 2010

Embed Size (px)

Citation preview

DEPARTAMENTO DE INGENIERIA EN COMPUTACIN TCNICO EN INGENIERIA DE SISTEMAS INFORMTICOS

PRIMERA EDICIN SANTA TECLA, JUNIO DEL 2010 DOCENTE ALUMN@ SECCIN CICLO :___________________________________ :___________________________________ :___________________________________ :___________________________________

INSTRUCTOR :___________________________________

Reglam mento de Centro de Comp el puto

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.

Cada estudian es responsable del uso adecuado del mobiliar y equipo instalado en el C nte rio Centro de Cm C mputo. Antes de iniciar su prctica verifique qu su equipo est complet y en buen estado. A a ue to Comunicar inmediatament al docente o instructor sobre posib C te e r bles fallas en el mobiliario y o equipo. e Presentarse puntualmente al Centro de Cmputo c P p e con su respec ctivo manual de prcticas y l s su s diskette de trabajo. e Portar su carn de iden P ntificacin, ta alonario u o otro documento que lo acredite com mo estudiante activo del ITCA e A. Ingresar al Ce entro de cmputo nicamente cuando su instructor est presente. r Se prohbe totalmente la instalaci S n o desins stalacin de software, as como las e modificacione en la config m es guracin del equipo. Se S prohbe ac cceder al Inte ernet durante la hora de p e prctica. Se S prohbe fumar y/o ingre esar alimento o bebidas en el Centro de Cmputo. os Evitar el uso de aparatos d sonido, ce E d de elulares y bee epers durante la prctica. e Se S prohbe reproducir CD de msica en el Centro de Cmputo s o. No N se permite los juegos de computad en doras, ver po ornografa ni usar salas de chat. e Se S prohbe ing gresar partes o accesorios de computa s s adoras. No N botar o esparcir basura a. No N manipular los controles del aire aco s ondicionado. No N se permite levantarse i e innecesariam mente durante la prctica e Se S prohbe maquillarse o p peinarse dent del Centro de Cmputo. tro o Retirarse de la prctica en el momento que el instru R n o uctor le indique. Antes de retirarse del Centro de Cm A mputo, revise su rea de trabajo, ver rificando que el equipo quede apagado. e El E instructor no se har responsable de objetos olvidados en el C n e Centro de Cmputo. El E incumplimie ento de las re eglas anterio ores conllevar a la suspen r nsin tempor o la ral retribucin monetaria seg el dao ca r n ausado.

Tec. En Ingeniera en Sistem T mas

Co ontenido

Conteni idoClase N 1 Conceptos Gener rales Aplicaciones Clien nteServido or. Gua P Prctica N 1 Instalaci in del IDE (Entorno de Desarrollo Integrado) e o ) y Aplic caciones b sicas con Ja ava. Clase N 2 Eleme entos bsico de lengua os ajes de prog gramacin e ambiente en e cliente e/servidor Gua P Prctica N 2 Estructur ras de contr de JAVA: if, swich, fo while. rol or, Clase N 3 Clases Atributos , Mtodos y Manejo de Excepcione s, s e es. Gua P Prctica N 3 Clases, A Atributos , M Mtodos y Ma anejo de Ex xcepciones. Clase N 4 Introd duccin a la interfaz Gra afica y Mode de Event elo tos Gua P Prctica N 4 Esquema de una apli icacin orientada a eve entos Clase N 5 Desarr rollo de Inte erfaces. Gua P Prctica N 5 Desarroll de Interfa lo aces. Clase N 6 Introd duccin a la Tecnologa JSP Gua P Prctica N 6 Introducc cin a Java Server Page es Clase N 7 JSP co bases de datos on Gua P Prctica N 7 JSP con B Bases de Da atos Clase N 8 Manejo de sesione y cookies con JSP es s Gua P Prctica N 8 Manejo d sesiones y cookies co JSP de on Clase N 9 Introd duccin a Se ervlets Gua P Prctica N 9 Servlets B Bsico Clase N 10 Acce eso a Base d Datos con Java Servl de n lets Gua Prctica N 10 Bases de Dat N tos con Ja ava Servlet ts (Uso de e Excep pciones) Clase N 11 Utilid dades para p programar e JAVA Ser en rvlets Gua P Prctica N 11 Grficos en Aplicaciones de Jav va

Pagina5 9 16 22 26 35 38 41 44 47 49 55 61 66 72 80 85 94 103 108 115 121

Aplicaciones Cliente Servidor S

Pgina 3.

Tec. En Ingeniera en Sistem T mas

Sistema de Evalu uacin Aplicacione Cliente Servidor es e

DEPAR RTAMENT DE IN TO NGENIERI EN CO IA OMPUTACION

ACTIVIDA AD EVALU UACIN TEOR RICA 1 EVALU UACIN TEOR RICA 2 EVALU UACIN TEOR RICA FINAL TOTAL TEORIA (40%) AL

PONDERACI N 30% 35% 35% 100%

FECHA mana 4 Sem Sem ana 8 Sema ana 14

CONT TENIDO Unid 1 dad Unid 2 dad Unia adad 3

EVALU UACIN PRAC TICA 1 EVALU UACIN PRAC TICA 2 EVALU UACIN PRAC TICA 3 PROY YECTO TOTAL PRACTICA ( AL (60%)

15% 15% 20% 50% 100%

Sem mana 4 Sem ana 8 Sems sna 14 Sema ana 16

Unid 1 dad Unid 2 dad Unid 3 dad Proy yecto

Aplicaciones Cliente Servidor S

Pgina 4.

Tec. En Ingeniera en Sistem T mas

Cla ase N 1 Conce eptos Ge enerales A Aplicacio ones Client teServid dor.TIVOS OBJET Al final lizar la clase, el estudiante ser capaz d e de: Definir conc ceptos de apl licaciones clie ente servidor r. Exponer ventajas y desv ventajas de a aplicaciones c clientes servid dor. Identificar diferentes tec d cnologas de Java como le enguaje de ap plicaciones cl liente servido or.

RROLLO DESAR

CLIENTE SERV VIDOR.Modelo Cliente servidor: divide las aplicaciones comunica antes en do categora os as, ndiendo de si la aplica acin se queda en esp pera de con nexiones (se ervidor) o l las depen inicia (cliente). eneral, una aplicacin que inicia u una comuni icacin con otra se la califica com mo En ge cliente Los usuarios finales invocan aplicaciones cliente cuand utilizan u servicio de e. do un red. C Cada vez qu se ejecut una aplic ue ta cacin client esta con te, ntacta con e servidor, le el enva una solicit tud de serv vicio y espe era la resp puesta o resultados de servicio. El el proces cliente es el encarg so e gado de llevar a cabo la interacc cin con el usuario y de mostr los result rar tados de las peticiones de servicio En la may s s o. yora de las ocasiones l los cliente son mas fciles de d es disear que los servido ores, y no suelen precis privilegi sar ios especiales del sistema para p poder funcio onar. dor rograma qu espera pe ue eticiones de servicio po parte de un cliente. El e or Servid es un pr servid dor recibe la peticin del cliente ejecuta e servicio solicitado y retorna l l e, el los resulta ados al clien nte. No exis una inter ste raccin directa entre el usuario y e servidor, de el esto y se encarg la aplicac ya ga cin cliente.

Aplicaciones Cliente Servidor S

Pgina 5.

Tec. En Ingeniera en Sistemas

Las aplicaciones emplean el modelo cliente-servidor donde las funciones como, los inicios de sesin y el almacenamiento de datos pueden residir en sistemas diferentes. Caractersticas de un cliente Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicacin (dispositivo maestro o amo). Espera y recibe las respuestas del servidor. Por lo general, puede conectase a varios servidores a la vez. Normalmente interacta directamente con los usuarios finales mediante una interfaz grfica de usuario(GUI). Caractersticas de un servidor Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempean entonces un papel pasivo en la comunicacin (dispositivo esclavo). Tras la recepcin de una solicitud, la procesan y luego envan la respuesta al cliente. Por lo general, aceptan conexiones desde un gran nmero de clientes (en ciertos casos el nmero mximo de peticiones puede estar limitado). No es frecuente que interacten directamente con los usuarios finales. Ventajas Centralizacin del control: Los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda daar el sistema. Esta centralizacin tambin facilita la tarea de poner al da datos u otros recursos. Escalabilidad: Se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden aadir nuevos nodos a la red (clientes y/o servidores). Fcil mantenimiento: Al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se vern afectados por ese cambio (o se afectarn mnimamente). Esta independencia de los cambios tambin se conoce como encapsulacin. Desventajas Congestin del trfico: cuando una gran cantidad de clientes envan peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para ste (a mayor nmero de clientes, ms problemas para el servidor). Centralizacin de recursos: cuando un servidor est fuera de lnea, apagado o ha tenido algn problema para el inicio, las peticiones de los clientes no pueden ser satisfechas. El software y el hardware: son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware especfico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentar el coste.

Aplicaciones Cliente Servidor

Pgina 6.

Tec. En Ingeniera en Sistemas

Qu es JAVA? Java es un lenguaje de programacin de Alto nivel independiente de la plataforma. Que se desarrolla en principios para la creacin de aplicaciones que sean independientes del hardware en que se ejecuta y que poseen pocos recursos. Java elimina todas aquellas instrucciones y funciones imprescindibles que en muchas ocasiones son causantes de errores logrando mantener todas las caractersticas de un lenguaje de alto nivel. En 1995 es lanzado como una novedad para la creacin de aplicaciones pero no se queda como un lenguaje para la creacin de aplicaciones de escritorio, gracias al auge del Internet se descubre otra caracterstica que marco el rumbo del posicionamiento de java como un lenguaje para la creacin de contenidos para la Web y es as que para 1996 a travs de Netscape 2.0, y la Web ya no volvi a ser lo mismo. Uno de los mensajes comerciales de Java fue Escribir una vez, funcionar en cualquier lugar. En teora el programa solo debe codificarse una vez, y debe funcionar en cualquier maquina con soporte Java para Windows y Unix, mientras que Apple controla la versin Macintosh. Originalmente. Mquina Virtual de Java Uno de los acrnimos ms empleados en Java es JVM, que procede del trmino en ingls Java Virtual Machine (Mquina Virtual Java). Entender que tiene Java de especial los programas Java no hablan directamente a la computadora, sino que lo hacen a la JVM, que a su vez se encarga de comunicarse con aqulla. La JVM es como un traductor entre el cdigo Java y la computadora, la razn por la cual dicho cdigo es considerado como un cdigo interpretado en lugar compilado(es decir especfico de una mquina). La JVM es un programa especfico que se ejecuta en la computadora. Su nico propsito es tomar programas Java y convencer a la computadora de que lo que esta ejecutando es algo que se a desarrollado especficamente para ella.

Aplicacin Java

Mquina Virtual Windows

Mquina Virtual Macintosh

Mquina Virtual UNIX

PC

Mac

UNIX

En conclusin Java puede ejecutarse en cualquier hardware, razn por la cual existe una Mquina Virtual Java, o JVM funcionando en el.

Aplicaciones Cliente Servidor

Pgina 7.

Tec. En Ingeniera en Sistemas

Caractersticas de Java Java es simple. Destaca por su robustez. Es interpretado. Java es distribuido. Ante todo es portable. Con una arquitectura independiente (neutral). Un lenguaje orientado a objetos. Adems, es dinmico. Su seguridad es muy alta. Permite actividades simultneas. Tecnologas aplicadas de Java: J2SE (Java 2 Standard Edition): Es una coleccin de Applets del lenguaje de programacin Java tiles para muchos programas de la Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases en el Java SE, adems de algunas de las cuales son tiles para programas que se ejecutan en servidores sobre Estaciones de Trabajo. J2ME (Java 2 Micro Edition): Es una coleccin de Applets de Java para el desarrollo de software para dispositivos de recursos limitados, como PDA, telfonos mviles y otros aparatos de consumo. J2EE (Java 2 Enterprise Edition): Es una plataforma de programacin para desarrollar y ejecutar software de aplicaciones en Java con arquitectura de N niveles distribuidos, basndose ampliamente en componentes de software modulares ejecutndose sobre un servidor de aplicaciones. Tarea: Investigar y hacer un resumen con todas las caractersticas de java. Hacer un cuadro comparativo con las tecnologas aplicadas de java.

Aplicaciones Cliente Servidor

Pgina 8.

Tec. En Ingeniera en Sistem T mas

Gua P Prctica N 1 No Instalac cin del IDE (Ento orno de D Desarrollo Integra o ado) y s a. Aplicaciones bsicas con JavaTIVOS OBJET Al final lizar la prctic el estudian ser capa de: ca, nte az Inst talar y config gurar el entor rno de desarr rollo de aplica aciones en Ja ava. Utilizar los componentes bsicos del IDE de program macin para la creacin de apli icaciones en J Java. Crear programas bsicos con Java. n

PROCEDIMIENTO

Un entorno de desarrollo in n ntegrado o en ingls Integrated Development Environment (ID n DE) es un entorno de programacin que ha sido empaqu d uetado como un programa de aplicaci a n, es decir, consis en un edi ste itor de cdigo, un compilador, un dep purador y un constructor de int terfaz grfica GUI (Interfa Grfica de Usuario) e in az nterprete. Para el desarro ollo de nues stras aplicacio ones usarem mos el NETBA ANS un IDE con el que se sencilla. puede trabajar Java de una forma muy s El NetBeans IDE es un ento orno de desar rrollo, una he erramienta pa programa ara adores pensa ada para escribir, compilar, depurar y ejecutar program c mas. Est es scrito en Jav va, pero pue ede ser rvir para cualquier otro le enguaje de pr rogramacin. El IDE NetB . Beans es un p producto libre y e gra atuito sin restricciones de uso.

Pa asos para la instala acin del N NetBeansAntes de instalar el NetBeans neces sitamos tene instalado el JSDK ( er (Java Softwa are De evelopmnet Kit). K Para instalarlo daremos dob clic en el icono siguient d ble te

Ap parecer la pantalla de bienvenida del p ins stalador com mo la que se muestra a con ntinuacin.

Aplicaciones Cliente Servidor S

Pgina 9.

Tec. En Ingeniera en Sistemas

Despus de un instante de espera aparecer una ventana con la licencia la cual debemos aceptar dando clic en Accept.

Despus de aceptar la licencia aparecer otra ventana que indica los componentes que se instalarn y la direccin donde lo har, solamente presionaremos Next (Si lo desea puede cambiar la direccin dando clic en Change).

Al instante aparecer una ventana que indica el estado de la instalacin, esperaremos unos instantes para que termine de instalar todos los componentes.

Luego solo nos resta dar clic en Finish como lo muestra en la imagen.

Aplicaciones Cliente Servidor

Pgina 10.

Tec. En Ingeniera en Sistemas

Ahora que ya instalamos el JSDK podemos instalar el NetBeans para ello haremos lo siguiente:

De doble clic en el instalador del NetBeans Aparecer una ventana indicando que se esta Configurando el Instalador como la siguiente:

La ventana siguiente es la pantalla principal del instalador donde se muestra la versin que estamos instalando del NetBeans y las tecnologas que podemos trabajar con el en esta pantalla debemos dar clic en Next.

Aparecer la licencia del NetBeans la cual debemos aceptar dando clic en I accept the terms y se activa el botn Next.

Luego nos mostrar la ruta donde se instalar el NetBeans dejaremos las direcciones que se muestran en la pantalla y demos clic en Next, (Si lo desea puede cambiar la ruta de instalacin)

Aplicaciones Cliente Servidor

Pgina 11.

Tec. En Ingeniera en Sistemas

En ocasiones aparecer una alerta de seguridad la que preguntar si deseamos bloquear Java[TM] Platform SE binary para no tener problemas posteriores daremos clic en Desbloquear.

A continuacin nos pedir la configuracin de los parmetros del servidor Web simplemente dejaremos las opciones tal como estn y presionamos Next.

Luego nos mostrara la siguiente pantalla donde daremos clic en Install

Aparecer una ventana que nos muestra el estado de la instalacin y debemos esperar ya que esto tomara un par de minutos.

Durante la instalacin podra aparecer otra Alerta de seguridad simplemente has clic en Desbloquear si esto sucede. Al final daremos clic en Finish.

Aplicaciones Cliente Servidor

Pgina 12.

Tec. En Ingeniera en Sistemas

Terminada la instalacin ya estamos preparados para utilizar el NetBeans al ejecutar la aplicacin que se encuentra en inicio > todos los programas >NetBeans>NetBeans IDE 6.1 nos aparece esta pantalla que es la ventana principal del IDE. Descrpcion de la ventana del IDE.

2

3

1

4

5

61. 2. 3. 4. 5. 6. Barra de Men. Barra de Herramientas rea de Trabajo (codificacin y diseo). Navegador de proyectos. Navegador de Elementos de la Clase. Salidas o resultados.

Para la creacin de aplicaciones con el IDE lo primero que crearemos ser un proyecto el cual nos servir para almacenar todas las clases y elementos que creemos para nuestra aplicaron en Java. Esto lo hacemos desde File>New Project. o damos clic en el icono en la barra de herramientas. Lo que haremos al hacer cualquiera de estas acciones ser seleccionar el tipo de proyecto (en nuestro caso ser Categories:Java; projects:Java Application) definiremos el nombre y la ubicacin del proyecto. Hecho esto ya podemos empezar a crear las clases que sern la base de nuestros programas. Para Crear una clase lo haremos desde File>New File. O en el icono de la barra de men al igual que el proyecto seleccionamos el tipo de archivo (en nuestro caso ser Categories:Java; File Types:Java Class) y definimos el nombre. Terminado este proceso en el rea de trabajo aparecer una plantilla de una clase la cual solo nos queda definir los cdigos necesarios para su funcionamiento.

Primer programa en Java.Crearemos una clase denominada HolaMundo con la cual se muestra un mensaje en pantalla, el cdigo de la clase ser el siguiente.

Aplicaciones Cliente Servidor

Pgina 13.

Tec. En Ingeniera en Sistemas

HolaMundopublic class HolaMundo { public static void main(String[]args){ System.out.print("Hola Mundo"); } }

Lo nico que mostrara este programa es el mensaje Hola Mundo. Pero para hacer esto primero hay que compilar y despus ejecutar la clase como se hace esto lo podemos hacer de dos maneras ya sea por medio de la barra de men o con un metodomas facil que es por atajos del teclado. Proceso Compilar Ejecutar Barra de Men Build> Compile nombre de la clase.java Run > Run File > Run nombre de la clase.java Atajo de Teclado F9 Mayus+F6

Variables. public class Variables { public static void main(String[]args){ int dato1 = 10; double dato2 = 15.31213; float dato3 =1.2F; char dato4 = 'c'; boolean dato5 = true; String dato6 = "Desarrollo de aplicaciones"; short dato7=24; long dato8 = 45441557864L; System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo System.out.println("Tipo de de de de de de de de dato dato dato dato dato dato dato dato int valor: "+dato1); double valor: "+dato2); float valor: "+dato3); char valor: "+dato4); boolean valor: "+dato5); String valor: "+dato6); short valor: "+dato7); long valor: "+dato8);

} }

Variables2 public class Variables2 { public static void main(String[]args){ int dato1 = 10; int dato2 = 15; String msg="La Suma es: "; System.out.println(msg+(dato1+dato2)); } }

Aplicaciones Cliente Servidor

Pgina 14.

Tec. En Ingeniera en Sistemas

Operaciones public class Operaciones { public static void main(String[]args){ int a=10,b=3; System.out.println("la suma de a + b = "+(a+b));// 13 System.out.println("la resta de a - b = "+(a-b));// 7 System.out.println("la multiplicacion de a * b = "+(a*b));// 30 System.out.println("la division de a / b = "+(a/b)); // 3 System.out.println("el modulo de a % b = "+(a%b)); // 1 System.out.println(" de a > b = "+(a>b));// true System.out.println(" de a < b = "+(ab)&& (ab)|| (ab)|| !(a = Accion Igual Diferente Menor que Mayor que Menor que Mayor que o o igual igual Ejemplo 5==5 = true 6==5 = false 7!=5 = true 6!=6 = false 66 = false 6=6 = true

Aplicaciones Cliente Servidor

Pgina 20.

Tec. En Ingeniera en Sistemas

Operadores Lgicos.Estos evalan expresiones formadas por operandos que a su vez estn formados por expresiones y su resultado es un valor de verdad. Operador && Accion AND Conjuncin

Ejemploo (5"); %> Cule son las Ven es ntajas de JSP P? Cont tra Active Server Pages (ASP). S s ASP es una tecnolo s oga similar de Microsoft. Las ventaja de JSP es as stan duplicad das. Primero, la parte d dinmica est escrita en J Java, no en V Visual Basic, otro lenguaje especfico de MS, por e eso es mucho ms pod derosa y fcil de usar. S Segundo, es portable a o otros sistema operativos y as s servido ores Web Cont tra los Serv vlets. o servlet. Pero es mucho m ms JSP no nos da nada que no pudiramos en principio hacer con un s conven niente escribir (y modific car!) HTML normal que te ener que hac cer un billn de sentencias n println que genere HTML. A en Adems, separando el fo ormato del contenido p podemos pon ner diferen ntes persona en diferen as ntes tareas: los experto en diseo de pginas Web pued os o s den constru el HTML, dejando espa uir d acio para que los program e madores de se ervlets inserten el conteni ido dinmi ico. tra Server-S Side Include (SSI). es Cont SSI es una tecnolog ampliame ga ente soportad que incluye piezas definidas externa da amente dentr ro de una pgina Web esttica. JSP es mejor a b P

Aplicaciones Cliente Servidor S

Pgina 5 55.

Tec. En Ingeniera en Sistemas

porque nos permite usar servlets en vez de un programa separado para generar las partes dinmicas. Adems, SSI, realmente est diseado para inclusiones sencillas, no para programas "reales" que usen formularios de datos, hagan conexiones a bases de datos, etc. Contra JavaScript.

JavaScript puede generar HTML dinmicamente en el cliente. Este una capacidad til, pero slo maneja situaciones donde la informacin dinmica est basada en el entorno del cliente. Con la excepcin de las cookies, el HTTP y el envi de formularios no estn 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, catlogos, informacin de precios, etc. Normalmente daremos a nuestro fichero una extensin .jsp, y normalmente lo instalaremos en el mismo sitio que una pgina Web normal. Aunque lo que escribamos frecuentemente se parezca a un fichero HTML normal en vez de un servlet, detrs de la escena, la pgina JSP se convierte en un servlet normal, donde el HTML esttico simplemente se imprime en el stream de salida estndar asociado con el mtodo service del servlet. Esto normalmente slo se hace la primera vez que se solicita la pgina, y los desarrolladores pueden solicitar la pgina ellos mismos cuando la instalan si quieren estar seguros de que el primer usuario real no tenga un retardo momentneo cuando la pgina JSP sea traducida a un servlet y el servlet sea compilado y cargado. Observa tambin, que muchos servidores Web nos permiten definir alias para que una URL que parece apuntar a un fichero HTML realmente apunte a un servlet o a una pgina JSP. Adems del HTML normal, hay tres tipos de construcciones JSP que embeberemos en una pgina: elementos de script, directivas y acciones. Los elementos de script nos permiten especificar cdigo Java que se convertir en parte del servlet resultante, las directivas nos permiten controlar la estructura general del servlet, y las acciones nos permiten especificar componentes que deberan ser usados, y de otro modo controlar el comportamiento del motor JSP. Para simplificar los elementos de script, tenemos acceso a un nmero de variables predefinidas como request, response y out. Ejemplo: Fomulario.html Por favor, Introduzca un listado de Nombre




MultiParametros.jsp Los nombres introducidos son: El siguiente archivo .jsp Crea un formulario y se auto-enva los parmetros que son evaluados por el mismo archivo jsp, ya que algunos de estos son obligatorios que el usuario los introduzca. CamposRequeridos.jsp Usted No ha introducido todos los campos requeridos.
Debe introducir todos los campos que estan marcados en color Rojo. Nombre: requerido Apellido: requerido Direccin: Ciudad Departamento: Telfono de Contacto: requerido Opciones de Formato:
Normal Negrita Cursiva

Aplicaciones Cliente Servidor

Pgina 58.

Tec. En Ingeniera en Sistemas

DIRECTIVAS JSP Qu es la Directiva Include? La directiva include se usa para insertar un fichero dentro de una pgina JSP cuando se compila la pgina JSP. El texto del fichero incluido se aade a la pgina. Qu clases de ficheros se pueden incluir? El fichero incluido puede ser un fichero JSP, un fichero HTML, o un fichero de texto. Tambin ser un fichero de cdigo escrito en lenguaje Java. Hay que ser cuidadoso en que el fichero incluido no contenga las etiquetas , , , or . Porque como todo el contenido del fichero incluido se aade en esa localizacin del fichero JSP, estas etiquetas podran entrar en conflicto con las etiquetas similares del fichero JSP. Incluir Ficheros JSP Si el fichero incluido es un fichero JSP, las etiquetas JSP son analizadas y sus resultados se incluyen (junto con cualquier otro texto) en el fichero JSP. Slo podemos incluir ficheros estticos. Esto significa que el resultado analizado del fichero incluido se aade al fichero JSP justo donde est situada la directiva. Una vez que el fichero incluido es analizado y aadido, el proceso contina con la siguiente lnea del fichero JSP llamante. Qu es un fichero Esttico? Un include esttico significa que el texto del fichero incluido se aade al fichero JSP. Adems en conjuncin con otra etiqueta JSP, : podemos incluir ficheros estticos o dinmicos: Un fichero esttico es analizado y si contenido se incluye en la pgina JSP llamante. Un fichero dinmico acta sobre la solicitud y enva de vuelta un resultado que es incluido en la pgina JSP. Cul es la Sintaxis para Incluir un Fichero? Podemos incluir un fichero en la localizacin especfica del fichero JSP usando la directiva include con la siguiente sntasis: " Aqu la URL puede ser una URL relativa indicando la posicin del fichero a incluir dentro del servidor. Accin jsp:include Esta accin nos permite insertar ficheros en una pgina que est siendo generada. La sntaxis se parece a esto: Al contrario que la directiva include, que inserta el fichero en el momento de la conversin de la pgina JSP a un Servlet, esta accin inserta el fichero en el momento en que la pgina es solicitada. Esto se paga un poco en la eficiencia, e imposibilita a la pgina incluida de contener cdigo JSP general (no puede seleccionar cabeceras HTTP, por ejemplo), pero se obtiene una significante flexibilidad. Por ejemplo, aqu tenemos una pgina JSP que inserta cuatro puntos diferentes dentro de una pgina Web

Aplicaciones Cliente Servidor

Pgina 59.

Tec. En Ingeniera en Sistemas

"Noticias de Ultima Hora?". Cada vez que cambian las lneas de cabeceras, los autores slo tienen que actualizar los cuatro ficheros, pero pueden dejar como estaba la pgina JSP principal. Noticias.jsp Noticias Frescas Ultimas Noticias en t JspNoticias.com Este es un Resumen de las Noticias Ms Recientes: Para que este archivo pueda ejecutarse, debe crear en un directorio virtual llamando noticias los archivos item1, item2, item3, item4 con extensin HTML o puede acceder a cualquier archivo de texto cambiando el valor del atributo page de Noticias.jsp. EJERCICIOS PROPUESTOS 1. Crear un formulario que pida Nombre, Apellido, Direccin, Telfono, Direccin de Email, Fecha de Nacimiento, Pasatiempos Favoritos. Estos sern ledos por un archivo JSP, que desplegar los parmetros recibidos (utilizar mtodo POST). 2. Crear una pagina JSP, donde puedas incluir en una tabla, el contenido de cuatro archivos HTML, uno en cada celda, como se muestra en la figura. Archivo1.html Archivo3.html Archivo2.html Archivo4.html

3. Realizar el ejercicio #2 de la gua practica 8 utilizando JSP, el enunciado es el siguiente: Crear un formulario en HTML que simule la pantalla de acceso a una aplicacin Web con acceso restringido, el formulario pedir al usuario: Su nombre de Usuario y Contrasea (el formulario debe estar validado de tal forma que obligue al usuario a escribir los datos requeridos). Estos datos sern enviados a una pagina JSP que validar la entrada a la aplicacin. Esta contendr 2 arreglos uno de Usuarios y otro de Contraseas, de tal forma que Usuario[2] poseer su clave en contrasea[2]. Si el usuario y contrasea son validos la pgina mostrar un mensaje de bienvenida al usuario, de lo contrario desplegar un mensaje de Usuario y/o contrasea no validos. Tomar como datos de los arreglos: USUARIO {Administrador, Usuario1, Usu02, Operador} PASSWORD {admin0101, nimodo, clave02, ok}

Aplicaciones Cliente Servidor

Pgina 60.

Tec. En Ingeniera en Sistem T mas

Cla ase N 7 JSP con b J bases de datosTIVOS OBJET Al fina alizar la clas el estudiante ser ca se, apaz de: Conocer asp pectos de Se eguridad y co onexin de B para Inte BD ernet RROLLO DESARJSP CO BASES DE DATOS. ON D Mover el Cursor en una Hoja de Resultad r e dos e cas del API J JDBC 2.0 es la habilidad de mover el cursor en u una Una de las nuevas caracterstic hoja d resultados tanto hacia atrs com hacia ade de s mo elante. Tamb bin hay mtodos que n nos permit ten mover el cursor a un fila particu na ular y compr robar la posicin del curs sor. La hoja de resulta ados Scrollable hace posib crear una herramienta GUI (Interfa Grfico de Usuario) pa ble ace e ara navega a travs de ella, lo que probablemente ser uno de los principales usos de es ar s s sta caracte erstica. Otro uso ser mo overnos a una fila para act a tualizarla. de rovechar esta ventajas, n as necesitamos c crear un obje ResultSe Scrollable: eto et Antes d poder apr Statem ment stmt = con.createSta c atement(Resu ultSet.TYPE_SCROLL_SEN NSITIVE, Res sultSet.CONC CUR_READ_O ONLY); ResultS srs = stm Set mt.executeQu uery("SELECT NOM_PROD, PRECIO FRO PRODUCT T OM TOS"); milar al utiliz zado anterior rmente, exce epto en que aade dos argumentos al Este cdigo es sim mtodo createStatement. El p o primer argum mento es una de las tres constantes a a aadidas al A API Result tSet para indicar el tipo de u un objeto ResultSet: TYPE_FOR RWARD_ONL LY, TYPE_ _SCROLL_IN NSENSITIVE y TYPE_SCROLL_SEN E, NSITIVE. El segundo argumento es u una de las dos constant de ResultSet para es tes specificar si la hoja de res a sultados es de slo lectura o e a actualizable: CONC CUR_READ_ _ONLY y CON NCUR_UPDA ATABLE. Lo que debemos recordar aq qu es que si especifica e amos un tipo, tambin deb , bemos especificar si es de slo lectura o actualizab e a ble. Tambi debemos especificar p n, primero el tip y como ambos parme po, etros son int el compilad t, dor no com mprobar si lo hemos inte os ercambiado. Especif ficando la constante TY c YPE_FORWA ARD_ONLY se crea un hoja de resultados no na desplazable, es de ecir, una hoja en la que el cursor s se mueve hacia adel a lo lante. Si no se especif fican constan ntes para el ti ipo y actualiz zacin de un objeto Resul ltSet, obtend dremos automticamente una TYPE_FO u ORWARD_ONLY y CONC CUR_READ_ONLY. Obtend ResultSet dremos un n objeto desplazable e si utili izamos una a de est tas constantes:TYPE_S SCROLL_INS SENSITIVE o TYPE_SCROLL_SENS SITIVE. La d diferencia ent tre estas d dos es si la hoja de res sultados refle eja los camb bios que se h han hecho m mientras esta aba abierta y si se pu a uede llamar a ciertos m todos para detectar est tos cambios. Generalmen nte hablan ndo, una hoja de resultados TYPE_SC a CROLL_INSE ENSITIVE no refleja los c o cambios hech hos mientr ras estaba ab bierta y en un hoja TYPE na E_SCROLL_S SENSITIVE si se reflejan Los tres tip n. pos de hojas de resulta ados harn v visibles los re esultados si se cierran y se vuelve a abrir. En es ste momen nto, no neces sitamos preocuparnos de los puntos de elicados de la capacidade de un obje as es eto Result tSet, entrare emos en ms detalle m adelante. Aunque deberamos tene en mente el s er hecho de que no im mporta el tipo de hoja de resultados que especifiq e quemos, siem mpre estarem mos limitad por nuest controlado de base de datos y el d dos tro or e driver utilizad dos.

Aplicaciones Cliente Servidor S

Pgina 6 61.

Tec. En Ingeniera en Sistemas

Una vez que tengamos un objeto ResultSet desplazable, srs en el ejemplo anterior, podemos utilizarlo para mover el cursor sobre la hoja de resultados. Recuerda que cuando crebamos un objeto ResultSet anteriormente, tena el cursor posicionado antes de la primera fila. Incluso aunque una hoja de resultados se seleccione desplazable, el cursor tambin se posiciona inicialmente delante de la primera fila. En el API JDBC 1.0, la nica forma de mover el cursor era llamar al mtodo next. Este mtodo todava es apropiado si queremos acceder a las filas una a una, yendo de la primera fila a la ltima, pero ahora tenemos muchas ms formas para mover el cursor. La contrapartida del mtodo next, que mueve el cursor una fila hacia delante (hacia el final de la hoja de resultados), es el nuevo mtodo previous, que mueve el cursor una fila hacia atrs (hacia el inicio de la hoja de resultados). Ambos mtodos devuelven false cuando el cursor se sale de la hoja de resultados (posicin antes de la primera o despus de la ltima fila), lo que hace posible utilizarlos en un bucle while. Ya hemos utilizado un mtodo next en un bucle while, pero para refrescar la memoria, aqu tenemos un ejemplo que mueve el cursor a la primera fila y luego a la siguiente cada vez que pasa por el bucle while. El bucle termina cuando alcanza la ltima fila, haciendo que el mtodo next devuelva false. El siguiente fragmento de cdigo imprime los valores de cada fila de srs, con cinco espacios en blanco entre el nombre y el precio: Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executeQuery("SELECT NOM_PROD, PRECIO FROM PRODUCTOS"); while (srs.next()) { String name = srs.getString("NOM_PROD "); float price = srs.getFloat("PRECIO"); System.out.println(name + " " + price); } Al igual que en el fragmento anterior, podemos procesar todas las filas de srs hacia atrs, pero para hacer esto, el cursor debe estar detrs de la ltima fila. Se puede mover el cursor explcitamente a esa posicin con el mtodo afterLast. Luego el mtodo previous mueve el cursor desde la posicin detrs de la ltima fila a la ltima fila, y luego a la fila anterior en cada interaccin del bucle while. El bucle termina cuando el cursor alcanza la posicin anterior a la primera fila, cuando el mtodo previous devuelve false. Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executeQuery("SELECT NOM_PROD, PRECIO FROM PRODUCTOS"); srs.afterLast(); while (srs.previous()) { String name = srs.getString("NOM_PROD "); float price = srs.getFloat("PRECIO"); System.out.println(name + " " + price); }

Se puede mover el cursor a una fila particular en un objeto ResultSet. Los mtodos first, last, beforeFirst, y afterLast mueven el cursor a la fila indicada en sus nombres. El mtodo absolute mover el cursor al nmero de fila indicado en su argumento. Si el nmero es positivo, el cursor se mueve al nmero dado desde el principio, por eso llamar a absolute(1) pone el cursor en la primera fila. Si el nmero es negativo, mueve el cursor al nmero dado desde el final, por eso llamar a absolute(-1) pone el cursor en la ltimafila. La siguiente lnea de cdigo mueve el cursor a la cuarta fila de srs:

Aplicaciones Cliente Servidor

Pgina 62.

Tec. En Ingeniera en Sistemas

srs.absolute(4); Si srs tuviera 500 filas, la siguiente lnea de cdigo movera el cursor a la fila 497: srs.absolute(-4); Tres mtodos mueven el cursor a una posicin relativa a su posicin actual. Como hemos podido ver, el mtodo next mueve el cursor a la fila siguiente, y el mtodo previous lo mueve a la fila anterior. Con el mtodo relative, se puede especificar cuntas filas se mover desde la fila actual y tambin la direccin en la que se mover. Un nmero positivo mueve el cursor hacia adelante el nmero de filas dado; un nmero negativo mueve el cursor hacia atrs el nmero de filas dado. Por ejemplo, en el siguiente fragmente de cdigo, el cursor se mueve a la cuarta fila, luego a la primera y por ltimo a la tercera: srs.absolute(4); // cursor est en la cuarta fila ... srs.relative(-3); // cursor est en la primera fila ... srs.relative(2); // cursor est en la tercera fila El mtodo getRow permite comprobar el nmero de fila donde est el cursor. Por ejemplo, se puede utilizar getRow para verificar la posicin actual del cursor en el ejemplo anterior: srs.absolute(4); int rowNum = srs.getRow(); // rowNum debera ser 4 srs.relative(-3); int rowNum = srs.getRow(); // rowNum debera ser 1 srs.relative(2); int rowNum = srs.getRow(); // rowNum debera ser 3 Existen cuatro mtodos adicionales que permiten verificar si el cursor se encuentra en una posicin particular. La posicin se indica en sus nombres: isFirst, isLast, isBeforeFirst, isAfterLast. Todos estos mtodos devuelven un boolean y por lo tanto pueden ser utilizados en una sentencia condicional. Por ejemplo, el siguiente fragmento de cdigo comprueba si el cursor est despus de la ltima fila antes de llamar al mtodo previous en un bucle while. Si el mtodo isAfterLast devuelve false, el cursor no estar despus de la ltima fila, por eso se llama al mtodo afterLast. Esto garantiza que el cursor estar despus de la ltima fila antes de utilizar el mtodo previous en el bucle while para cubrir todas las filas de srs. if (srs.isAfterLast() == false) { srs.afterLast(); } while (srs.previous()) { String name = srs.getString("NOM_PROD"); float price = srs.getFloat("PRECIO"); System.out.println(name + " " + price); } Ejemplo de Java Server Pages Con Bases de Datos. Este es tambin un caso comn con elementos de una tabla, sin embargo es tambin fcil de resolver. Es necesario recordar primero algunas cosas elementales: 1) Recordar que el nmero de columna en una tabla empieza en 1, esto es que para realizar alguna operacin por ejemplo la columna edad del ejemplo siguiente, su numero de columna es la numero 3.

Aplicaciones Cliente Servidor

Pgina 63.

Tec. En Ingeniera en Sistemas

2) La operacin que se plantee se puede realizar con todos los renglones de la tabla o con un solo rengln de la tabla(del resultset). 3) En el ejemplo se realiza la operacin con todos los renglones de la tabla y no olvidar que se tiene que usar la instruccin SQL Update para que la nueva informacin se actualice en disco, recordar que los cambios que se hacen a la tabla, es realmente al resultset, que a su vez es una tabla o base de datos en la memoria de la maquina del cliente o usuario, y estos cambios hay que actualizarlos o pasarlos o UPDATE a la base de datos en disco. El siguiente programa le aumenta 5 a todas las edades. EjemploGuia13.jsp Ejemplo JSP con BD Ejemplo de Conexin con bases de Datos. Los datos de la tabla se han actualizado. Los Datos de la Tabla son: CLAVE NOMBRE EDAD >Encabezado de la Aplicac cin 0 % <

Aplicaciones Cliente Servidor S

Pgina 6 66.

Tec. En Ingeniera en Sistemas

SISTEMA DE CONTROL DE ACCESOS
BIENVENID@

JDBC SQL RESULTSET El modelo de datos de java descansa en una serie de objetos especializados que facilitan el procesamiento de una base de datos.

El problema es comunicar un programa o aplicacin con una base de datos y ms que comunicar se pretende que el programa o aplicacin realice una serie de procesos u operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una base de datos. La primera nota a recordar es que una base de datos puede estar fsicamente en el servidor y en algn folder o directorio del disco duro de dicha maquina servidora por ejemplo, c:\prograiv\misitio\mibase.mbd, como se observa la base que se construy en access (mibase.mbd) se almaceno en el disco c en el folder prograiv y dentro del subfolder misitio.

El modo de comunicarse entre nuestro programa o aplicacin y la base de datos (ya sea fsicao un dbserver) implica que ambos manejen un lenguaje de programacin comn, es decir no se puede mandar una instruccin en Basic o pascal, a la base de datos y adems esperar que esta ultima la entienda (para entender esto, una razn muy sencilla es que la base de datos tendra que conocer o comprender todos los lenguajes de programacin), para resolver este problema de comunicacin es que se usa un lenguaje comn de bases de datos que tanto los lenguajes de programacin existentes como las bases de datos entienden, este lenguaje comn de bases de datos es el SQL (structured query languaje) o lenguaje estructurado de consultas. Ahora para mandar las instrucciones SQL a la base de datos, la respuesta son los siguientes OBJETOS. _ OBJETO JDBCODBCDRIVER: Objeto que se utiliza para traducir las instrucciones del lenguaje SQL a las instrucciones del lenguaje original de la base de datos.

Aplicaciones Cliente Servidor

Pgina 67.

Tec. En Ingeniera en Sistemas

_ OBJETO CONNECTION: Objeto que se utiliza para establecer una conexin o enlace a la base de datos. _ OBJETO RESULTSET: Es la representacin en memoria de una de las tablas de la base de datos en disco, se puede entender como una tabla virtual, recordar que generalmente todos los procesos que se realicen con la tabla (insertar registros, eliminar registros, etc) se realizaran realmente contra un resulset y no provocaran ningun cambio en la tabla fsica en disco, resulset tiene un conjunto de mtodos muy tiles y muy usados para el proceso de los renglones de la tabla virtual. _ OBJETO STATEMENT: Este objeto y sus dos mtodos executequery (solo consultas de Seleccin) y executeupdate (Solo para consultas de Accin) son los mtodos que se utilizaran para comunicarse con la tabla fsica en disco. Ejemplo: Connection con = null; ResultSet rs= null; Statement stmt=null; String sitiobase = "c:/prograiv/base/mibase.mdb"; String strcon= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sitiobase; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(strcon); stmt = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e) { //instrucciones Catch } catch(SQLException e) { //instrucciones Catch }; Para ejecutar el siguiente ejemplo debe incluir en la URL el parmetro EDAD, por ejemplo: Consulta1.jsp EJEMPLO DE CONEXIN A BASES DE DATOS INFORMACIN ALMACENADA EN LA BASE DE DATOS IMAGENES EN APLICACIONES CON BASES DE DATOS. Campos de grficos o de imgenes, se han convertido en elementos importantes de cualquier base de datos. Para manejar este elemento con java-jsp puedes utilizar el siguiente mtodo: Primero subir las imgenes (de preferencia jpg) con un ftp normal a tusitio o directorio donde guardars las imgenes y despus usar el tag de html y adems agregar un campo de texto llamado fotourl o foto a la tabla en Access y grabar la direccin o path de la imagen en este campo, por ejemplo http://programacionfacil.com/tusitio/pato.jpg o simplemente /tusitio/pato.jpg Despus solo cargar este tag imageurl en la pgina que se construir que no es otra cosa que el programa de bsqueda con el despliegue del campo extra, como lo muestra el programa ejemplo Para ejecutar el siguiente ejemplo debe incluir en la URL el parmetro CLAVE, por ejemplo: http://localhost/MiAplicacin/Consulta2.jsp?CLAVE=1. Se asume adems que todas las imgenes se guardan en el directorio Base y que tiene extensin jpg. Se recomienda analizar detenidamente el ejemplo. Consulta2.jsp EJEMPLO DE REGISTROS CON IMAGENES INFORMACIN DEL USUARIO CON FOTOGRAFIA

Aplicaciones Cliente Servidor

Pgina 70.

Tec. En Ingeniera en Sistemas

EJERCICIOS Para la realizacin de los siguientes ejercicios debers crear una base de datos en Access con el nombre de MiAplicacin.mdb. 1. Construir una tabla (notas) en que traiga carnet, nombre, apellido, calif1, calif2, calif3 y promedio, cargar en Access unos 5 renglones de alumnos, no cargar promedio, el promedio lo debern calcular con un programa en JSP. NOTA. CALIF1 equivale al 30% de la nota final, CALIF2 Y CALIF3 cada una 35%. 2. Crear un programa en JSP que muestre la informacin almacenada en la tabla anterior. 3. Construir un proceso de bsqueda de un alumno por medio de carnet, nombre o apellido y que pueda mostrar los datos de sus calificaciones y promedio final. 4. Crear la interfaz de entrada de una aplicacin web, que pida el identificador de usuario y contrasea, la validez de estos parmetros se verificar con la informacin almacenada en la base de datos. Si el usuario es vlido se desplegar la pantalla de entrada del sistema en una interfaz web compuesta por 3 marcos (frames); un encabezado que mostrar un mensaje de bienvenida y la fecha del sistema, un men principal, y una pagina principal, como se muestra en la figura.

Aplicaciones Cliente Servidor

Pgina 71.

Tec. En Ingeniera en Sistem T mas

Cla ase N 8 Man nejo de s sesiones y cookies s con JSP cTIVOS OBJET Al final lizar la clase, el estudiante ser capaz d e de: q ado n. Definir que es el esta de sesin Manejar el estado de sesin utiliz e zando sesione y cookies c JSP. es con RROLLO DESARIntrod duccin El prot tocolo HTTP permite acced a pginas web y envia datos de un formulario pero tiene p der s ar una lim mitacin que consiste en q que no puede almacenar c e cuando se cambia de serv vidor o de pgina dentro de un mismo serv a vidor. Por est razn a este protocolo se le conoce como ta protoco sin estado olo o. Cuando se solicita una pgina in o u ndependiente emente del tip que sea, e servidor ab una po el bre conexin por la que enva los da e atos y luego sta es cerrada una vez q que ha termin nado. Qu es una sesin n Una se esin es una serie de comunicaciones e s entre un clien y un serv nte vidor en la que se realiza u un interca ambio de info ormacin. Por medio de un sesin se puede hacer un seguimiento de un r na usuario a travs de la aplicacin o e n. El tiem mpo de vida de una sesin comienza cu d uando un usu uario se conec por prime vez a cta era un sitio web pero su finalizacin puede estar relacionada con tres circunstancias: o n r - Cuan ndo se aban ndona el sitio web. o - Cuan ndo se alcan nza un tiemp de inactividad que e previamente establec po es cido, en este caso la sesin es automtica amente eliminada. Si el usuario siguiera naveg gando se crear una nueva sesin. a a - Se ha cerrado o reiniciado e servidor el Una po osible aplicacin de las ses siones es en el comercio e electrnico. E este caso una En sesin permite ir eligiendo una s serie de prod ductos e irlos aadiendo a nuestro car rrito y as finalizar la co ompra. Sin el uso de sesio ones no se po odra hacer po orque al ir na avegando de hasta f una p gina a otra se ira perdien s ndo toda la in nformacin. Tambi se utilizan para la iden n n ntificacin de usuarios, en la que se deben de introd ducir un login y un password. Despus de haber hecho esto el usuario ten ndr una serie de permis sos sobre las pginas que va a visit q tar, de tal fo orma que si u usuario intenta pasar a una pgina si un a habers identificado el sistema comprobar que no se ha identificado y sera redi se o, o ireccionado a la pgina de identifica a acin. Para po oder realizars estas oper se raciones es necesario almacenar en un nas tipo se esin la inform macin neces saria para sab que el usuario se ha id ber dentificado co orrectamente e. Para p poder hacer uso de las se u esiones en JS hay que p SP poner el atrib buto session de la directiva page a true, de est forma se n ta notifica al con ntenedor que la pgina in e nterviene en un proceso q que utiliza las sesiones del protocolo HTTP: o El man nejo de las se esiones impid el intercam de mbio de datos entre ellas ya que se tra informaci s ata in especf fica para cada usuario e in ncluso si se t trata del mism usuario. mo

Aplicaciones Cliente Servidor S

Pgina 7 72.

Tec. En Ingeniera en Sistemas

Manejo de las sesiones En JSP las acciones que se pueden realizar sobre las sesiones se lleva a cabo mediante la interface HttpSession y los mtodos que implementa. Esta interfaz est incluida dentro del paquete javax.servlet.http y es utilizada por el contenedor de pginas JSP para crear una sesin entre el servidor y el cliente. Para obtener la sesin de un usuario se utiliza el mtodo getSession() que devuelve una interfaz de tipo HttpSession. Una vez creado el objeto de tipo sesin es posible acceder a una serie de datos sobre la misma. Uno de estos datos es idSession que devuelve un identificador nico asociado a una sesin: Es posible conocer el momento en el que se cre la sesin: En el primer caso se muestra el dato tal cual lo devuelve el mtodo getCreationTime(), que es una fecha en formato long, mientras que en el segundo caso se formatea para que tenga un aspecto ms comn. Tambin se puede conocer la fecha y hora de la ltima vez que el cliente accedi al servidor con el que se cre la sesin, utilizando el mtodo getLastAccesedTime(): Teniendo en cuenta el momento en el que ser cre la sesin y la ltima vez que se accedi al servidor, se puede conocer el tiempo que lleva el cliente conectado al servidor, o lo que es lo mismo el tiempo que lleva el usuario navegando por la pginas JSP: La interfaz HttpSession ofrece el mtodo isNew() mediante el cual es posible saber si la sesin creada es nueva o se est tomando de una previamente creada:

Aplicaciones Cliente Servidor

Pgina 73.

Tec. En Ingeniera en Sistemas

Si se ejecuta el ejemplo la primera vez el mtodo devolver true, ya que previamente no haba ninguna sesin y ha sido creada en ese instante. Si se recarga la pgina devolver false ya que la sesin ya ha sido creada. Guardar objetos en una sesin Para guardar un objeto en una sesin se utiliza el mtodo setAttribute(), que ha sustituido al mtodo putValue(). Este mtodo utiliza dos argumentos: - El primero es el nombre que identificar a esa variable. - El segundo es el dato que se va a guardar. SetAttribute(java.lang.String name, java.lang.Object value) Un ejemplo de cmo guardar una cadena de texto en la sesin: Si se quiere pasar un parmetro que no sea un objeto es necesario realizar una conversin: Si se hubiera utilizado el valor entero en vez del objeto Integer, el resultado habra sido similar al siguiente. Incompatible type for meted. Cant convert int to java.lang.Object. En el primer ejemplo este no sucedera puesto que una cadena es un objeto de tipo String, no as un entero . As habra sido igual si en el primer caso ponemos: En caso de tratarse objeto de tipo Vector (parecido a un array con dos diferencias: la primera es que puede almacenar todo tipo de objetos, y la segunda es que no es necesario establecer de forma previa el tamao que va a tener) que almacene los 7 das de la semana. El cdigo sera el siguiente: Recuperar objetos de una sesin Los datos que se guardan en la sesin permanecen ah a la espera de ser utilizados. Para ello es necesario realizar el proceso contrario a cuando se graban, comenzando por la recuperacin del objeto de la sesin para empezar a ser tratado. Para poder realizar este paso se utiliza el mtodo getAttribute() (anteriormente se utilizaba el mtodo getValue(), pero este mtodo se encuentra en desuso), utilizando como argumento el nombre que identifica al objeto que se quiere recuperar. getAttribute(java.lang,String nombre) Un ejemplo de recuperacin de objetos almacenados en la sesin: Cuando este mtodo devuelve el objeto no establece en ningn momento de qu tipo de objeto se trata(String, Vector...) Por ello si se conoce previamente el tipo de objeto que puede devolver tras ser recuperado de la sesin es necesario realizar un casting, para convertir el objeto de tipo genrico al objeto exacto que se va a usar. Para realizar esta operacin se aade el tipo de objeto al lado de tipo HttpSession que utiliza el mtodo getAttribute() para obtener el objeto que devuelve: Si no existe ningn objeto almacenado en la sesin bajo el identificador que se utiliza en el mtodo getAttribute(), el valor devuelto ser null. Por ello habr que prestar especial atencin ya que si se realiza el casting de un valor null el contenedor JSP devolver un error. Lo mejor en estos casos es adelantarse a los posibles errores que pueda haber.

Aplicaciones Cliente Servidor

Pgina 75.

Tec. En Ingeniera en Sistemas

Por ltimo, el ejemplo del vector guardado en la sesin tiene un tratamiento similar al de los casos anteriores. El primer paso es recuperar el objeto de la sesin: Como se sabe que el objeto es de tipo Vector se puede recuperar y convertir en un solo paso: Vector v= (Vector) sesion.getAttribute(diasSemana); A partir de este momento se puede acceder a los elementos del vector independientemente de si vena de una sesin o ha sido creado. Para ello se utiliza el mtodo size() que devuelve el tamao del vector para ir leyendo cada uno de sus elementos: