Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de...

33
Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Transcript of Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de...

Page 1: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlets

Unidad: 4Laboratorio de Programación

Universidad Nacional de la Patagonia AustralUnidad Académica Río Gallegos

Page 2: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 1

Indice

� Introducción� CGI� Servlets: concepto, caracteristicas� Servlets Vs. CGI� Ciclo de vida de un servlet� Configuración: Tomcat y Eclipse JEE� Creación de Server, Proyectos Dinámicos Web y

Servlets Java� Ejemplos y ejercitación

Page 3: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 2

Introducción� Principio básico de funcionamiento de la World Wide Web:

� Usuario que mediante un browser (cliente) solicita un servicio (páginas HTML, etc.) a una computadora que hace las veces de servidor.

� Servidores HTTP� Primera concepción: mero servidor de ficheros HTML � Evoluciono en dos direcciones complementarias:

� Añadir más inteligencia en el servidor, y� Añadir más inteligencia en el cliente.

Page 4: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 3

Introducción…

� Diversas formas de añadir inteligencia a los clientes (páginas HTML):

� Javascript (<SCRIPT> … </SCRIPT>)

� Applets de Java (clases de Java que se cargan y se ejecutan en el cliente).

� Programas CGI (Common Gateway Interface), unida a los formularios HTML permiten de alguna manera invertir el sentido del flujo de la información.

Page 5: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 4

Introducción…

� Programas CGI� Surgió de la necesidad de generar respuestas dinámicas HTML

� Las aplicaciones CGI se ejecutan en el servidor

� Es una interfaz para comunicar al servidor, con programas externos que implementen alguna funcionalidad (cliente).

� Escritos en Perl y C/C++.

� Existen dos formas principales de pasar los datos del formulario al programa CGI: métodos GET y POST.

� La forma de enviar la respuesta al cliente desde el servidor es a través de una página HTML.

Page 6: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 5

Servlets

� Los Servlets son las respuesta de la tecnología Java a la programación CGI.

� Son programas que se ejecutan en un servidor Web y construyen páginas Web dinámicas.

� Introducidos por Sun en 1996� Construir páginas Web dinámicas es útil (y comunmente usado) por

un número de razones:� La página Web está basada en datos envíados por el usuario.

� Por ejemplo, las páginas de resultados de los motores de búsqueda

� Los datos cambian frecuentemente. � Por ejemplo, un informe sobre el tiempo o páginas de noticias

� Las páginas Web que usan información desde bases de datos corporativas u otras fuentes.

� Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line.

Page 7: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 6

Ventajas sobre CGI

� Rendimiento� Cada petición a un CGI provoca la creación de un nuevo proceso.� Los contenedores de servlets arrancan un nuevo thread.

� Eficiencia� La máquina Virtual Java permanece arrancada, y cada petición es manejada

por un thread Java de peso ligero, no un pesado proceso del sistema operativo.

� Portabilidad� Se necesita portar los CGIs entre distintas plataformas� Los servlets son independientes de la plataforma

� Desarrollo� Las APIs e IDEs de Java facilitan mucho el desarrollo

� Características Avanzadas� Programación Distribuida, Acceso a Bases de Datos, etc. Mucho más

sencillas en los servlets.

Page 8: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 7

Hilos vs. Procesos

� Un proceso (abstracción creada por el SO) es simultáneamente:� La unidad de ejecución (cada proceso se puede lanzar/detener por

separado)� Un conjunto de recursos (cto de ficheros abiertos, mapa de

memoria, etc.)

� Un hilo es una actividad concurrente dentro de un proceso� Podemos definir varios hilos concurrentes dentro de un proceso� El hilo es la unidad de ejecución� Pero prácticamente no posee recursos. Todos los hilos comparten

los recursos del proceso

� La creación/destrucción/etc. De hilos es mucho más barata que la de procesos

Page 9: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 8

Servlets: características� Los servlets se utilizan para extender o implementar funcionalidades en un servidor.

� Son módulos de software que se ejecutan dentro del entorno de un servidor y proveen servicios de tipo petición/respuesta.

