Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

54
Contenido Procesos Semáforos Sincronización Lectura y Escritura de Archivos Servidores Orientados a Conexión Servidores No Orientados a Conexión Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

Transcript of Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Page 1: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Contenido

• Procesos

• Semáforos

• Sincronización

• Lectura y Escritura de Archivos

• Servidores Orientados a Conexión

• Servidores No Orientados a Conexión

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 2: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Servidores orientados/ No orientados a

conexión

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 3: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Servidores Orientados a conexión

• Telnet

• HTTP

• FTP

• SMTP

• LDAP

• Kerberos

• RMI

• RPC

• NFS

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 4: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Servidores No Orientados a Conexión

• SNMP

• P2P

• RPC

• NFS

• DNS

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 5: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

TELNET Servidores Orientados a Conexión

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 6: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

TELNET (TELecommunication NETwork)

• TELNET es un protocolo estándar siendo su número STD de 8. Su

status es recomendado. Se describe en el RFC 854 -

Especificaciones del protocolo TELNET y RFC 855 - "TELNET

Option Specifications".

• El protocolo TELNET proporciona una interfaz estandarizada, a

través de la cual un programa de un host(el cliente de TELNET)

puede acceder a los recursos de otro host (el servidor de TELNET)

como si el cliente fuera una terminal local conectada al servidor.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 7: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Telnet es un protocolo basado en tres

ideas: • El concepto de NVT(Network Virtual Terminal) (NVT). Una NVT

es un dispositivo imaginario que posee una estructura básica común a una amplia gama de terminales reales. Cada host mapea las características de su propia terminal sobre las de su correspondiente NVT, y asume todos los demás hosts harán lo mismo.

• Una perspectiva simétrica de las terminales y los procesos.

• Negociación de las opciones de la terminal. El protocolo TELNET usa el principio de opciones negociadas, ya que muchos host pueden desear suministrar servicios adicionales, más allá de los disponibles en la NVT. Se pueden negociar diversas opciones

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 8: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Funcionamiento TELNET

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 9: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

NVT(Network Virtual Terminal)

• Cuenta con un monitor o "display" y un teclado. El teclado

produce datos de salida, que se envían por la conexión TELNET. El monitor recibe los datos de entrada que llegan. Las características básicas de una NVT, a menos que sean modificadas por opciones establecidas de común acuerdo, son:

• Los datos se representan en código ASCII de 7 bits, transmitido en

bytes de 8 bits.

• Es un dispositivo semi-duplex que opera en modo de buffer en línea.

• Proporciona una función de eco local.

• Todas estas opciones pueden ser negociadas por los dos hosts. Por ejemplo, se prefiere el eco local porque la carga de la red es inferior y el rendimiento superior pero existe la opción de usar el eco remoto, aunque no se le requiera a ningún host.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 10: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

NVT

• El servidor TELNET “escucha” en el puerto 23

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 11: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Comandos TELNET

• close: cerrar la conexión actual.

• display: mostrar los parámetros operativos.

• mode: trata de introducir los comandos línea a línea.

• open: conexión con un host especificado.

• quit: salir de telnet.

• send: transmisión de caracteres especiales.

• set: establecimiento de parámetros operativos.

• status: muestra la información de estado.

• ?: muestra información de ayuda.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 12: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Sintaxis

• telnet

open 132.248.2.2 80

• telnet 132.248.2.2 80

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 13: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

HTTP Servidores Orientados a Conexión

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 14: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Introducción

• El protocolo estándar de comunicaciones entre servidores

y clientes Web es el HTTP("Hypertext Transfer Protocol"),

que es un borrador de estándar de Internet. RFC 2616

• Es un protocolo orientado a transacciones y sigue el

esquema petición-respuesta entre un cliente y un

servidor.

• Al cliente que efectúa la petición (generalmente un

navegador o una araña web) se lo conoce como "user

agent" (agente del usuario).

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 15: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Una transacción HTTP consiste

básicamente en:

• Conexión

• El establecimiento de una conexión del cliente con el servidor. El

