Download Servlets parte 2 - Pagina del servidor yaqui
Document related concepts
no text concepts found
Transcript
Programación Orientada a Objetos II Layout by orngjce223, CC-BY Java Servlets Parte II Contexto de un servlet Un servlet vive y muere dentro del contexto del proceso del servidor. Un servlet puede obtener información de su entorno en distintos momentos. 1.Durante la inicialización del servlet Layout by orngjce223, CC-BY 2.Información del servidor en cualquier momento 3.Información contextual en cada petición. Cecilia M. Curlango Rosas 2/29 2. Información del contexto del servidor Se obtiene con el método getServerContext() que regresa un objeto ServletContext. Layout by orngjce223, CC-BY Con este objeto podemos obtener información del servidor, por ejemplo su nombre (método getServerInfo()). Cecilia M. Curlango Rosas 3/29 3. Contexto durante una petición Layout by orngjce223, CC-BY La información del contexto de una petición se obtiene del ServletRequest que recibe el método service(). Cecilia M. Curlango Rosas 4/29 Layout by orngjce223, CC-BY Métodos de ServletRequest Método Descripción getAttribute(atr) Regresa el valor del atributo atr getContentLength() Regresa la longitud de la petición getContentType() Regresa el tipo MIME del cuerpo del mensaje getInputStream() Regresa un flujo de entrada getParameterNames() Regresa un arreglo de cadenas con los nombres de los parámetros. getParameterValues() Regresa un arreglo de cadenas con los valores de un parámetro específico. getProtocol() Regresa el protocolo y la versión de la petición en una cadena con la forma: <protocol>/<major version>.<minor version> Cecilia M. Curlango Rosas 5/29 Métodos de ServletRequest Layout by orngjce223, CC-BY Método Descripción getReader() Regresa un BufferedReader para obtener el cuerpo del mensaje getRealPath() Regresa la ruta real de una ruta virtual getRemoteAddr() Regresa la dirección IP del cliente que envió la petición getRemoteHost() Regresa el nombre del cliente que envió la petición getScheme() Regresa el esquema utilizado en el URL (http, https, ftp, etc.) getServerName() Regresa el nombre del servidor que recibió la petición. getServerPort() Regresa el puerto que utilizado para recibir la petición. Cecilia M. Curlango Rosas 6/29 Ejercicio 1 Layout by orngjce223, CC-BY Crear un servlet que al ejecutarse muestre en una tabla con la información del contexto de la petición. Cecilia M. Curlango Rosas 7/29 Apoyo para http Http significa HyperText Transfer Protocol y es el protocolo que utilizan los servidores Web y los navegadores para comunicarse. Layout by orngjce223, CC-BY Es muy común que los servlets utilicen el protocolo http. Cecilia M. Curlango Rosas 8/29 Métodos de Http (mensajes) GET PUT HEAD DELETE POST TRACE CONNECT Layout by orngjce223, CC-BY OPTIONS Cecilia M. Curlango Rosas 9/29 Método GET GET hace una petición de información al servidor. Layout by orngjce223, CC-BY Esta información puede ser un archivo, la salida de un dispositivo del servidor, o la salida de un programa (como un servlet o un CGI). Algunos servidores limitan el tamaño de las peticiones GET que pueden recibir como parte del URL. Cecilia M. Curlango Rosas 10/29 Método GET Layout by orngjce223, CC-BY GET / HTTP/1.1 Connection: Keep-Alive User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: www.magelang.com Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg HTTP/1.1 200 Document follows Date: Tue, 14 Apr 1997 09:25:19 PST Server: JWS/1.1 Last-modified: Mon, 17 Jun 1996 21:53:08 GMT Content-type: text/html Content-length: 4435 <4435 bytes worth of data -- the document body> Cecilia M. Curlango Rosas 11/29 Método HEAD Este método es similar al método GET, solo que el servidor únicamente regresa el encabezado. Layout by orngjce223, CC-BY Se utiliza para verificar la fecha de la última modificación del documento, el tamaño del documento, el tipo de servidor, o el tipo de documento. Cecilia M. Curlango Rosas 12/29 Método POST Este método se utiliza para enviar peticiones al servidor. Layout by orngjce223, CC-BY Los parámetros se envían en el flujo. POST /servlet/MyServlet HTTP/1.1 User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: www.magelang.com Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */ Content-type: application/x-www-form-urlencoded Content-length: 39 name=Scott&company=MageLang%20Institute Cecilia M. Curlango Rosas 13/29 HttpServlet Esta clase contiene métodos para facilitar la creación de servlets que trabajan con el protocolo HTTP. Layout by orngjce223, CC-BY Su implementación del método service() interpreta cada método del HTTP. Determina si se trata de un método GET, POST de HTTP, y llama a su método correspondiente. Cecilia M. Curlango Rosas 14/29 Layout by orngjce223, CC-BY HttpServlet Cecilia M. Curlango Rosas 15/29 Layout by orngjce223, CC-BY Ejemplo un servlet mantiene su estado. Cecilia M. Curlango Rosas 16/29 Layout by orngjce223, CC-BY Ejemplo estado del servlet Cecilia M. Curlango Rosas 17/29 Layout by orngjce223, CC-BY Cecilia M. Curlango Rosas 18/29 Layout by orngjce223, CC-BY Ejemplo de interacción con un servlet. Cecilia M. Curlango Rosas 19/29 Layout by orngjce223, CC-BY Página Web Cecilia M. Curlango Rosas 20/29 Layout by orngjce223, CC-BY fakeLogin.html Cecilia M. Curlango Rosas 21/29 Layout by orngjce223, CC-BY Ubicación de archivos Cecilia M. Curlango Rosas 22/29 Layout by orngjce223, CC-BY fakeLoginServlet.java Cecilia M. Curlango Rosas 23/29 Layout by orngjce223, CC-BY Cecilia M. Curlango Rosas 24/29 Layout by orngjce223, CC-BY Cecilia M. Curlango Rosas 25/29 Layout by orngjce223, CC-BY Cecilia M. Curlango Rosas 26/29 Layout by orngjce223, CC-BY Errores Cecilia M. Curlango Rosas 27/29 Ejercicio 2 Layout by orngjce223, CC-BY Crear una aplicación (página web y servlet) que a partir de la fecha de nacimiento de un usuario, indique cuantos días ha vivido. Cecilia M. Curlango Rosas 28/29 Referencias Esta presentación está basada en el tutorial de servlets de Oracle http://java.sun.com/developer/onlineTraining/Servlets/Fundamentals/servlets.html ServletContext Java API http://download.oracle.com/javaee/1.4/api/javax/servlet/ServletContext.html Layout by orngjce223, CC-BY Inside Servlets, Server-Side Programming for the Java Platform, Dustin R. Callaway, Editorial Pearson, ISBN 0-201-70906-6, 2001. Disponible en el Laboratorio de Computación Cecilia M. Curlango Rosas 29/29