Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de...
Transcript of Servlets - OoCities · Servlet Laboratorio de Programacion 30 Aplicaciones Web JEE Colección de...
Servlets
Unidad: 4Laboratorio de Programación
Universidad Nacional de la Patagonia AustralUnidad Académica Río Gallegos
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
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.
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.
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.
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.
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.
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
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.
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.
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.
Servlet Laboratorio de Programacion 11
Servlets: ciclo de vida…
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
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
{ ... }
}
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
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.
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.
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.
Configuración
Tomcat y Eclipse JEE
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:
Servlet Laboratorio de Programacion 20
Eclipse: creación de un Server
� Seleccionar la opcion File->New->Other->Server
Servlet Laboratorio de Programacion 21
Eclipse: creación de un Server
� Configuración
Servlet Laboratorio de Programacion 22
Eclipse: creación de un Server
� Vista una vez creado el Server
Servlet Laboratorio de Programacion 23
Eclipse: crear proyecto
� Seleccionar la opción File->New->Web->Dynamic Web Project
Servlet Laboratorio de Programacion 24
Eclipse: crear proyecto
� Vista una vez creado el proyecto dinámico
Servlet Laboratorio de Programacion 25
Eclipse: crear un servlet
� Seleccionar la opción File->New->Web->Servlet
Servlet Laboratorio de Programacion 26
Eclipse: crear un servlet
� Vista una vez creado el servlet
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>");
}
}
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>
Servlet Laboratorio de Programacion 29
API de los servlets
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
Servlet Laboratorio de Programacion 31
Consultas…
Servlet Laboratorio de Programacion 32
Próxima clase
� Ultima clase teórica
� Comunicación entre servlets
� Manejo de Sesiones
� Ejemplos y ejercitación