Servlets - OoCities

milklivereddeepInternet και Εφαρμογές Web

13 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

106 εμφανίσεις

ServletLaboratorio de Programacion1
Indice
￿
Introducción
￿
CGI
￿
Servlets: concepto, caracteristicas
￿
ServletsVs. CGI
￿
Ciclode vidade un servlet
￿
Configuración: Tomcat y Eclipse JEE
￿
Creaciónde Server, ProyectosDinámicosWeb y
ServletsJava
￿
Ejemplosy ejercitación
ServletLaboratorio de Programacion2
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
.
ServletLaboratorio de Programacion3
Introducción…
￿
Diversas formas de añadir inteligencia a los clientes
(páginas
HTML
):
￿
Javascript(
<SCRIPT> …</SCRIPT>
)
￿
Appletsde Java (
clases de
Java
que se cargan y se
ejecutan en el cliente
)
.
￿
Programas CGI
(
CommonGatewayInterface
), unida a
los
formularios HTML
permiten de alguna manera invertir
el sentido del flujo de la información.
ServletLaboratorio de Programacion4
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 Perly C/C++.
￿
Existen dos formas principales de pasar los datos del formularioal 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.
ServletLaboratorio de Programacion5
Servlets
￿
Los Servletsson 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ámicases útil (y comunmenteusado) por
un número de razones:
￿
La página Web estábasada en datos envíadospor 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.
ServletLaboratorio de Programacion6
Ventajas sobre CGI
￿
Rendimiento
￿
Cada petición a un CGI provoca la creación de un nuevo proceso.
￿
Los contenedores de servletsarrancan un nuevo thread.
￿
Eficiencia
￿
La máquina Virtual Java permanece arrancada, y cada petición es manejada
por un threadJava de peso ligero, no un pesado proceso del sistema
operativo.
￿
Portabilidad
￿
Se necesita portar los CGIsentre distintas plataformas
￿
Los servletsson independientes de la plataforma
￿
Desarrollo
￿
Las APIse IDEsde Java facilitan mucho el desarrollo
￿
Características Avanzadas
￿
Programación Distribuida, Acceso a Bases de Datos, etc. Mucho más
sencillas en los servlets.
ServletLaboratorio de Programacion7
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 (ctode 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
ServletLaboratorio de Programacion8
Servlets: características
￿
Los servletsse 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 appletsen el cliente. Sin embargo, a
diferencia de los applets, los servletsno tienen representación gráfica.
￿
Los servletspueden estar en muchos tipos de servidores. Pero su uso más común es
en servidores web. Existen muchos servidores webque soportan el uso de servlets(JWS,
Tomcat, JRun, Websphere, etc.).
￿
Un servletse instancia la primera vez y se mantiene en memoria esperando
nuevas invocaciones (el servidor webtiene una máquina virtual java que es la que ejecuta
el servlet).
￿
La comunicación entre servletses fácil porque ya están en memoria. El servidor
webte da el mecanismo para que se comuniquen entre ellos.
ServletLaboratorio de Programacion9
Servlets: contenedores
￿
Un servletes un objeto que se ejecuta en
un servidor o contenedor
￿
Contenedores de servlets
￿
Los contenedores de servletsson los
responsables de manejar las peticiones de los
clientes, proporcionárselas al servlet
correspondiente 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.
ServletLaboratorio de Programacion10
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 Servletspara cargarlo
y se llama al método init().
￿
Si ya esta iniciado, la petición se convierte en un nuevo hilo.
Un Servletpuede 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 Servlety 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.
ServletLaboratorio de Programacion11
Servlets: ciclo de vida…
ServletLaboratorio de Programacion12
Proceso de una solicitud
(request)
￿
Un clientehaceunasolicitudal servidor
￿
La solicitudesasignadoa un servletporel servidor.
￿
El servletllama al métodoservice() con el objetoRequest y el objetoResponse
(respuesta)
￿
El Server devuelveunarespuestea travésdel servlet.
Client
Server
Servlet Engine
Request
Servlet
Service(
ServletRequest,
ServletResponse)￿
ServletInputStream
ServletInputStream
ServletOutputStream
ServletOutputStream
Response
ServletLaboratorio de Programacion13
Estructura de un ServletHTTP
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassPrueba extendsHttpServlet
{
publicvoiddoGet( HttpServletRequestrequest,
HttpServletResponseresponse )
throwsServletException, IOException
{
...
}
}
ServletLaboratorio de Programacion14
Herramientas
￿
Versión Java JDK 1.5 o superior
￿
Un servidor Web que soporte Servlets
￿
Apache TomCat6.0, se encuentra en la dirección http://tomcat.apache.org/
￿
Descargar versión de Eclipse JEE (EnterpriseEdition, antes llamada J2EE)
￿
Java EE incluye varias API tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML,
etcy define cómo coordinarlos.
￿
Java EE configura algunas especificaciones que incluyen EnterpriseJavaBeans,
servlets, JavaServerPagesy varias tecnologías de servicios web.
￿
Permite crear una Aplicación de Empresa portableentre 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
ServletLaboratorio de Programacion15
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 servletscuentan con dos métodos: doGety
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.
ServletLaboratorio de Programacion16
Servlets: Métodos doGety
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.
￿
protectedvoiddoGet(HttpServletRequestreq,
HttpServletResponseresp) throwsServletException, java.io.IOException
￿
protectedvoiddoPost(HttpServletRequestreq,
HttpServletResponseresp) throwsServletException, 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.
ServletLaboratorio de Programacion17
Servlets: Respondiendo en
HTML
￿
La salida del servletserá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.
ServletLaboratorio de Programacion19
TOMCAT
￿
Apache Tomcates un contenedor de servletsque soporta tecnologías como Java Servletsy
JavaServerPages.
￿
Es OpenSource
￿
Si todo esta correcto, ejecutar en la barra de direcciones http:://localhost:8080, y nos
debería mostrar lo siguiente:
ServletLaboratorio de Programacion20
Eclipse: creación de un Server
￿
Seleccionar la opcionFile->New->Other->Server
ServletLaboratorio de Programacion21
Eclipse: creación de un Server
￿
Configuración
ServletLaboratorio de Programacion22
Eclipse: creación de un Server
￿
Vista una vez creado el Server
ServletLaboratorio de Programacion23
Eclipse: crear proyecto
￿
Seleccionar la opción File->New->Web->DynamicWeb Project
ServletLaboratorio de Programacion24
Eclipse: crear proyecto
￿
Vista una vez creado el proyecto dinámico
ServletLaboratorio de Programacion25
Eclipse: crear un servlet
￿
Seleccionar la opción File->New->Web->Servlet
ServletLaboratorio de Programacion26
Eclipse: crear un servlet
￿
Vista una vez creado el servlet
ServletLaboratorio de Programacion27
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>");
}
}
ServletLaboratorio de Programacion28
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>
ServletLaboratorio de Programacion29
API de los servlets
ServletLaboratorio de Programacion30
Aplicaciones Web JEE
￿
Colección de recursos tales como
￿
Jsp
￿
Servlets
￿
Archivos Html
￿
Imagenes,
￿
Etc…
￿
Ubicados en un URL específica
￿
Una aplicación webestáorganizada en una estructura jerárquica de directorios
￿
dos partes
￿
Un directorio privado WEB-INF
￿
contiene los recursos que no son descargablespara 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(DeploymentDescriptor)
￿
classes\ServletCompras.class
￿
lib\cualquierOtraApi.jar
ServletLaboratorio de Programacion31
Consultas…
ServletLaboratorio de Programacion32
Próxima clase
￿
Ultima clase teórica
￿
Comunicación entre servlets
￿
Manejo de Sesiones
￿
Ejemplos y ejercitación