� Son componentes escritos en Java, situados en los servidores e independientes de cualquier protocolo y de cualquier plataforma.

� Son los equivalentes en los servidores a los applets en el cliente. Sin embargo, a diferencia de los applets, los servlets no tienen representación gráfica.

� Los servlets pueden estar en muchos tipos de servidores. Pero su uso más común es en servidores web. Existen muchos servidores web que soportan el uso de servlets (JWS, Tomcat, JRun, Websphere, etc.).

� Un servlet se instancia la primera vez y se mantiene en memoria esperando nuevas invocaciones (el servidor web tiene una máquina virtual java que es la que ejecuta el servlet).

� La comunicación entre servlets es fácil porque ya están en memoria. El servidor web te da el mecanismo para que se comuniquen entre ellos.

Page 10: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 9

Servlets: contenedores

� Un servlet es un objeto que se ejecuta en un servidor o contenedor

� Contenedores de servlets� Los contenedores de servlets son los

responsables de manejar las peticiones de los clientes, proporcionárselas al servletcorrespondiente y devolver la respuesta al cliente.

� Se encargan de determinar� los detalles de la comunicación.� cómo se entrega una petición al servlet.� cómo se envía una respuesta al cliente.

� Se ajustan a la API de servlets� Establecen el mecanismo de comunicación.

Page 11: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 10

Servlets: ciclo de vida

� El cliente solicita una petición a un servidor vía URL.� El servidor recibe la petición:

� Si es la 1ra. vez, se utiliza el motor de Servlets para cargarlo y se llama al método init().

� Si ya esta iniciado, la petición se convierte en un nuevo hilo. Un Servlet puede manejar múltiples peticiones de clientes.

� Se llama al método service() para procesar la petición, devolviendo el resultado al cliente.

� Cuando termina la ejecución del Servlet y no hay mas requerimientos, se llama al método destroy(), que lo destruye y libera los recursos abiertos.

� Todo esto lo maneja el contenedor de servlets.

Page 12: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 11

Servlets: ciclo de vida…

Page 13: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 12

Proceso de una solicitud (request)

� Un cliente hace una solicitud al servidor

� La solicitud es asignado a un servlet por el servidor.

� El servlet llama al método service() con el objeto Request y el objeto Response (respuesta)

� El Server devuelve una respueste a través del servlet.

Client

ServerServlet EngineRequest

Servlet

Service(ServletRequest,ServletResponse)�

ServletInputStreamServletInputStream

ServletOutputStreamServletOutputStream

Response

Page 14: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 13

Estructura de un Servlet HTTP

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Prueba extends HttpServlet

{ public void doGet( HttpServletRequest request,

HttpServletResponse response ) throws ServletException, IOException

{ ... }

}

Page 15: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 14

Herramientas� Versión Java JDK 1.5 o superior� Un servidor Web que soporte Servlets

� Apache TomCat 6.0, se encuentra en la dirección http://tomcat.apache.org/

� Descargar versión de Eclipse JEE (Enterprise Edition, antes llamada J2EE)� Java EE incluye varias API tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML,

etc y define cómo coordinarlos. � Java EE configura algunas especificaciones que incluyen Enterprise JavaBeans,

servlets, JavaServer Pages y varias tecnologías de servicios web. � Permite crear una Aplicación de Empresa portable entre plataformas y escalable, a

la vez que integrable con tecnologías anteriores. � El servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad,

concurrencia y gestión de los componentes.� Los desarrolladores pueden concentrarse más en la lógica de negocio de los

componentes en lugar de en tareas de mantenimiento de bajo nivel.

� Para instalar Apache Tomcat� Bajarse el fichero de http://tomcat.apache.org/download-55.cgi� Instalación normal (Todo por defecto) � Probar que funciona mediante la siguiente ruta: http://localhost:8080 � Reiniciar el Tomcat

Page 16: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 15

Tipos de peticiones por formulario

� Existen dos métodos de envío de formulario en html: GET y POST.� POST sirve para enviar datos ocultos entre páginas, o sea

los datos no se ven en la barra de direcciones (URL).

