El documento describe la introducción de los servlets en 1996 para añadir funcionalidad dinámica a los servidores web. Los servlets se ejecutan dentro de un proceso simple para cada petición, reduciendo la sobrecarga. Una desventaja es que los cambios estáticos en la página requieren recompilar el servlet. Los servlets se escriben usando la API Servlet y el método service() maneja las peticiones y respuestas.
Este documento proporciona una introducción al framework Struts para el desarrollo web. Explica conceptos clave como MVC, el modelo, la vista y el controlador. También cubre la instalación de Struts y conceptos como action forms, action mappings, pools de conexiones y mensajes internacionalizados.
1) Los servlets y JSPs son módulos que amplían las capacidades de los servidores web orientados a petición-respuesta, permitiendo generar páginas dinámicas en Java.
2) Los servlets usan los métodos doGet y doPost para procesar solicitudes HTTP y devolver respuestas, mientras que las JSPs permiten combinar código estático y dinámico en un mismo archivo para generar contenido.
3) Tanto los servlets como las JSPs pueden acceder a la solicitud, sesión, y otros objetos para proces
Este documento presenta un taller de Java avanzado que incluye temas como Servlets, JSP, Javabeans, EJB y Struts. El tema 2 se enfoca en Servlets, explicando qué son los servlets, su ciclo de vida y cómo se pueden utilizar para procesar peticiones HTTP y generar respuestas dinámicas. También cubre conceptos como ServletRequest, ServletResponse, HttpServletRequest, sesiones, cookies y filtros. El documento incluye ejemplos prácticos de cómo implementar funcionalidades comunes con servlets.
Este documento presenta la agenda y objetivos de la primera sesión del curso de Programación I impartido por el Ingeniero Carlos Quinto. Se introducen conceptos básicos relacionados a Internet, como dominios, URL, HTTP y herramientas que se utilizarán como Eclipse, Tomcat, MySQL. También se explica la estructura de aplicaciones web en Tomcat y la creación de servlets.
El documento describe cómo instalar MySQL, Apache y PHP en Fedora 11. Se utiliza el comando "yum install" para instalar fácilmente los paquetes necesarios. Después, se inician los servicios de MySQL y Apache. Finalmente, se comprueba que Apache funciona correctamente accediendo a localhost en un navegador.
1) Las páginas JSP combinan HTML con fragmentos de Java para producir páginas web dinámicas. 2) Cuando un cliente solicita una página JSP, esta es compilada a un servlet Java que es ejecutado y devuelve el contenido al cliente. 3) El documento explica conceptos como directivas, declaraciones, expresiones y etiquetas en JSP, así como el uso de JavaBeans.
Este documento presenta un taller de Java avanzado que incluye temas como Servlets, JSP, Javabeans, EJB y Struts. Una sección detalla los conceptos de JSP, incluyendo sus beneficios sobre otras tecnologías como ASP y PHP, así como ejemplos de uso de expresiones, scriptlets y declaraciones en JSP.
Este documento proporciona una introducción al framework Struts para el desarrollo web. Explica conceptos clave como MVC, el modelo, la vista y el controlador. También cubre la instalación de Struts y conceptos como action forms, action mappings, pools de conexiones y mensajes internacionalizados.
1) Los servlets y JSPs son módulos que amplían las capacidades de los servidores web orientados a petición-respuesta, permitiendo generar páginas dinámicas en Java.
2) Los servlets usan los métodos doGet y doPost para procesar solicitudes HTTP y devolver respuestas, mientras que las JSPs permiten combinar código estático y dinámico en un mismo archivo para generar contenido.
3) Tanto los servlets como las JSPs pueden acceder a la solicitud, sesión, y otros objetos para proces
Este documento presenta un taller de Java avanzado que incluye temas como Servlets, JSP, Javabeans, EJB y Struts. El tema 2 se enfoca en Servlets, explicando qué son los servlets, su ciclo de vida y cómo se pueden utilizar para procesar peticiones HTTP y generar respuestas dinámicas. También cubre conceptos como ServletRequest, ServletResponse, HttpServletRequest, sesiones, cookies y filtros. El documento incluye ejemplos prácticos de cómo implementar funcionalidades comunes con servlets.
Este documento presenta la agenda y objetivos de la primera sesión del curso de Programación I impartido por el Ingeniero Carlos Quinto. Se introducen conceptos básicos relacionados a Internet, como dominios, URL, HTTP y herramientas que se utilizarán como Eclipse, Tomcat, MySQL. También se explica la estructura de aplicaciones web en Tomcat y la creación de servlets.
El documento describe cómo instalar MySQL, Apache y PHP en Fedora 11. Se utiliza el comando "yum install" para instalar fácilmente los paquetes necesarios. Después, se inician los servicios de MySQL y Apache. Finalmente, se comprueba que Apache funciona correctamente accediendo a localhost en un navegador.
1) Las páginas JSP combinan HTML con fragmentos de Java para producir páginas web dinámicas. 2) Cuando un cliente solicita una página JSP, esta es compilada a un servlet Java que es ejecutado y devuelve el contenido al cliente. 3) El documento explica conceptos como directivas, declaraciones, expresiones y etiquetas en JSP, así como el uso de JavaBeans.
Este documento presenta un taller de Java avanzado que incluye temas como Servlets, JSP, Javabeans, EJB y Struts. Una sección detalla los conceptos de JSP, incluyendo sus beneficios sobre otras tecnologías como ASP y PHP, así como ejemplos de uso de expresiones, scriptlets y declaraciones en JSP.
Introducción a los lenguajes de programación de la plataforma Web 2.0: AjaxDavid Arango
Este documento introduce los lenguajes de programación de la plataforma Web 2.0, en particular Ajax. Explica qué es Ajax y cómo funciona mediante el uso de XMLHttpRequest para cargar datos de forma asincrónica. También cubre ejemplos prácticos de Ajax, buenas prácticas de desarrollo como separación de capas y accesibilidad, y el uso de Ajax con frameworks como Drupal y Ruby on Rails.
El documento explica qué es AJAX, describiendo que permite actualizar partes de una página web sin recargar la página completa mediante el objeto XMLHttpRequest. También describe los métodos y propiedades de este objeto como open, send y readyState que permiten realizar peticiones asíncronas al servidor y procesar la respuesta con JavaScript. Finalmente, menciona algunos errores comunes al utilizar AJAX como no informar al usuario sobre el estado de la carga o no tener en cuenta que la interacción es asíncrona.
Este documento presenta un taller de Java avanzado para empresas y profesionales. El taller cubre temas como Servlets, JSP, EJB, Struts y conclusiones. Cada tema introduce conceptos clave del desarrollo web como contenedores, roles, componentes y la estructura de una aplicación web empaquetada.
Este documento presenta una introducción a AJAX, comparando las arquitecturas tradicionales vs AJAX. Explica cómo funciona AJAX, sus ventajas y desventajas, y propone el desarrollo de una aplicación web basada en AJAX. También discute frameworks e IDEs para facilitar el desarrollo AJAX y concluye resaltando las ventajas de incluir técnicas AJAX en aplicaciones web.
Este documento presenta una introducción a las tecnologías web ASP.NET. Explica las diferencias entre HTML y ASP.NET, así como los conceptos clave de HTTP, formularios HTML, procesamiento en el servidor, ASP vs ASP.NET, y las ventajas de ASP.NET como la compilación, independencia del lenguaje de programación, y encapsulamiento a través de controles. También describe los componentes principales de una aplicación ASP.NET como páginas ASPX, archivos code-behind, y archivos de configuración.
Este documento describe las aplicaciones ricas de Internet (RIA), que combinan características de aplicaciones web y de escritorio para brindar una experiencia enriquecida al usuario. Explica dos tipos de RIA, completas y embebidas, y discute tecnologías como AJAX, XMLHttpRequest y frameworks de desarrollo.
El documento presenta una introducción teórica al desarrollo de APIs utilizando la arquitectura REST. Explica conceptos clave como recursos, identificadores, representaciones, operadores y códigos de respuesta HTTP. También recomienda estructurar el API siguiendo patrones MVC, realizar pruebas unitarias, utilizar caché y autenticación, y considerar frameworks existentes.
Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...Didier Granados
1) El documento describe conceptos generales sobre páginas web y formularios web. 2) Explica la diferencia entre páginas web estáticas y dinámicas, y ejemplos comunes de formularios web. 3) Detalla los elementos clave de un formulario web como objetos, métodos de envío de datos, y la estructura básica de un documento HTML con un formulario.
Este documento presenta una introducción a la programación avanzada para desarrollo web. Explica conceptos clave como servidores web, contenedores web, servlets, JSP y aplicaciones web con Java. También incluye una guía rápida de HTML y una descripción de la estructura y configuración típica de aplicaciones web con Java.
Introducción al desarrollo de aplicaciones web en JavaEudris Cabrera
Este documento presenta una introducción al desarrollo de aplicaciones web con Java. Explica conceptos clave como servlets, Java Server Pages (JSP), contenedores web y tecnologías estándar para aplicaciones web en Java. El objetivo es proveer una visión general de las tecnologías Java disponibles para el desarrollo de aplicaciones web, destacando normas importantes como servlets, JSP y contenedores web.
El documento describe diferentes tecnologías para desarrollar servicios web, incluyendo SOAP, WSDL, Axis, JAX-WS y servicios web en Java, PHP y Perl. Explica cómo crear un servicio web simple en NetBeans usando anotaciones como @WebService y @WebMethod, y cómo probar el servicio web usando su WSDL en SoapUI. También resume algunos servicios web populares de Google como Gmail, AdSense, AdWords y Blogger.
Este documento proporciona una introducción a JDBC y las bases de datos en Java. Explica los conceptos clave como conexiones a bases de datos, ejecución de sentencias SQL, tipos de statements, prepared statements, stored procedures, transacciones y más. También incluye ejemplos de código para establecer conexiones, consultas, inserciones, actualizaciones y eliminaciones de datos.
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
ASP.NET es un framework para aplicaciones web desarrollado por Microsoft que permite construir sitios web dinámicos y aplicaciones web. Utiliza páginas web (.aspx) que combinan HTML estático con etiquetas de servidor y código dinámico. El código se puede escribir en cualquier lenguaje admitido por .NET y se ejecuta en el Common Language Runtime. ASP.NET también proporciona características como controles de usuario, administración del estado de sesión y aplicación, y plantillas maestras para compartir diseños entre páginas.
Este documento presenta una introducción a los servicios web. Explica que los servicios web permiten el intercambio de datos entre aplicaciones desarrolladas en diferentes lenguajes de programación a través de protocolos estándar. También describe algunos servidores de aplicaciones populares para servicios web como JBoss, Oracle Fusion Middleware e IBM Lotus Domino. Finalmente, menciona algunas desventajas de los servicios web como su bajo rendimiento en comparación con otros modelos de computación distribuida.
El documento proporciona información sobre el uso de JavaBeans en JSP. Explica cómo declarar e instanciar JavaBeans usando <jsp:useBean>, establecer y obtener propiedades de los beans con <jsp:setProperty> y <jsp:getProperty>, y los diferentes ámbitos de alcance que pueden tener los beans como page, request, session y application.
Este documento describe las diferencias entre JAX-WS y JAX-RS, los estándares para crear web services y web services REST en Java. Explica que JAX-WS se usa para crear web services SOAP tradicionales mientras que JAX-RS se usa para crear servicios RESTful. También proporciona detalles sobre las implementaciones más populares de cada estándar como Apache CXF, Glassfish Metro y Jersey.
Este documento describe una aplicación que ofrece servicios web RESTful y SOAP para recuperar tweets e información sobre estudios clínicos almacenados en una base de datos. La aplicación consta de dos proyectos: un servidor que implementa los servicios y un cliente que los consume. Los servicios RESTful permiten recuperar datos mediante solicitudes HTTP mientras que los servicios SOAP usan SOAP sobre HTTP. El documento explica los detalles de implementación de ambos tipos de servicios.
Patxi vivía en América mientras su esposa Arantxa se quedó en Bilbao. Arantxa le pidió a Patxi que le enviara esperma por correo para quedar embarazada, y Patxi lo hizo. Esto se repitió cinco veces durante 10 años y tuvieron cinco hijos. Cansado de enviar esperma y mantener a los hijos desde América, Patxi envió una mezcla de maicena, clara de huevo y leche en lugar de esperma. Arantxa le confirmó que estaba embarazada, por lo que Patxi
Introducción a los lenguajes de programación de la plataforma Web 2.0: AjaxDavid Arango
Este documento introduce los lenguajes de programación de la plataforma Web 2.0, en particular Ajax. Explica qué es Ajax y cómo funciona mediante el uso de XMLHttpRequest para cargar datos de forma asincrónica. También cubre ejemplos prácticos de Ajax, buenas prácticas de desarrollo como separación de capas y accesibilidad, y el uso de Ajax con frameworks como Drupal y Ruby on Rails.
El documento explica qué es AJAX, describiendo que permite actualizar partes de una página web sin recargar la página completa mediante el objeto XMLHttpRequest. También describe los métodos y propiedades de este objeto como open, send y readyState que permiten realizar peticiones asíncronas al servidor y procesar la respuesta con JavaScript. Finalmente, menciona algunos errores comunes al utilizar AJAX como no informar al usuario sobre el estado de la carga o no tener en cuenta que la interacción es asíncrona.
Este documento presenta un taller de Java avanzado para empresas y profesionales. El taller cubre temas como Servlets, JSP, EJB, Struts y conclusiones. Cada tema introduce conceptos clave del desarrollo web como contenedores, roles, componentes y la estructura de una aplicación web empaquetada.
Este documento presenta una introducción a AJAX, comparando las arquitecturas tradicionales vs AJAX. Explica cómo funciona AJAX, sus ventajas y desventajas, y propone el desarrollo de una aplicación web basada en AJAX. También discute frameworks e IDEs para facilitar el desarrollo AJAX y concluye resaltando las ventajas de incluir técnicas AJAX en aplicaciones web.
Este documento presenta una introducción a las tecnologías web ASP.NET. Explica las diferencias entre HTML y ASP.NET, así como los conceptos clave de HTTP, formularios HTML, procesamiento en el servidor, ASP vs ASP.NET, y las ventajas de ASP.NET como la compilación, independencia del lenguaje de programación, y encapsulamiento a través de controles. También describe los componentes principales de una aplicación ASP.NET como páginas ASPX, archivos code-behind, y archivos de configuración.
Este documento describe las aplicaciones ricas de Internet (RIA), que combinan características de aplicaciones web y de escritorio para brindar una experiencia enriquecida al usuario. Explica dos tipos de RIA, completas y embebidas, y discute tecnologías como AJAX, XMLHttpRequest y frameworks de desarrollo.
El documento presenta una introducción teórica al desarrollo de APIs utilizando la arquitectura REST. Explica conceptos clave como recursos, identificadores, representaciones, operadores y códigos de respuesta HTTP. También recomienda estructurar el API siguiendo patrones MVC, realizar pruebas unitarias, utilizar caché y autenticación, y considerar frameworks existentes.
Desarrollo de Aplicaciones Web II - Sesión 02 - Conceptos Generales e Introdu...Didier Granados
1) El documento describe conceptos generales sobre páginas web y formularios web. 2) Explica la diferencia entre páginas web estáticas y dinámicas, y ejemplos comunes de formularios web. 3) Detalla los elementos clave de un formulario web como objetos, métodos de envío de datos, y la estructura básica de un documento HTML con un formulario.
Este documento presenta una introducción a la programación avanzada para desarrollo web. Explica conceptos clave como servidores web, contenedores web, servlets, JSP y aplicaciones web con Java. También incluye una guía rápida de HTML y una descripción de la estructura y configuración típica de aplicaciones web con Java.
Introducción al desarrollo de aplicaciones web en JavaEudris Cabrera
Este documento presenta una introducción al desarrollo de aplicaciones web con Java. Explica conceptos clave como servlets, Java Server Pages (JSP), contenedores web y tecnologías estándar para aplicaciones web en Java. El objetivo es proveer una visión general de las tecnologías Java disponibles para el desarrollo de aplicaciones web, destacando normas importantes como servlets, JSP y contenedores web.
El documento describe diferentes tecnologías para desarrollar servicios web, incluyendo SOAP, WSDL, Axis, JAX-WS y servicios web en Java, PHP y Perl. Explica cómo crear un servicio web simple en NetBeans usando anotaciones como @WebService y @WebMethod, y cómo probar el servicio web usando su WSDL en SoapUI. También resume algunos servicios web populares de Google como Gmail, AdSense, AdWords y Blogger.
Este documento proporciona una introducción a JDBC y las bases de datos en Java. Explica los conceptos clave como conexiones a bases de datos, ejecución de sentencias SQL, tipos de statements, prepared statements, stored procedures, transacciones y más. También incluye ejemplos de código para establecer conexiones, consultas, inserciones, actualizaciones y eliminaciones de datos.
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
ASP.NET es un framework para aplicaciones web desarrollado por Microsoft que permite construir sitios web dinámicos y aplicaciones web. Utiliza páginas web (.aspx) que combinan HTML estático con etiquetas de servidor y código dinámico. El código se puede escribir en cualquier lenguaje admitido por .NET y se ejecuta en el Common Language Runtime. ASP.NET también proporciona características como controles de usuario, administración del estado de sesión y aplicación, y plantillas maestras para compartir diseños entre páginas.
Este documento presenta una introducción a los servicios web. Explica que los servicios web permiten el intercambio de datos entre aplicaciones desarrolladas en diferentes lenguajes de programación a través de protocolos estándar. También describe algunos servidores de aplicaciones populares para servicios web como JBoss, Oracle Fusion Middleware e IBM Lotus Domino. Finalmente, menciona algunas desventajas de los servicios web como su bajo rendimiento en comparación con otros modelos de computación distribuida.
El documento proporciona información sobre el uso de JavaBeans en JSP. Explica cómo declarar e instanciar JavaBeans usando <jsp:useBean>, establecer y obtener propiedades de los beans con <jsp:setProperty> y <jsp:getProperty>, y los diferentes ámbitos de alcance que pueden tener los beans como page, request, session y application.
Este documento describe las diferencias entre JAX-WS y JAX-RS, los estándares para crear web services y web services REST en Java. Explica que JAX-WS se usa para crear web services SOAP tradicionales mientras que JAX-RS se usa para crear servicios RESTful. También proporciona detalles sobre las implementaciones más populares de cada estándar como Apache CXF, Glassfish Metro y Jersey.
Este documento describe una aplicación que ofrece servicios web RESTful y SOAP para recuperar tweets e información sobre estudios clínicos almacenados en una base de datos. La aplicación consta de dos proyectos: un servidor que implementa los servicios y un cliente que los consume. Los servicios RESTful permiten recuperar datos mediante solicitudes HTTP mientras que los servicios SOAP usan SOAP sobre HTTP. El documento explica los detalles de implementación de ambos tipos de servicios.
Patxi vivía en América mientras su esposa Arantxa se quedó en Bilbao. Arantxa le pidió a Patxi que le enviara esperma por correo para quedar embarazada, y Patxi lo hizo. Esto se repitió cinco veces durante 10 años y tuvieron cinco hijos. Cansado de enviar esperma y mantener a los hijos desde América, Patxi envió una mezcla de maicena, clara de huevo y leche en lugar de esperma. Arantxa le confirmó que estaba embarazada, por lo que Patxi
Este breve documento presenta una serie de preguntas y comentarios cortos sobre diversos temas, incluyendo cómo evitar que los testigos de Jehová llamen a la puerta, cómo evitar la publicidad no deseada en el buzón, qué podría estar diciendo un expolítico, y algunas observaciones sobre un camping sin piscina, un partido de tenis, la inspección técnica de un vehículo, y el uso de una máquina expendedora.
Dos usuarios conversan en un chat de MSN. El usuario "Chico_Ansioso" le pregunta insistentemente a "Mujer_Natural" detalles sobre su cuerpo, aunque ella no entiende sus mensajes. Él sugiere conectar una cámara web para verla mejor.
El padre le da una explicación simplificada de la política al niño usando los roles de la familia como metáfora. Sin embargo, durante la noche el niño ve a su padre teniendo relaciones sexuales con la criada mientras el abuelo los espía, y nadie ayuda al hermanito que llora necesitando un cambio de pañal. Al día siguiente, el niño resume su nueva comprensión de la política diciendo que el capitalismo se aprovecha de la clase obrera, el sindicato mira sin hacer nada, el gobierno duerme, el pueblo
Este documento anuncia un seminario educativo sobre turismo en Chile que analizará los lineamientos pedagógicos para asegurar la calidad de los futuros profesionales del turismo. El seminario incluirá presentaciones sobre las perspectivas nacionales del desarrollo turístico, los profesionales que el turismo necesita desde la educación media técnico-profesional, y los lineamientos para la formación de profesionales del turismo en la educación superior. Se llevará a cabo el 24 de octubre en el Centro Patrimonial Re
Este documento proporciona información sobre el desarrollo de una perspectiva teórica en una investigación. Explica que implica revisar teorías, conceptos, investigaciones previas y antecedentes sobre el tema. También describe cómo el marco teórico orienta el estudio, previene errores y conduce al establecimiento de hipótesis. Finalmente, ofrece métodos para organizar y construir el marco teórico a través de mapas conceptuales e índices.
El pintor iraní Imán Maleki es considerado uno de los mejores pintores de arte realista del mundo. Nació en 1976 en Teherán y estudió con el mejor pintor hiperrealista de Irán. Se graduó de la Universidad de Arte de Teherán y ha ganado varios premios internacionales por su obra, que muestra la grandeza del pueblo iraní a través de una representación cruda de la realidad que viven.
El documento presenta información sobre los árboles y su importancia. Explica que los árboles son seres vivos al igual que los humanos y nos proveen de oxígeno y recursos. Detalla las partes principales de un árbol, sus usos y clasificaciones comunes. También discute los posibles problemas que pueden causar los árboles y las consecuencias negativas de la deforestación. El estudiante deberá investigar este tema y escribir un informe resumiendo el impacto de la pérdida de los bosques.
El cliente preguntó por unos electrófonos en una tienda, pero el dependiente no sabía de qué se trataba. Los electrófonos son dispositivos comunes, no algo de hace casi cuarenta años como parecía pensar el dependiente. El cliente también preguntó sobre un abridor automático para un viaje a Cádiz.
Dos amigas se emborracharon en una fiesta sin sus maridos y tuvieron que orinar en un cementerio cercano en la madrugada. La primera usó su tanga para limpiarse y lo tiró, mientras que la segunda usó la cinta de una corona de flores y regresó a casa con una tarjeta pegada en el trasero que decía "Tus amigos de Logroño, no te olvidan".
Una mujer ganó $5,000 dólares en un concurso de historias embarazosas contando cómo, apurada para una cita con el ginecólogo, se limpió íntimamente con una toalla que luego su hija de 6 años usó para guardar sus brillantinas y purpurinas. Cuando el médico la halagó por su limpieza extra y luego su hija le pidió la toalla, se dio cuenta de su error.
Lleida.net es una compañía española líder en envío de SMS que ofrece un servicio de SMS Certificado que permite enviar mensajes de texto a teléfonos móviles de forma fehaciente y obtener un acuse de recibo firmado y sellado digitalmente como prueba del envío y contenido del mensaje. El servicio funciona a través de su red de interconexión y el mensaje es entregado al destinatario casi instantáneamente, generando luego un acuse de recibo certificado que es enviado por correo electrónico al remitente.
Un Ferrari se estrelló a 320 km/h pero el conductor resultó ileso, aunque el coche sufrió daños por 1.3 millones de dólares. El diseño del Ferrari protegió al conductor a pesar de la destrucción del vehículo.
El documento resume los daños causados por la tormenta tropical "Larry" en Chiapas en octubre de 2003. Afectó a 36 municipios y más de 40,000 personas. Se reportaron 2,590 viviendas dañadas, carreteras y puentes dañados, y pérdidas en los sectores educativo, agropecuario y de telecomunicaciones. El gobierno implementó acciones de prevención, ayuda humanitaria, instalación de refugios y frentes de trabajo para atender a los afectados.
Este documento describe brevemente las diferencias entre aplicaciones del lado del cliente y del servidor en el contexto de las aplicaciones web. También explica los métodos GET y POST en HTTP, incluyendo cómo se realizan las peticiones, cómo se resuelven las direcciones DNS, y cómo se codifican y envían los datos en una petición POST.
Este documento introduce los servlets como una tecnología clave para el desarrollo de aplicaciones web dinámicas en Java. Explica brevemente el funcionamiento de HTTP y la arquitectura de servlets, y proporciona instrucciones paso a paso para crear un servlet simple y ejecutarlo en un contenedor de servlets como Tomcat. También cubre conceptos como el ciclo de vida de los servlets y cómo recuperar la configuración de un servlet.
Este documento introduce los servlets y su funcionamiento. Explica que los servlets permiten desarrollar aplicaciones web dinámicas y cómo interactúan con el navegador y el servidor. Detalla el ciclo de vida de un servlet, cómo configurarlos y desplegarlos en Tomcat, y cómo acceder a la información de la petición y generar la respuesta.
Este documento introduce los servlets y su funcionamiento. Explica que los servlets permiten desarrollar aplicaciones web dinámicas y cómo interactúan con el navegador y el servidor. Detalla el ciclo de vida de un servlet, cómo configurarlos y desplegarlos en Tomcat, y cómo acceder a la información de la petición y generar la respuesta.
Este documento introduce los servlets y su funcionamiento. Explica que los servlets permiten desarrollar aplicaciones web dinámicas y cómo interactúan con el navegador y el servidor. Detalla el ciclo de vida de un servlet, cómo configurarlos y desplegarlos en Tomcat, y las clases y APIs relacionadas como HttpServlet, HttpServletRequest y HttpServletResponse.
Este documento describe diferentes tecnologías y herramientas para el desarrollo de servicios web con Java, PHP, Perl y Google. Explica cómo crear servicios web simples como saludos y buscadores de libros usando tecnologías como JAX-WS, SOAP, XML-RPC y APIs de Google como Blogger, AdSense y feeds de Gmail.
Acceso a BBDD mediante un servlet que delega temporalmente el procesamiento de la petición a un segundo servlet que conecta y realiza operaciones con la base de datos.
1. El documento discute posibles soluciones para implementar un chat por HTTP como Iframe scripting y propone que AJAX es una solución elegante. 2. Explica el esquema de funcionamiento de AJAX donde el navegador realiza peticiones asíncronas al servidor y actualiza el DOM sin recargar la página. 3. Revisa herramientas para desarrollo AJAX como Firebug que permiten debuggear aplicaciones AJAX.
1) El documento describe cómo instalar y configurar Apache, PHP y MySQL en Windows 98 para desarrollo local y pruebas, aunque no es recomendable usar este entorno para producción. 2) Explica los pasos para descargar e instalar los componentes y realizar la configuración necesaria. 3) Como prueba, crea un archivo PHP simple que muestra "Hola Mundo" y verifica que funcione correctamente al acceder desde el navegador.
Este documento describe los conceptos básicos de los servlets y su arquitectura. Los servlets son clases Java que se ejecutan en un servidor web para procesar solicitudes HTTP de clientes. Un servlet funciona como intermediario entre una solicitud del navegador y recursos del servidor, accediendo a bases de datos, generando resultados y devolviendo una respuesta al cliente.
El documento introduce el desarrollo de aplicaciones web con ASP.NET. Explica los elementos clave como formularios web, configuración, autenticación y mantenimiento de estado. También describe brevemente temas como master pages, themes, navegación y acceso a datos. El objetivo es conocer los conceptos involucrados en el desarrollo de aplicaciones web con Visual Studio y la plataforma .NET.
Este documento describe diferentes herramientas y servicios para el desarrollo de servicios web, incluyendo servidores como JOnAS, Microsoft .NET, Zope y JBoss. Luego se enfoca en Axis y NuSOAP, marcos de trabajo populares para crear y desplegar servicios web en Java y PHP respectivamente. Finalmente, menciona dos sitios web que proveen servicios web gratuitos de diferentes categorías.
Explicación del código del Servlet HolaMundojubacalo
El documento explica el código de un servlet simple que devuelve la página "Hola Mundo". El servlet extiende la clase HttpServlet y sobreescribe el método doGet() para establecer el tipo de contenido como HTML y escribir la página usando un PrintWriter. Cuando se recibe una petición GET, el servidor llama al método doGet() para devolver la respuesta.
ASP.NET es un framework para desarrollar aplicaciones web que permite separar la interfaz de usuario de la lógica del sitio y procesar datos en el servidor. Los Web Forms son la parte principal de ASP.NET y permiten crear páginas dinámicas que se compilan y ejecutan en el servidor generando HTML para el cliente. ASP.NET incluye controles que encapsulan funcionalidad común y facilitan el desarrollo de aplicaciones web ricas e interactivas.
Desarrollo aplicaciones distribuidas socketsdandark2000
1) Un socket es un punto final de comunicación entre dos programas a través de una red. 2) Los sockets permiten establecer conexiones orientadas a conexión usando TCP o no orientadas a conexión usando UDP. 3) En Java, las clases Socket, ServerSocket y DatagramSocket representan sockets y permiten la comunicación cliente-servidor.
El documento describe el uso de sockets en Java para comunicaciones entre programas. Explica cómo crear sockets cliente y servidor, abriendo flujos de entrada y salida y cerrando las conexiones. Las clases Socket y ServerSocket permiten que programas Java se comuniquen a través de redes de forma independiente de la plataforma.
Este documento lista numerosos servicios web de Google y proporciona enlaces a sus respectivas documentaciones. Incluye servicios como Android, APIs de datos de Google, Google Analytics, Google Maps, YouTube y muchos más. Explica brevemente cómo crear y consumir servicios web en Java, PHP y Perl.
Este documento describe varias herramientas y marcos para el desarrollo de servicios web, incluyendo JBoss, Oracle Fusion Middleware, IBM Lotus Domino, Axis, NuSOAP y PHP. Explica cómo usar NuSOAP para crear servicios web en PHP y consumirlos como cliente. También cubre cómo usar Axis con un servidor de aplicaciones para crear y desplegar servicios web.
Ajax, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones.
Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página.
Ajax es una técnica válida para múltiples plataformas y utilizable en muchos sistemas operativos y navegadores dado que está basado en estándares abiertos como JavaScript y Document Object Model
1
(DOM).
Estas aplicaciones se ejecutan en el navegador (cliente) de los usuarios.
O documento discute a comunidade Blogaliza. Na primeira parte, analisa a definição de blogs e o papel de blogueiros como opinadores e informadores. Discute também metáforas e o mundo real. Na segunda parte, examina as ferramentas internas de blogs, incluindo espaço adicional, ciclos de tempo e hackeamento do sistema de software.
La Unión Europea ha propuesto un nuevo paquete de sanciones contra Rusia que incluye un embargo al petróleo. El embargo prohibiría las importaciones de petróleo ruso por mar y por oleoducto, aunque se concederían exenciones temporales a Hungría y Eslovaquia. El objetivo es aumentar la presión económica sobre Rusia para que ponga fin a su invasión de Ucrania.
O software libre para a xestión da rede educativa máis grande do mundoousli07
La Consejería de Educación de Andalucía ha creado el Centro de Gestión de Aplicaciones (CGA) para gestionar de forma centralizada los más de 1,100 Centros TIC en la región. El CGA, compuesto por 40 expertos en TIC, se encarga del soporte técnico, desarrollo de aplicaciones y gestión remota de los servidores y equipos de los Centros TIC para liberar a los docentes de estas tareas y garantizar la integración de las TIC en la enseñanza.
Software Libre e terminais lixeiros en aulas: TCOSousli07
El documento describe los terminales ligeros, sistemas que permiten acceder a aplicaciones y datos almacenados en un servidor central desde ordenadores clientes con recursos limitados. Explica qué son los terminales ligeros, cómo funcionan, ejemplos como LTSP, PXES y ThinStation, y concluye resaltando las ventajas de su uso en entornos educativos.
Impulso al Software Libre desde la Junta de Andaluciaousli07
Este documento presenta una exposición sobre software libre y su aplicación en la administración pública, especialmente en Andalucía. Se explica brevemente qué es el software libre y sus ventajas para la administración, como la independencia, seguridad y durabilidad. Luego, se detalla el marco jurídico y diferentes iniciativas de software libre en Andalucía, incluyendo Guadalix y acuerdos con otras comunidades. Finalmente, se mencionan algunas conclusiones y recursos sobre el tema.
Este documento describe una forja de software libre alojada en RedIRIS. Explica que una forja es una herramienta de desarrollo colaborativo de software que permite la colaboración entre desarrolladores y la difusión de proyectos. A continuación, detalla la forja de RedIRIS, avalada por esta organización y alojada en sus servidores, y su evolución en términos de visitas, usuarios, proyectos y descargas. Finalmente, resume cómo funciona la forja basada en GForge y los servicios que integra
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...ousli07
Este documento presenta una ponencia sobre el software libre y la accesibilidad a las nuevas tecnologías para posibilitar la enseñanza universal. La ponencia discute el problema de la accesibilidad para personas con discapacidad, presenta soluciones como las tecnologías asistivas y el software libre, y contextualiza esto en la enseñanza.
Aula Cesga, un campus virtual basado en Software Libreousli07
Este documento describe un aula virtual basada en software libre desarrollada por el Centro de Supercomputación de Galicia (Cesga) para promover la innovación educativa. El aula virtual ofrece herramientas para la gestión de cursos, interacción, contenidos y evaluación de manera flexible y accesible desde cualquier lugar con conexión a Internet. Cesga ha contribuido al desarrollo de plataformas de código abierto como Claroline y Dokeos, y ha creado funcionalidades adicionales para el aula virtual.
Este documento describe cómo las tecnologías de red pueden enseñarse de manera efectiva utilizando software y hardware de código abierto. Propone que el uso de soluciones de código abierto permite la implementación de redes a bajo costo y da a los estudiantes experiencia práctica configurando, administrando y resolviendo problemas en redes. El documento también enumera numerosos ejemplos de software y herramientas de código abierto que pueden usarse para implementar redes funcionales en el aula y en el hogar.
Sistema y soporte informático en un centro educativo basado en software libreousli07
La Unión Europea ha acordado un embargo petrolero contra Rusia en respuesta a la invasión de Ucrania. El embargo prohibirá las importaciones marítimas de petróleo ruso a la UE y pondrá fin a las entregas a través de oleoductos dentro de seis meses. Esta medida forma parte de un sexto paquete de sanciones de la UE destinadas a aumentar la presión económica sobre Moscú y privar al Kremlin de fondos para financiar su guerra.
Este documento presenta conceptos clave sobre software libre y de código abierto. Explica que el software libre da a los usuarios la libertad de usar, estudiar, modificar y redistribuir el software, mientras que el software de código abierto se refiere a software con su código fuente disponible y licencias aprobadas por la Open Source Initiative. También proporciona una breve historia del software libre y GNU/Linux, y enumera recursos educativos sobre FLOSS.
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
1. Desarrollo de aplicaciones Java para la Web
José Ramón Méndez Reboredo
Departamento de Informática – Universidad de Vigo
2. Servlets: Introducción
Fueron introducidos por Sun en 1996 como pequeñas aplicaciones
●
Java para añadir funcionalidad dinámica a los servidores web.
Todos los servlets asociados con un servidor se ejecutan dentro de
●
un proceso simple. Cada vez que llega una petición, la JVM (Java
Virtual Machine) crea un hilo Java para manejar la petición,
reduciendo así la sobrecarga del sistema
Una desventaja de esta aproximación es que el contenido (estático y
●
dinámico) de la página HTML generada, reside en el código fuente
del servlet. Como consecuencia cualquier cambio estático en la
página (cambio de una URL de un enlace o una imagen), requiere la
intervención del programador y la recompilación del servlet.
Se escriben utilizando la API Servlet (que se distribuye como una
●
extensión estándar del JDK 1.2 y posteriores, sin formar parte del
núcleo de la plataforma Java).
El lunes 3 de noviembre de 2006 Java pasó a ser software libre y se
●
distribuye bajo licencia GNU GPL v.2
3. Contenedor de componentes de vista
El primer paso es descargar el software que implementa las
●
especificaciones Java Servlet 2.4 y Java Server Pages 2.0. Se puede
obtener una versión gratuita, conocida como Tomcat @ Jakarta en
http://jakarta.apache.org/tomcat/.
En la dirección http://java.sun.com/products/servlet/industry.html se
●
muestra un listado completo de servidores Web que soportan el API
Servlet.
Para trabajar con servlets es necesario importar el paquete
●
javax.servlet.
El método service() implementa el manejo real de la solicitud y
●
respuesta del servlet. El servidor web invoca a este método cuando
se solicita la URL del servlet. El servidor pasa los argumentos
ServletRequest y ServletResponse al servlet.
4. Servlet para generar una fecha
import javax.servlet.*;
import java.util.*;
import java.io.*;
public class TimeServlet extends GenericServlet
{
public String getServletInfo()
{
return quot;Time Servletquot;;
}
public void service(ServletRequest peticion, ServletResponse respuesta)
throws ServletException, IOException
{
String fecha = new Date().toString();
PrintStream outputStream = new PrintStream(respuesta.getOutputStream());
outputStream.println(fecha);
}
};
5. Servlet para generar una fecha
import javax.servlet.*;
import java.util.*;
import java.io.*;
public class TimeServlet extends GenericServlet
{
public String getServletInfo()
{
return quot;Time Servletquot;;
}
public void service(ServletRequest peticion, ServletResponse respuesta)
throws ServletException, IOException
{
String fecha = new Date().toString();
PrintStream outputStream = new PrintStream(respuesta.getOutputStream());
outputStream.println(fecha);
}
};
9. Cabeceras de solicitud
Cuando un cliente HTTP (por ejemplo, un navegador) envía una
●
petición, es necesario que suministre una línea de petición
(normalmente GET o POST). Es posible también enviar un número
de cabeceras que acompañan a la petición y que son opcionales
excepto Content-Length, que es requerida sólo para peticiones
POST. La Tabla 1 muestra las cabeceras más comunes que pueden
estar presentes en una petición HTTP.
Cabecera HTTP Significado
Accept Tipos MIME que prefiere el navegador.
Accept-Charset Conjunto de caracteres que espera el navegador.
Accept-Encoding Tipos de codificación de datos (como gzip) para que el navegador sepa cómo decodificarlos. Los servlets pueden
comprobar explícitamente el soporte para gzip y devolver páginas HTML comprimidas con gzip para navegadores que
las soportan, seleccionando la cabecera de respuesta Content-Encoding para indicar que están comprimidas con gzip.
En muchos casos, esto puede reducir el tiempo de descarga por un factor de cinco o diez.
Accept-Language Idioma que está esperando el navegador, en el caso de que el servidor tenga versiones en más de un idioma.
Authorization Información de autorización, usualmente en respuesta a una cabecera www-Authenticate enviada desde el servidor.
Connection ¿Se usan conexiones persistentes?. Si un servlet recupera un valor Keep-Alive de esta cabecera, u obtiene una línea de
petición con HTTP 1.1 (donde las conexiones son persistentes por defecto), es posible ahorrar un tiempo considerable
en el envío de páginas web que incluyen muchas piezas pequeñas (imágenes o applets). Para hacer esto, es necesario
enviar una cabecera Content-Length en la respuesta, escribiendo en un ByteArrayOutputStream, y preguntando por el
tamaño antes de escribir la salida.
Content-Length En mensajes POST especifica el número de datos que se han añadido.
Cookie Manejo de Cookies. (se explica porteriormente).
From Especifica la dirección de correo electrónico del usuario que realiza la petición. Sólo es usado por aceleradores web, no
por clientes personalizados ni por navegadores.
Host Host y puerto escuchado en la URL original
If-Modified-Since Sólo devuelve documentos más nuevos que el especificado, de otra forma se envía una respuesta 304 “Not Modified”
response.
Pragma El valor no-cache indica que el servidor debería devolver un documento nuevo, incluso si es un proxy con una copia
local.
Referer URL de la página que contiene el enlace que el usuario siguió para obtener la página actual.
User-Agent Especifica el tipo de navegador. Útil cuando el servlet está devolviendo contenido específico para un navegador.
UA-Pixels, UA-Color, UA- Cabeceras no estándar enviadas por algunas versiones de Internet Explorer, indicando el tamaño de la pantalla, la
OS, UA-CPU profundidad del color, el sistema operativo, y el tipo de CPU usada por el sistema del navegador.
10. Ejemplo
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestHeader extends HttpServlet {
public void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws IOException,
ServletException {
respuesta.setContentType(quot;text/htmlquot;);
PrintWriter out = respuesta.getWriter();
out.println(quot;<HTML><HEAD><TITLE>Página genereda por el servlet RequestHeader” +
“</TITLE><HEAD>quot;);
out.println(quot;<BODY BGCOLOR=quot;WHITEquot; TEXT=quot;BLACKquot;>quot;);
out.println(quot;<H1>MOSTRANDO LAS CABECERAS ENVIADAS POR EL CLIENTE</H1>quot;);
out.println(quot;<P>Request Method: quot; + peticion.getMethod() + quot;<BR>quot;);
out.println(quot;Request URI: quot; + peticion.getRequestURI() + quot;<BR>quot;);
out.println(quot;Request Protocol: quot; + peticion.getProtocol() + quot;<BR>quot;);
out.println(quot;<P><table border=quot;1quot;>quot;);
Enumeration e = peticion.getHeaderNames();
while (e.hasMoreElements()) {
String nombre = (String)e.nextElement();
String valor = peticion.getHeader(nombre);
out.println(quot;<tr><td>quot; + nombre + quot;</td><td>quot; + valor + quot;</td></tr>quot;);
}
out.println(quot;</table></BODY></HTML>quot;);
}
}
11. Ejemplo
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestHeader extends HttpServlet {
public void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws IOException,
ServletException {
respuesta.setContentType(quot;text/htmlquot;);
PrintWriter out = respuesta.getWriter();
out.println(quot;<HTML><HEAD><TITLE>Página genereda por el servlet RequestHeader” +
“</TITLE><HEAD>quot;);
out.println(quot;<BODY BGCOLOR=quot;WHITEquot; TEXT=quot;BLACKquot;>quot;);
out.println(quot;<H1>MOSTRANDO LAS CABECERAS ENVIADAS POR EL CLIENTE</H1>quot;);
out.println(quot;<P>Request Method: quot; + peticion.getMethod() + quot;<BR>quot;);
out.println(quot;Request URI: quot; + peticion.getRequestURI() + quot;<BR>quot;);
out.println(quot;Request Protocol: quot; + peticion.getProtocol() + quot;<BR>quot;);
out.println(quot;<P><table border=quot;1quot;>quot;);
Enumeration e = peticion.getHeaderNames();
while (e.hasMoreElements()) {
String nombre = (String)e.nextElement();
String valor = peticion.getHeader(nombre);
out.println(quot;<tr><td>quot; + nombre + quot;</td><td>quot; + valor + quot;</td></tr>quot;);
}
out.println(quot;</table></BODY></HTML>quot;);
}
}
12. Manejo de sesiones / Session Tracking
Una sesión es una conexión continuada de un mismo navegador a un
●
servidor web durante un intervalo prefijado de tiempo. Este tiempo
depende habitualmente del servidor, aunque a partir de la versión 2.1
de la API Servlet puede establecerse mediante el método
setMaxInactiveInterval(int) de la interfaz HttpSession. Esta interfaz es
la que proporciona los métodos necesarios para mantener sesiones.
La forma de obtener una sesión es mediante el método
●
getSession(boolean) de un objeto HttpServletRequest. Si el
parámetro es true se crea una sesión nueva si es necesario, mientras
que si es false, el método devolverá la sesión actual.
Una vez que se tiene un objeto HttpSession, es posible mantener una
●
colección de pares nombre/valor, de forma que pueda almacenarse
todo tipo de información sobre la sesión. Este valor puede ser
cualquier objeto de la clase Object que se desee. La forma de añadir
valores a la sesión es mediante el método putValue(String, Object) de
la interfaz HttpSession, y la de obtenerlos mediante el método
getValue(String) del mismo objeto.
13. Manejo de Sesiones (Sessión Tracking)
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SetSession extends HttpServlet {
public void service(HttpServletRequest peticion, HttpServletResponse respuesta) throws IOException, ServletException {
respuesta.setContentType(quot;text/htmlquot;);
PrintWriter out = respuesta.getWriter();
out.println(quot;<H3>Ejemplo de Sesiones</H3>quot;);
HttpSession session = peticion.getSession(true); // Se crea la sesion si es necesario
Date created = new Date(session.getCreationTime()); // Visualizar informacion de la sesion
Date accessed = new Date(session.getLastAccessedTime());
out.println(quot;<hr>quot;); out.println(quot;<b>ID:</b> quot; + session.getId() + quot;<br>quot;);
out.println(quot;<b>Fecha de creación:</b> quot; + created + quot;<br>quot;);
out.println(quot;<b>Fecha de último acceso:</b> quot; + accessed + quot;<br>quot;); out.println(quot;<hr><p>quot;);
String nombreDato = peticion.getParameter(quot;NombreDatoquot;); // Se guarda la información
if (nombreDato != null && nombreDato.length() > 0) {
String valorDato = peticion.getParameter(quot;ValorDatoquot;);
session.setAttribute(nombreDato, valorDato);
}
out.println(quot;<b><i>Los siguientes datos están en tu sesión:</b></i><br>quot;);
// Visualizar objetos contenidos en la sesion actual
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String nombre = (String)e.nextElement();
String valor = session.getAttribute(nombre).toString();
out.println(nombre + quot; = quot; + valor + quot;<BR>quot;);
}
}
}
14. Manejo de Sesiones (Sessión Tracking)
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SetSession extends HttpServlet {
public void service(HttpServletRequest peticion, HttpServletResponse respuesta) throws IOException, ServletException {
respuesta.setContentType(quot;text/htmlquot;);
PrintWriter out = respuesta.getWriter();
out.println(quot;<H3>Ejemplo de Sesiones</H3>quot;);
HttpSession session = peticion.getSession(true); // Se crea la sesion si es necesario
Date created = new Date(session.getCreationTime()); // Visualizar informacion de la sesion
Date accessed = new Date(session.getLastAccessedTime());
out.println(quot;<hr>quot;); out.println(quot;<b>ID:</b> quot; + session.getId() + quot;<br>quot;);
out.println(quot;<b>Fecha de creación:</b> quot; + created + quot;<br>quot;);
out.println(quot;<b>Fecha de último acceso:</b> quot; + accessed + quot;<br>quot;); out.println(quot;<hr><p>quot;);
String nombreDato = peticion.getParameter(quot;NombreDatoquot;); // Se guarda la información
if (nombreDato != null && nombreDato.length() > 0) {
String valorDato = peticion.getParameter(quot;ValorDatoquot;);
session.setAttribute(nombreDato, valorDato);
}
out.println(quot;<b><i>Los siguientes datos están en tu sesión:</b></i><br>quot;);
// Visualizar objetos contenidos en la sesion actual
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String nombre = (String)e.nextElement();
String valor = session.getAttribute(nombre).toString();
out.println(nombre + quot; = quot; + valor + quot;<BR>quot;);
}
}
}
15. Y si no hay cookies entonces reescritura de URLs
A pesar de que la mayoría de los navegadores más extendidos
●
soportan las cookies en la actualidad, para poder emplear sesiones
con clientes que, o bien no soportan cookies o bien las rechazan,
debe utilizarse la reescritura de URL’s.
Para emplear está técnica lo que se hace es incluir el código
●
identificativo de la sesión (sessionId) en la URL de la petición. Los
métodos que se encargan de reescribir la URL si fuera necesario son
encodeURL() y encodeRedirectURL(). El primero de ellos lee un
String que representa una URL y si fuera necesario la reescribe
añadiendo el identificativo de la sesión, dejándolo inalterado en caso
contrario. El segundo realiza lo mismo sólo que con URL’s de
redirección, es decir, permite reenviar la petición del cliente a otra
URL.
16. Reescritura de URLs
// ... continuación del código anterior
// Visualizar objetos contenidos en la sesion actual
Enumeration e = session.getAttributeNames();
int contValores = 1;
while (e.hasMoreElements())
{
++contValores;
String nombre = (String)e.nextElement();
String valor = session.getAttribute(nombre).toString();
out.println(nombre + quot; = quot; + valor + quot;<BR>quot;);
}
out.print(quot;<p><a href=quot;quot;);
out.print(respuesta.encodeURL( quot;SetSession?NombreDato=nombrequot; +
contValores + quot;&ValorDato=valorquot; +
contValores));
out.println(quot;quot; >URL encoded </a>quot;);
}
17. Subir ficheros al servidor
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<CENTER>
<FORM method=quot;POSTquot; enctype='multipart/form-data' action=quot;UploadFicheroquot;>
Por favor, seleccione el trayecto del fichero a cargar
<BR><INPUT type=quot;filequot; name=quot;ficheroquot;>
<INPUT type=quot;submitquot;>
</FORM>
</CENTER>
</BODY>
</HTML>
18. Subir ficheros al servidor
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<CENTER>
<FORM method=quot;POSTquot; enctype='multipart/form-data' action=quot;UploadFicheroquot;>
Por favor, seleccione el trayecto del fichero a cargar
<BR><INPUT type=quot;filequot; name=quot;ficheroquot;>
<INPUT type=quot;submitquot;>
</FORM>
</CENTER>
</BODY>
</HTML>
19. A continuación, se debe que crear un servlet que sea capaz de
●
procesar la respuesta. Para facilitar la labor se pueden emplear las
clases que proporciona un subproducto de Apache llamado fileupload
(http://jakarta.apache.org/commons/fileupload/). Se descarga el
fichero jar correspondiente y se incluye en el classpath. Para el
funcionamiento correcto de esta clase será necesario incluir,también
incluir en el classpath la implementación de Yakarta commons IO que
se puede descargar de http://jakarta.apache.org/commons/io/
●
21. public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
try {
DiskFileUpload fu = new DiskFileUpload(); // objeto que es capaz de parsear la perición
fu.setSizeMax(1024*1024*8); // máximo numero de bytes 8 MB
fu.setSizeThreshold(4096); // tamaño por encima del cual los ficheros son escritos en disco
fu.setRepositoryPath(quot;/tmpquot;); // directorio en el que se escribirán los ficheros con tamaño
// superior al soportado en memoria
List fileItems = fu.parseRequest(req); // ordenamos procesar los ficheros
if(fileItems == null) { return false; }
out.print(quot;<br>El número de ficheros subidos es: quot; + fileItems.size());
Iterator i = fileItems.iterator();// Iteramos por cada fichero
FileItem actual = null;
while (i.hasNext()) {
actual = (FileItem)i.next();
String fileName = actual.getName();
out.println(quot;<br>Nos han subido el ficheroquot; + fileName);
File fichero = new File(fileName); //construimos un objeto file para la ruta completa
fichero = new File(quot;c:ficherossubidosquot; + fichero.getName()); //obtener el nombre
actual.write(fichero); // escribimos el fichero colgando del nuevo path
}
} catch(Exception e) { return false; }
return true;
}
}
22. Generar imágenes desde servlets
Para codificar la imagen (Objeto Image), se puede usar la clase
●
GifEncoder que se puede descargar gratuitamente de
http://www.acme.com/java/software/Acme.JPM.Encoders.GifEncoder.
html.
GifEncoder permite codificar imágenes en formato GIF.
●
De la misma forma, se podría emplear las clases JPEGCodec,
●
JPEGEncodeParam y JPEGImageEncoder del paquete
com.sun.image.codec.jpeg que se distribuye con el propio JavaSE.
Es importante recordar que si se escoge esta opción el tipo de
●
respuesta del servlet será “image/jpeg” y que no es necesario
descargar ningún software adicional.
23. Generar imágenes desde Servlets
protected void processRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, java.io.IOException {
ServletOutputStream bufferSalida = res.getOutputStream();
Graphics contextoGrafico=null;
try {
// Construir un contexto de gráficos mediante una buffered image
int w = 200; int h = 50;
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
contextoGrafico=image.getGraphics();
contextoGrafico.setFont(new Font(quot;Arialquot;, Font.BOLD | Font.ITALIC, 20));
contextoGrafico.draw3DRect(0,0,w-1,h-1,true);
Date ahora = new Date();
SimpleDateFormat formateador = new SimpleDateFormat(quot;dd-MM-yyyy HH:mmquot;);
contextoGrafico.drawString(formateador.format(ahora), 20, 30);
// Encode the off screen graphics into a JPEG and send it to the client
res.setContentType(quot;image/jpegquot;);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bufferSalida);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1.0f, false); encoder.setJPEGEncodeParam(param);
encoder.encode(image);
bufferSalida.flush(); bufferSalida.close();
} finally { if (contextoGrafico != null) contextoGrafico.dispose(); }
}
24. Generar imágenes desde Servlets
protected void processRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, java.io.IOException {
ServletOutputStream bufferSalida = res.getOutputStream();
Graphics contextoGrafico=null;
try {
// Construir un contexto de gráficos mediante una buffered image
int w = 200; int h = 50;
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
contextoGrafico=image.getGraphics();
contextoGrafico.setFont(new Font(quot;Arialquot;, Font.BOLD | Font.ITALIC, 20));
contextoGrafico.draw3DRect(0,0,w-1,h-1,true);
Date ahora = new Date();
SimpleDateFormat formateador = new SimpleDateFormat(quot;dd-MM-yyyy HH:mmquot;);
contextoGrafico.drawString(formateador.format(ahora), 20, 30);
// Encode the off screen graphics into a JPEG and send it to the client
res.setContentType(quot;image/jpegquot;);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bufferSalida);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1.0f, false); encoder.setJPEGEncodeParam(param);
encoder.encode(image);
bufferSalida.flush(); bufferSalida.close();
} finally { if (contextoGrafico != null) contextoGrafico.dispose(); }
}
25. Generar imágenes desde Servlets
protected void processRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, java.io.IOException {
ServletOutputStream bufferSalida = res.getOutputStream();
Graphics contextoGrafico=null;
try {
// Construir un contexto de gráficos mediante una buffered image
int w = 200; int h = 50;
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
contextoGrafico=image.getGraphics();
contextoGrafico.setFont(new Font(quot;Arialquot;, Font.BOLD | Font.ITALIC, 20));
contextoGrafico.draw3DRect(0,0,w-1,h-1,true);
Date ahora = new Date();
SimpleDateFormat formateador = new SimpleDateFormat(quot;dd-MM-yyyy HH:mmquot;);
contextoGrafico.drawString(formateador.format(ahora), 20, 30);
// Encode the off screen graphics into a JPEG and send it to the client
res.setContentType(quot;image/jpegquot;);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bufferSalida);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1.0f, false); encoder.setJPEGEncodeParam(param);
encoder.encode(image);
bufferSalida.flush(); bufferSalida.close();
} finally { if (contextoGrafico != null) contextoGrafico.dispose(); }
}
26. JSP
JSP es una tecnología basada en Java que simplifica el proceso de
●
desarrollo de sitios web dinámicos. Las Java Server Pages son
ficheros de texto (normalmente con extensión .jsp) que sustituyen a
las páginas HTML tradicionales. Los ficheros JSP contienen etiquetas
HTML y código embebido que permite al diseñador de la página web
acceder a datos desde código Java que se ejecuta en el servidor.
Es una tecnología híbrida basada en template systems. Al igual que
●
ASP, SSJS y PHP puede incorporar scripts para añadir código Java
directamente a las páginas .jsp, pero también implementa, al estilo de
ColdFusion, un conjunto de etiquetas que interaccionan con los
objetos Java del servidor, sin la necesidad de aparezca código fuente
en la página.
JSP se implementa utilizando la tecnología Servlet. Cuando un
●
servidor web recibe una petición de una página .jsp, la redirecciona a
un proceso especial dedicado a manejar la ejecución de servlets
(servlet container).
28. Directivas JSP
<%@ include file=”localURL” %>
●
Permite incluir el contenido de otra página .html o .jsp. El fichero es
●
identificado mediante una URL y la directiva tiene el efecto de
remplazarse a sí misma con el contenido del archivo especificado.
Puede ser utilizada para incluir cabeceras y pies de páginas comunes
a un desarrollo dado.
<%@ taglib uri=”tagLibraryURI” prefix=”tagPrefix” %>
●
Esta directiva se utiliza para notificar al contenedor JSP que la página
●
utilizará una o más librerías de etiquetas personalizadas. Una librería
de etiquetas es una colección de etiquetas personalizadas, que
pueden ser utilizadas para extender la funcionalidad básica de JSP.
El valor del atributo uri indica la localizacion del TLD (Tag Library
●
Descriptor), mientras que el atributo prefix especifica el identificador
del espacio de nombres en XML que será anexado a todas la
etiquetas de esa librería que se utilicen en la página .jsp.
Por razones de seguridad, la especificación JSP permite utilizar
●
solamente TLD’s del sistema de archivos local.
29. Declaraciones globales
Las declaraciones se usan para definir variables y métodos
●
específicos para una página .jsp. Las variables y los métodos
declarados son accesibles por cualquier otro elemento de script de la
página, aunque estén codificados antes que la propia declaración. La
sintaxis es:
<%! declaracion (es) %>
●
<%! public long factorial (long numero) {
if (numero == 0) return 1;
else return numero * factorial(numero – 1);
} %>
<%! private int x = 0, y = 0; private String unidad=”cm”; %>
30. Declaraciones globales
Un uso importante de la declaración de métodos es el manejo de
●
eventos relacionados con la inicialización y destrucción de la página
.jsp. La inicialización ocurre la primera vez que el contenedor JSP
recibe una petición de una página .jsp concreta. La destrucción
ocurre cuando el contenedor JSP descarga la clase de memoria o
cuando el contenedor JSP se reinicia.
Estos eventos se pueden controlar sobreescribiendo dos métodos
●
que son llamados automáticamente: jspInit() y jspDestroy(). Su
codificación es opcional.
<%! public void jspInit () {
// El código de inicialización iría aquí.
}
public void jspDestroy() {
// El código de finalización iría aquí.
}
%>
31. Expresiones y Scriptlets
<%= expresión %>
●
Las expresiones están ligadas a la generación de contenidos. Se
●
pueden utilizar para imprimir valores de variables o resultados de la
ejecución de algún método. Todo resultado de una expresión es
convertido a un String antes de ser añadido a la salida de la página.
Las expresiones no terminan con un punto y coma (;).
<% scriptlet %>
●
Los scriptlets pueden contener cualquier tipo de sentencias Java,
●
pudiendo dejar abiertos uno o más bloques de sentencias que
deberán ser cerradas en etiquetas de scritplets posteriores.
32. Ejemplo: factorial
<!-- factorialestry.jsp -->
<HTML><HEAD>
<TITLE>La segunda página con JSP</TITLE>
</HEAD>
<BODY BGCOLOR=quot;#FFFFFFquot;>
<%! public long factorial (long numero) throws IllegalArgumentException
{
if ((numero < 0) || (numero > 20))
throw new IllegalArgumentException(quot;Fuera de Rangoquot;);
if (numero == 0) return 1;
else return numero * factorial(numero - 1);
} %>
<% try {
long resultado = factorial (x); %>
<p align=center> <%= x %>! = <%= resultado %></p>
<% } catch (IllegalArgumentException e) { %>
<p>El argumento para calcular el factorial esta fuera de rango.</p>
<% } %>
</BODY>
</HTML>
33. Comentarios
<!-- comentario HTML -->
●
<%-- comentario JSP --%>
●
<% /* comentario de scriptlet */ %>
●
<% // comentario de scriptlet %>
●
34. Acciones
<jsp:forward page=”localURL” />
●
Se usa para transferir el control de una página .jsp a otra localización.
●
Cualquier código generado hasta el momento se descarta, y el
procesado de la petición se inicia en la nueva página. El navegador
cliente sigue mostrando la URL de la página .jsp inicial.
<jsp:include page=”localURL” flush=”true” />
●
Proporciona una forma sencilla de incluir contenido generado por otro
●
documento local en la salida de la página actual. En contraposición
con la etiqueta forward, include transfiere el control temporalmente.
35. Objetos implícitos
Objetos implícitos
●
Objeto Clase o Interfaz Descripción
page javax.servlet.jsp.HttpJspPage Instancia del servlet de la página .jsp.
config javax.servlet.ServletConfig Datos de configuración del servlet.
request javax.servlet.http.HttpServletRequest Petición. Parámetros incluidos.
response javax.servlet.http.HttpServletResponse Respuesta.
out javax.servlet.jsp.JspWriter Stream de salida para el contenido de la
página.
session javax.servlet.http.HttpSession Datos específicos de la sesión de usuario.
application javax.servlet.ServletContext Datos compartidos por todas las páginas.
pageContext javax.servlet.jsp.PageContext Contexto para la ejecución de las páginas.
exception java.lang.Throwable Excepción o error no capturado.
36. Factoriales
<!-- factoriales.jsp -->
<HTML>
<HEAD>
<TITLE>Cálculo de factoriales con JSP</TITLE>
</HEAD>
<BODY BGCOLOR=quot;#FFFFFFquot;>
<%! public long factorial (long numero)
{
if (numero == 0) return 1;
else return numero * factorial(numero - 1);
} %>
<H1>TABLA DE FACTORIALES</H1>
<table border=quot;1quot;>
<tr><th><i>x</i></th><th><i>x</i>!</th></tr>
<% for (long x = 0; x <=20; ++x) { %>
<tr><td><%= x %></td><td><%= factorial (x) %></td></tr>
<% } %>
</table>
</BODY>
</HTML>
37. Factoriales
<!-- factoriales.jsp -->
<HTML>
<HEAD>
<TITLE>Cálculo de factoriales con JSP</TITLE>
</HEAD>
<BODY BGCOLOR=quot;#FFFFFFquot;>
<%! public long factorial (long numero)
{
if (numero == 0) return 1;
else return numero * factorial(numero - 1);
} %>
<H1>TABLA DE FACTORIALES</H1>
<table border=quot;1quot;>
<tr><th><i>x</i></th><th><i>x</i>!</th></tr>
<% for (long x = 0; x <=20; ++x) { %>
<tr><td><%= x %></td><td><%= factorial (x) %></td></tr>
<% } %>
</table>
</BODY>
</HTML>
38. Excepciones
<!-- factorialestry.jsp -->
<HTML><HEAD>
<TITLE>Cálculo de factoriales con JSP y manejo de excepciones</TITLE>
</HEAD>
<BODY BGCOLOR=quot;#FFFFFFquot;>
<%! int x = 21; %>
<%! public long factorial (long numero) throws IllegalArgumentException
{
if ((numero < 0) || (numero > 20))
throw new IllegalArgumentException(quot;Fuera de Rangoquot;);
if (numero == 0) return 1;
else return numero * factorial(numero - 1);
} %>
<% try {
long resultado = factorial (x); %>
<p align=center> <%= x %>! = <%= resultado %></p>
<% } catch (IllegalArgumentException e) { %>
<p>El argumento para calcular el factorial esta fuera de rango.</p>
<% } %>
</BODY>
39. Tendencias actuales
Modelo Vista Controlador (MVC) es un patrón de arquitectura de
●
software que separa los datos de una aplicación, la interfaz de
usuario, y la lógica de control en tres componentes distintos. El patrón
MVC se emplea frecuentemente en aplicaciones web, donde la vista
es la página HTML ó XHTML. En web se usa el conocido MVC Model
2
Actualmente:
●
40. Tendencias actuales
Ventajas
●
No es necesario reescribir las vistas
–
Las acciones se programan una sola vez
–
Acciones que se pueden ejecutar sobre los datos y vistas se definen de
–
forma independiente garantizando una mayor independencia de los
componentes del software
Las acciones sobre los datos se pueden reutilizar fácilmente para
–
construir otro tipo de aplicaciones (Como por ejemplo Swing con el API
Action)
Actualmente la persistencia de datos se implementa mediante
●
tecnologías ORM ó, en algunos casos application scafolding.
ORM implica que los objetos se mapean automáticamente a una base
–
de datos (a veces es necesario decir cómo se almacenan los atributos
en ficheros de configuración). Ejemplos: Hibernate que actualmente
implementa la Java Persistent API (Extremadamente fácil de manejar)
Application scafolding significa generar código de forma automática a
–
partir de una base de datos. No esta tan flexible como ORM.
41. Hibernate
package es.ei.uvigo;
@Entity
@Table( name=“users” )
public class User implements Serializable{
private String username;
@Id
@Column(name = quot;usernamequot;, nullable = false)
private String username;
@Column(nullable = false, length = 50, unique = true)
private String clave;
public String getUsername(){
return username;
}
public String getClave(){
return clave;
}
public void setUsername(String username){
this.username=username;
}
public void setClave(String clave){
this.clave=clave;
}
}
42. Fichero de configuración
<persistence> <!-- Colocalo en el directorio META-INF del fichero .jar y llámalo persistence.xml -->
<persistence-unit name=quot;manager1quot; transaction-type=quot;RESOURCE_LOCALquot;>
<class>es.ei.uvigo.User</class>
<class>es.ei.uvigo.Cars</class>
<!-- enumera todas las clases persistentes -->
<properties>
<property name=quot;hibernate.dialectquot; value=quot;org.hibernate.dialect.HSQLDialectquot;/>
<property name=quot;hibernate.connection.driver_classquot; value=quot;org.hsqldb.jdbcDriverquot;/>
<property name=quot;hibernate.connection.usernamequot; value=quot;saquot;/>
<property name=quot;hibernate.connection.passwordquot; value=quot;quot;/>
<property name=quot;hibernate.connection.urlquot; value=quot;jdbc:hsqldb:.quot;/>
<property name=quot;hibernate.max_fetch_depthquot; value=quot;3quot;/>
<!-- cache configuration -->
<property name=quot;hibernate.ejb.classcache.org.hibernate.ejb.test.Itemquot; value=quot;read-writequot;/>
<property name=quot;hibernate.ejb.collectioncache.org.hibernate.ejb.test.Item.distributorsquot;
value=quot;read-write, RegionNamequot;/>
</properties>
</persistence-unit>
</persistence>
43. Hibernate
// Use persistence.xml configuration
EntityManagerFactory
emf = Persistence.createEntityManagerFactory(quot;manager1quot;);
// Retrieve an application managed entity manager
EntityManager em = emf.createEntityManager();
User u=new User();
u.setUsername(“moncho”);
u.setClave(“xjmon764d”);
em.persist(u);
em.close();
emf.close(); //close at application end