Servlets - Universidad Distrital

Anuncio
Servlets
Unidad: 4
Laboratorio de Programación
Universidad Nacional de la Patagonia Austral
Unidad Académica Río Gallegos
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
1
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:
Servlet
Añadir más inteligencia en el servidor, y
Añadir más inteligencia en el cliente.
Laboratorio de Programacion
2
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
3
Introducción…
Programas CGI
Servlet
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.
Laboratorio de Programacion
4
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.
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.
Servlet
Por ejemplo, las páginas de resultados de los motores de búsqueda
Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line.
Laboratorio de Programacion
5
Ventajas sobre CGI
Rendimiento
Eficiencia
Se necesita portar los CGIs entre distintas plataformas
Los servlets son independientes de la plataforma
Desarrollo
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
Cada petición a un CGI provoca la creación de un nuevo proceso.
Los contenedores de servlets arrancan un nuevo thread.
Las APIs e IDEs de Java facilitan mucho el desarrollo
Características Avanzadas
Servlet
Programación Distribuida, Acceso a Bases de Datos, etc. Mucho más
sencillas en los servlets.
Laboratorio de Programacion
6
Hilos vs. Procesos
Un proceso (abstracción creada por el SO) es simultáneamente:
Un hilo es una actividad concurrente dentro de un proceso
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.)
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
7
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
8
Servlets: contenedores
Un servlet es un objeto que se ejecuta en
un servidor o contenedor
Contenedores de servlets
Se encargan de determinar
Los contenedores de servlets son los
responsables de manejar las peticiones de los
clientes, proporcionárselas al servlet
correspondiente y devolver la respuesta al
cliente.
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
Servlet
Establecen el mecanismo de comunicación.
Laboratorio de Programacion
9
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
10
Servlets: ciclo de vida…
Servlet
Laboratorio de Programacion
11
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.
Request
Servlet Engine
Server
Client
ServletInputStream
Response
Service(
ServletRequest,
ServletResponse)
Servlet
ServletOutputStream
Servlet
Laboratorio de Programacion
12
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
13
Herramientas
Versión Java JDK 1.5 o superior
Un servidor Web que soporte Servlets
Descargar versión de Eclipse JEE (Enterprise Edition, antes llamada J2EE)
Apache TomCat 6.0, se encuentra en la dirección http://tomcat.apache.org/
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
Servlet
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
Laboratorio de Programacion
14
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
15
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
16
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.
Servlet
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.
Laboratorio de Programacion
17
Configuración
Tomcat y Eclipse JEE
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
19
Eclipse: creación de un Server
Seleccionar la opcion File->New->Other->Server
Servlet
Laboratorio de Programacion
20
Eclipse: creación de un Server
Configuración
Servlet
Laboratorio de Programacion
21
Eclipse: creación de un Server
Vista una vez creado el Server
Servlet
Laboratorio de Programacion
22
Eclipse: crear proyecto
Seleccionar la opción File->New->Web->Dynamic Web Project
Servlet
Laboratorio de Programacion
23
Eclipse: crear proyecto
Vista una vez creado el proyecto dinámico
Servlet
Laboratorio de Programacion
24
Eclipse: crear un servlet
Seleccionar la opción File->New->Web->Servlet
Servlet
Laboratorio de Programacion
25
Eclipse: crear un servlet
Vista una vez creado el servlet
Servlet
Laboratorio de Programacion
26
Ejemplo Servlet: HolaMundo
import 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
27
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
28
API de los servlets
Servlet
Laboratorio de Programacion
29
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
30
Consultas…
Servlet
Laboratorio de Programacion
31
Próxima clase
Ultima clase teórica
Comunicación entre servlets
Manejo de Sesiones
Ejemplos y ejercitación
Servlet
Laboratorio de Programacion
32
Descargar