� GET envía los datos a través de la barra de direcciones, siendo más riesgoso en cuanto a seguridad se refiere.

� Los servlets cuentan con dos métodos: doGet y doPost, los cuales capturan información enviada a través de GET y POST, respectivamente.

� Por defecto el ingreso a cualquier página (index.html) es por medio de GET.

Page 17: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 16

Servlets: Métodos doGet y doPost

� Reciben interfaces instanciadas:� "HttpServletRequest" para manejo de la información enviada

por el usuario.� "HttpServletResponse" para poder enviar una respuesta en

forma de pagina web.� protected void doGet(HttpServletRequest req,

HttpServletResponse resp) throws ServletException, java.io.IOException

� protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException

� Normalmente se implementa uno de los dos y desde el otro, delegamos en el implementado, de forma que pueda responder ambos tipos de peticiones.

Page 18: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 17

Servlets: Respondiendo en HTML

� La salida del servlet será normalmente un documento HTML.

� Dos pasos:� Indicar la cabecera de la respuesta el tipo de contenido que

vamos a retornar. El caso mas habitual será devolver HTML o XML.

� Al ser un proceso tan común existe un método que nos lo soluciona directamente: "setContentType" de "HttpServletResponse"

� Crear y enviar código HTML válido.

Page 19: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Configuración

Tomcat y Eclipse JEE

Page 20: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 19

TOMCAT

� Apache Tomcat es un contenedor de servlets que soporta tecnologías como Java Servlets y JavaServer Pages.

� Es Open Source

� Si todo esta correcto, ejecutar en la barra de direcciones http:://localhost:8080, y nos debería mostrar lo siguiente:

Page 21: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 20

Eclipse: creación de un Server

� Seleccionar la opcion File->New->Other->Server

Page 22: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 21

Eclipse: creación de un Server

� Configuración

Page 23: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 22

Eclipse: creación de un Server

� Vista una vez creado el Server

Page 24: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 23

Eclipse: crear proyecto

� Seleccionar la opción File->New->Web->Dynamic Web Project

Page 25: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 24

Eclipse: crear proyecto

� Vista una vez creado el proyecto dinámico

Page 26: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 25

Eclipse: crear un servlet

� Seleccionar la opción File->New->Web->Servlet

Page 27: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 26

Eclipse: crear un servlet

� Vista una vez creado el servlet

Page 28: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 27

Ejemplo Servlet: HolaMundoimport java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)�

throws ServletException, IOException {

res.setContentType("text/html");

PrintWriter out = res.getWriter();

out.println("<HTML>");

out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>"); out.println("<BODY>"); out.println("<BIG>Hello World</BIG>"); out.println("</BODY></HTML>");

}

}

Page 29: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 28

Ejemplo c/formulario HTML

<HTML><HEAD><TITLE>Introductions</TITLE><BODY><FORM METHOD= GET ACTION="Hello" >If you don´t mind me asking, what is your name?<INPUT TYPE=TEXT NAME="name" ><P><INPUT TYPE=SUBMIT></FORM></BODY></HTML>

Page 30: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 29

API de los servlets

Page 31: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 30

Aplicaciones Web JEE� Colección de recursos tales como

� Jsp� Servlets� Archivos Html� Imagenes,� Etc…

� Ubicados en un URL específica� Una aplicación web está organizada en una estructura jerárquica de directorios

� dos partes� Un directorio privado WEB-INF

� contiene los recursos que no son descargables para el cliente� Un directorio público que contiene los recursos públicos

� Ejemplo: miaplicación\� index.html� login.jsp� images\ logo.gif� doc\ tutorial.pdf� WEB-INF\� web.xml (Deployment Descriptor)� classes\ ServletCompras.class� lib\ cualquierOtraApi.jar

Page 32: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 31

Consultas…

Page 33: Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de recursos tales como Jsp Servlets Archivos Html Imagenes, Etc… Ubicados en un URL

Servlet Laboratorio de Programacion 32

Próxima clase

� Ultima clase teórica

� Comunicación entre servlets

� Manejo de Sesiones

� Ejemplos y ejercitación