puerto por default es el puerto bien conocido 80, pero el URL

puede especificar otros puertos no reservados.

• Solicitud

• El envío por parte del cliente de un mensaje de solicitud al

servidor.

• Respuesta

• El envío por parte del servidor de una respuesta al cliente.

• Cierre

• El cierre de la conexión por parte del cliente y el servidor.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 16: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

HTML

• El lenguaje estándar de marcas para documentos Web es

HTML ("Hypertext Markup Language"), que es un

borrador de estándar de Internet y actualmente varios

grupos de trabajo del IETF están trabajando en él.

• HTML es un derivado de SGML("Standard Generalized

Markup Language").

• Para crear un documento Web hay que usar las marcas

HTML que constituyen la estructura lógica del documento,

por ejemplo, cabeceras, listas y párrafos.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 17: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Estructura básica de un documento

HMTL <HTML> <!– Inicio de document o-->

<HEAD> <!-- Encabezado documento-->

<TITLE>Este es un ejemplo</TITLE>

</HEAD> <!–Fin de la sección de encabezado-->

<BODY> <!– Inicio del cuerpo de texto-->

<!—Contenido -->

</BODY> <!– Fin del cuerpo -->

</HTML> <!– Fin del documento -->

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 18: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

<html>

<head>

<title>Bienvenido a eMotherEarth.com</title>

</head>

<body>

<h1>Bienvenido a eMotherEarth.com</h1>

<p>

<h3>Tu primera tienda en donde podrás comprar Productos para la Tierra </h3>

<p>

Favor de escribir tu información:

<p>

<form action="catalog" method="post">

<p>Nombre: <input type="text" name="username">

<p><input type="submit" name="Submit" value="Login">

</form>

</body>

</html>

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 19: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

URL

• URL es un protocolo estándar de Internet y se puede

encontrar en el RFC 1738.

• El contexto global para construir nuevos esquemas para

codificar nombres y direcciones de objetos en Internet se

describe en el RFC informacional 1630.

• Este RFC describe el término URI(Universal Resource

Identifiers) como un modelo más teórico para diseñar

estos esquemas.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 20: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

URI

• Los URIs que se refieren a una dirección objeto(dirección

IP e información de la ruta de acceso)mapeados a un

método de acceso conocido usando un protocolo de red

existente como HTTP o FTP se conocen como URLs. Por

lo tanto, un URL es una forma específica de un URI. En

general, los URLs se escriben del modo siguiente:

<scheme>:<scheme-specific-part>

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 21: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

URL, esquemas definidos

• Los siguientes esquemas son ejemplos incluidos en el

RFC:

• ftp - "File Transfer protocol"

• http - "HyperText Transfer Protocol"

• gopher - El protocolo Gopher

• mailto - Dirección de Correo Electrónico

• news - "USENET news"

• nntp - "USENET news" usando acceso NNTP

• telnet - Sesiones interactivas

• file - Nombres de archivos específicos de un host • Descritos en el RFC 1738

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 22: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

URL con IP

• Mientras que la sintaxis para el resto del URL puede variar dependiendo del esquema seleccionado.

• Los esquemas que implican el uso directo de un protocolo basado en IP usan una sintaxis común para la parte <scheme-specific data>, • Comienza por "//" para indicar que sigue la sintaxis estándar de

Internet:

//<user>:<password>@<host>:<port>/<url-path>

• Las siguientes partes pueden ser excluidas "<user>:<password>@", ":<password>", ":<port>", y "/<url-path>" se pueden excluir.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 23: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

URL de HTTP

• Según la definición anterior, el URL de HTTP tiene este aspecto:

http://<host>:<port>/<path>?<searchpart>

Donde:

• host • El nombre de dominio completo de un host o una dirección IP en formato

decimal.

• port • El número de puerto al que conectar. Si este parámetro se omite en un URL de

HTTP, es 80 por defecto.

• path • Especifica un selector HTTP, una ruta a un documento HTML, por ejemplo. ?

• searchpart • Registra de consulta("query string") indicada con "?".

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 24: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Comandos

• GET

• Solicita el recurso ubicado en la URL especificada

• HEAD

• Solicita el encabezado del recurso ubicado en la URL especificada

• POST

• Envía datos al programa ubicado en la URL especificada

• PUT

• Envía datos a la URL especificada

• DELETE

• Borra el recurso ubicado en la URL especificada

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 25: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Formato de Petición y Respuesta

• En el caso de que la petición se haga con el protocolo HTTP/1.0 o con el protocolo HTTP/1.1 la petición sigue el formato:

Línea de petición

*(Cabeceras)

CRLF

[Contenido]

GET / HTTP/1.1

Host: www.wrox.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1

Connection: Keep-Alive

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 26: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

POST

POST / HTTP/1.1

Host: www.wrox.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-

US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1

Content-Type: application/x-www-form-urlencoded

Content-Length: 40

Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 27: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Respuestas

HTTP/1.1 200 OK

Date: Sat, 31 Dec 2005 23:59:59 GMT

Content-Type: text/html;charset=ISO-8859-1 Content-

Length: 122

<html>

<head>

<title>Wrox Homepage</title>

</head>

<body>

<!-- body goes here -->

</body>

</html>

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 28: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

CABECERAS GENERALES

• Los campos de este tipo de cabeceras se aplican tanto a las peticiones como a las respuestas, pero no al contenido de los mensajes.

• Estas cabeceras son: • Cache-Control, son directivas que se han de tener en cuenta a la

hora de mantener el contenido en una caché.

• Connection, permite especificar opciones requeridas para una conexión.

• Date, representa la fecha y la hora a la que se creó el mensaje.

• Pragma, usado para incluir directivas de implementación.

• Transfer-Encoding, indica la codificación aplicada al contenido.

• Upgrade, permite al cliente especificar protocolos que soporta.

• Via, usado por pasarelas y proxies para indicar los pasos seguidos

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 29: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

CABECERAS DE PETICIÓN • Accept, indican el tipo de respuesta que acepta. Accept-Charset, indica los

conjuntos de caracteres que acepta.

• Accept-Encoding, que tipo de codificación acepta.

• Accept-Language, tipo de lenguaje de la respuesta que se prefiere.

• Authorization, el agente de usuario quiere autentificarse con el servidor.

• From, contiene la dirección de correo que controla en agente de usuario.

• Host, especifica la máquina y el puerto del recurso pedido.

• If-Modified-Since, para el GET condicional.

• If-Match, para el GET condicional.

• If-None-Match, para el GET condicional.

• If-Range, para el GET condicional.

• If-Unmodified-Since, para el GET condicional.

• Max-Forwards, indica el máximo número de elementos por los que pasa.

• Proxy-Authorization, permite que el cliente se identifique a un proxy.

• Range, establece un rango de bytes del contenido.

• Referer, indica la dirección donde obtuvo la URI de la petición.

• User-Agent, información sobre el agente que genera la petición.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 30: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Cabeceras de Respuesta

• Age, estimación del tiempo transcurrido desde que se creó la respuesta. Location, se usa par a redirigir la petición a otra URI.

• Proxy-Authenticate, ante una respuesta con el código 407 (autentificación proxy requerida), indica el esquema de autentificación.

• Public, da la lista de métodos soportados por el servidor.

• Retry-After, ante un servicio no disponible da una fecha para volver a intentarlo.

• Server, información sobre el servidor que maneja las peticiones.

• Vary, indica que hay varias respuestas y el servidor ha escogido una.

• Warning, usada para aportar información adicional sobre el estado de la respuesta.

• WWW-Authenticate, indica el esquema de autentificación y los parámetros aplicables a la URI.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 31: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Cabeceras de entidad

• Allow, da los métodos soportados por el recurso designado por la URI. Content-Base, indica la URI base para resolver las URI relativas.

• Content-Encoding, indica una codificación adicional aplicada al contenido (a parte de la aplicada por el tipo).

• Content-Language, describe el idioma del contenido.

• Content-Length, indica el tamaño del contenido del mensaje.

• Content-Location, da información sobre la localización del recurso que da el contenido del mensaje.

• Content-MD5, es un resumen en formato MD5 (RFC 1864) para chequear la integridad del contenido.

• Content-Range, en un GET parcial, indica la posición del contenido.

• Content-Type, indica el tipo de contenido que es.

• Etag, define una marca para el contenido asociado.

• Expires, indica la fecha a partir de la cual la respuesta deja de ser válida.

• Last-Modified, indica la fecha de la última modificación.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 32: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Códigos de estado

• El código de estado es un número de 3 dígitos que indica si la petición ha sido atendida satisfactoriamente o no, y en caso de no haber sido atendida, indica la causa. Los códigos se dividen en cinco clases definidas por el primer dígito del código de estado. Así tenemos:

• 1xx: Informativo. La petición se recibe y sigue el proceso. Esta familia de respuestas indican una respuesta provisional. Este tipo de respuesta está formada por la línea de estado y las cabeceras. Un servidor envía este tipo de respuesta en casos experimentales.

• 2xx: Éxito. La acción requerida por la petición ha sido recibida, entendida y aceptada.

• 3xx: Redirección. Para completar la petición se han de tomar más acciones.

• 4xx: Error del cliente. La petición no es sintácticamente correcta y no se puede llevar a cabo.

• 5xx: Error del servidor. El servidor falla al atender la petición que aparentemente es correcta.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 33: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Ejemplos de Códigos de estado

• 100, continuar.

• 101, cambio de protocolo.

• 200, éxito.

• 201, creado.

• 202, aceptado.

• 203, información no autoritativa.

• 204, sin contenido.

• 205, contenido reestablecido.

• 206, contenido parcial.

• 300, múltiples elecciones.

• 301, movido permanentemente.

• 302, movido temporalmente.

• 303, ver otros.

• 304, no modificado.

• 305, usar proxy.

• 400, petición errónea.

• 401, no autorizado.

• 402, pago requerido.

• 403, prohibido.

• 404, no encontrado.

• 405, método no permitido.

• 406, no se puede aceptar.

• 407, se requiere autentificación proxy.

• 408, límite de tiempo de la petición.

• 409, conflicto.

• 410, gone.

• 411, tamaño requerido.

• 412, falla una precondición.

• 413, contenido de la petición muy largo.

• 414, URI de la petición muy largo.

• 415, campo media type requerido.

• 500, error interno del servidor.

• 501, no implementado.

• 502, puerta de enlace errónea.

• 503, servicio no disponible.

• 504, tiempo límite de la puerta de enlace.

• 505, versión de protocolo HTTP no soportada.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 34: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Servidores HTTP o Servidores WEB

• Apache (Jakarta Project)

• IIS (Internet Information Server)

• GWS (Google Web Server)

• Cherokee

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 35: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Evolución en HTTP

• Los primeros sitios web no eran sino colecciones de páginas

web enlazadas entre ellas por el Lenguaje HTML.

• Hoy en día, los sitios web incluyen multimedia, aplicaciones de

comercio electrónico, y otro tipo de sofisticadas aplicaciones

basadas en Web como voz IP y banca online.

• Además de los avances en contenido, se han producido

avances en las tecnologías de servidores web, como el

desarrollo de servidores de aplicaciones, y tecnologías de

creación dinámica de contenido, como las páginas JSP y las

páginas ASP.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 36: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Arquitectura 2-capas (Cliente/Servidor)

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 37: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Arquitectura de N-capas

Ideal para generación de contenido dinámico

Servidores de aplicaciones (Java) utilizan servlets en Java

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 38: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Requerimientos de Ejecución de los

Servlets Java • Los Servlets de Java requieren algún conocimiento previo de

Java y HTML

• Las aplicaciones web y las páginas web que requieran iniciación de servlets deben ejecutarse en servidores web con contenedores web integrados, como el servidor web WebSphere o un contenedor solitario de servlets como el Tomcat .

• Los Servlets también pueden ejecutarse en servidores de aplicación con contenedores web integrados como el Servidor BEA WebLogic .

.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 39: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• El API Servlet suele estar mayoritariamente integrado en

el servidor/contenedor web. El contenedor/servidor logra

esto último implementando la especificación Java Servlet

2.1 o 2.2 .Por ejemplo, Tomcat con la especificaciones de

Servlet API 2.5 y JSP API 2.1

• Una vez que el contenedor/servidor básico se ha bajado y

configurado, el siguiente paso es entender la

programación de servlets. El API Servlet tiene dos

paquetes, el javax.servlet , que tiene clases y paquetes

independientes de protocolos, y el javax.servlet.http , que

es más específico para el protocolo HTTP.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 40: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Estructura de servlet y ciclo de vida

• Todo servlet debe directa o indirectamente implementar la interfaz Servlet. Los siguientes métodos están declarados en el interfaz Servlet.

public abstract void init (ServletConfig config) throws ServletException.

• El método init se usa para inicializar los parámetros proporcionados por el

objeto ServletConfig. Se invoca sólo una vez, a menos que el servlet sea reiniciado si se destruye y se vuelve a cargar.

• El método init es el lugar en el que inicializar los parámetros de configuración

como la conexión con una base de datos, la inicialización de archivos y otros valores de entorno.

• Ningún método del servlet puede ser invocado a no ser que el servlet esté

inicializado mediante el uso del método init().

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 41: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• public abstract ServletConfig getServletConfig ()

• Este método proporciona el objeto ServletConfig para la

inicialización de los parámetros del servlet.

• Se pueden crear parámetros adicionales especificándolos en el

archivo servlet.properties.

• Una vez que hayan sido especificados en este archivo, se puede

acceder a ellos usando el objeto ServletConfig.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 42: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• public abstract void service (ServletRequest req,

ServletResponse res) throws ServletException,

IOException.

• El método service es el punto esencial del modelo petición

respuesta del protocolo HTTP. Recibe una petición del cliente en

forma de objeto ServletRequest.

• Los parámetros del cliente son pasados junto al objeto de petición

(aunque existen otras formas de enviar parámetros desde el cliente

al servlet, por ejemplo, usando cookies o por medio de una

reescritura del URL).

• La respuesta resultante se envia al cliente usando el objeto

ServletResponse.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 43: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• public abstract String getServletInfo() Este método se usa para la extracción de metadatos del servlet, como por ejemplo el autor, la versión del servlet, y otra información concerniente al copyright. El método tendrá que ser redefinido dentro del servlet para que devuelva esta información.

• public abstract void destroy () El método destroy se invoca para liberar todos los recursos solicitados como la base de datos, y otros recursos del servidor. También se encarga de la sincronización de cualquier hilo pendiente. Este método se llama una sola vez, automáticamente, como el método init.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 44: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Clases Relevantes en Servlets

• La clase GenericServlet proporciona una implementación

básica del interfaz Servlet. Para escribir un servlet

especificamente para el protocolo HTTP, se usa la clase

HTTPServlet, que extiende a Generic Servlet

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 45: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

El ciclo de vida de los eventos para un servlet se especifica en el interfaz

javax.servlet.Servlet. Todos los servlets siguen el modelo del ciclo de vida. El

contenedor web tiene la responsabilidad de crear una instancia del servlet y

de invocar al método init (1). Si un cliente ha enviado una petición al

contenedor web, entonces, esa petición se pasa al método servicio del servlet

(2), y se envia una respuesta de vuelta al contendor web (3). Finalmente,

cuando el servlet haya finalizado su propósito, el contenedor web invoca al

método destroy

Page 46: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• Además de los métodos que heredan de la clase

GenericServlet, la clase HTTPServlet tiene métodos

adicionales para cada uno de los métodos de respuesta

HTTP tratados antes.

• doDelete (HttpServletRequest, HttpServletResponse)

• doGet (HttpServletRequest, HttpServletResponse)

• doOptions (HttpServletRequest, HttpServletResponse)

• doPost (HttpServletRequest, HttpServletResponse)

• doPut (HttpServletRequest, HttpServletResponse

• doTrace (HttpServletRequest, HttpServletResponse)

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 47: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• Por ejemplo, la clase Servlet tiene que redefinir doGet o

doPost (o ambos métodos, dependiendo de si los datos

serán enviados por un GET o por métodos de petición

POST HTTP).

• Estos métodos toman dos parámetros: un objeto

HttpServletRequest y un objeto HttpServletResponse.

• Estos dos objetos dan acceso total a toda la información

sobre la petición del cliente, y ayudan a controlar la salida

enviada al cliente como respuesta a dicha petición. Los

métodos doGet y doPost son invocados por el método

service. El método service puede usarse directamente al

redefinirlo.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 48: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Un Servlet sencillo

• Importar el paquete básico para crear un servlet, javax.servlet.

• Implementar el interfaz servlet.

• Definir el método init, que toma como parámetro un objeto ServletConfig para establecer las propiedades del servlet.

• Método principal service que toma como parámetros los objetos de petición y respuesta. Todo el procedimiento del servlet gira en torno a estos objetos. La petición del cliente va adjunta en el objeto de petición, y la respuesta del servlet se envía en el objeto de respuesta.

• Proporcionar una respuesta sencilla de escritura de una frase como salida html.

• Una vez que el servlet haya sido compilado, es necesario instalarlo en el contenedor web en su adecuada localización o en un directorio por defecto de servlets.

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 49: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Referencias

• Allamaraju, S. et al. Professional Java Server Programming J2EE Edition. Wrox Press, Inc., 2000.

• BEA Systems. BEA WebLogic Server. http://www.oracle.com/bea/index.html

• The Jakarta Project. Jakarta Tomcat. http://jakarta.apache.org/tomcat

• Sun Microsystems. Interface javax.servlet.Servlet. http://java.sun.com/javaee/6/docs/api/

• Sun Microsystems. Tutorial

http://java.sun.com/javaee/5/docs/tutorial/doc/bnafd.html

• JSP

http://www.programacion.com/java/tutorial/servlets_jsp/11/

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 50: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Java Web Development

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 51: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Ahora algo del lado del Cliente

• JavaScript • Apareció por primera vez en el Netscape Navigator

• VBScript (.NET) Lenguajes interpretados

• Sintaxis HTML

<script type="text/javascript“>

<!-- // código JavaScript -->

</script>

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 52: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Arquitectura C/S con Javascript

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 53: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

• AJAX (Asynchronous JavaScript)

• Frameworks (CSS, JavaScript, AJAX, HTML, XML)

• JQUERY

• extJS

• Prototype

• Mootools

• GWT Google Web Toolkit

• JSON

• Dojo

• etc etc

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza

Page 54: Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine ...

Ejemplo SERVLETS • La ruta tomcat_home es en donde se instaló el programa, por ejemplo:

tomcat_home = “C:\Archivos de Programa\Tomcat 6.0”

• Las siguientes rutas son relativas al directorio tomcat_home:

1er paso: Poner el HTML en el directorio (este archivo podría ir en otras rutas, pero primero prueben aquí, para mayor claridad):

webapps\examples\servlets

LA RUTA PARA EL SERIA action= “/examples/servlets/servlet/ShowParameters”

2do paso: Y aquí ponemos el servlet:

webapps\examples\WEB-INF\classes

La clase del protocolo que implementaron para su proyecto puede ir en el mismo directorio de classes y crear un objeto de

3er paso:Los cambios en el web.xml, son los siguientes en el que vamos a poner el nombre de la clase de nuestro servlet que es el que se va a comunicar con el servidor:

<servlet>

<servlet-name>ShowParameters</servlet-name>

<servlet-class>ShowParameters</servlet-class>

</servlet>

<!-- Otros

<servlet-mapping>

<servlet-name>ShowParameters</servlet-name>

<url-pattern>/servlets/servlet/ShowParameters</url-pattern>

</servlet-mapping>

Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

Macedo Reza