Descargar

Transcripción

Descargar
1
NIVEL 16: ESTRUCTURAS N-ARIAS
RECURSIVAS
Aplicaciones Web, Html y Servlets
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
2
Agenda
• Protocolo HTTP
• Formas HTML
• Servlets
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
3
Protocolo HTTP
• Hypertext Transfer Protocol (HTTP)
- 1990
• Versión 1.1
• Mecanismo para localizar recursos en Internet
• Usualmente los URL corresponden
a páginas HTML,
pero el mecanismo es general
• Es un lenguaje que interpretan los servidores HTTP
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
4
Protocolo HTTP
• Protocolo muy simple, sin
manejo de estado
• Dirección Servidor
• Puerto
• Recurso Buscado
puerto: 80
http( dir. recurso)
recursos
browser
Servidor
HTTP
recurso
http (recurso)
socket
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
5
Protocolo HTTP
• Lenguaje de consulta:
•
Línea de requerimiento
•
•
•
•
GET: Se encapsula la petición en un URL
•
POST: Tamaño de datos ilimitado
•
Descripción del recurso
Protocolo: HTTP/1.1
Campos de encabezado
•
•
Método: GET / POST / …
variable: valor (content_type: text/html)
Contenido
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
6
Protocolo HTTP
• Lenguaje de respuesta:
•
Línea de encabezado
Protocolo: HTTP/1.1
• Estado de la respuesta (200)
• Explicación del estado (“OK”)
•
•
Campos de encabezado
•
•
variable: valor (content_type: text/html)
Contenido: la respuesta (<html>…</html>)
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
7
Protocolo HTTP
• Protocolo:
Servidor
host
Tipo información
Tamaño
Cliente
[GET / POST] recurso HTTP/1.1
{ encabezado }
Información
HTTP/1.1 200 OK
{encabezado }
Respuesta
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
socket
203 no response
400 bad request
403 forbidden
404 not found
500 internal error
8
Protocolo HTTP
• Ejemplo:
HTTP/1.0 200 OK
Date: Wed, 18 Sep 1996 20:18:59 GMT
Server: Apache/1.0.0
Content-type: text/html
Content-length: 1579
Last-modified: Mon, 22 Jul 1996 22:23:34 GMT
HTML document
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
9
Agenda
• Protocolo HTTP
• Formas HTML
• Servlets
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
10
Formas HTML
• Ejemplo:
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
11
Formas HTML
• Ejemplo:
<form method="Post" action="HTTP://host/servlet/servlet1">
NOMBRE: <input type="text" name="name"
size="40">
PASSWORD: <input type="password"
name="password"
size="10"
value="secreto">
CURSO: <select name="materia">
<option selected>CURSO1</option>
<option>CURSO2</option>
<option>CURSO3</option>
</select><br>
<input type="submit" value="SEND">
</form>
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
12
Formas HTML
• Formularios:
puerto: 80
Entradas
• Dirección Servidor
• Puerto
• Recurso Ejecutable
• Entradas Usuario
http( URL+entradas)
CGI
CGI
xxx
Servidor
HTTP
browser
Nombre:
SEND
Respuesta
• Script
• ASP
• Servlet / JSP
•…
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
http (respuesta)
socket
Páginas HTML on-the-fly
respuesta
13
Aplicaciones WEB
Página Dinámica
calculadorWeb.war
JBoss
URL + entradas
Página Estática
localhost:8080/calculadoraWeb/index.htm
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
14
Aplicaciones WEB
componente3.jar
calculadoraWeb.war
Servlet1
clases que producen
Servlet1
Servlet1
Servlet1 páginas dinámicas
componente2.jar
componente1.jar
Relación entre
nombres
y clases
páginas estáticas
JBoss
http://URL + entradas
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
15
Agenda
• Protocolo HTTP
• Formas HTML
• Servlets
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
16
Servlets
• J2EE define una plataforma y una arquitectura para
construir aplicaciones basadas en tecnología WEB
• Servlets y JSP representan
el manejo de la
interacción con el cliente
• Manejan un pedido HTTP, generando
contenido
dinámicamente. Son clases JAVA
• javax.servlets.jar incluye clases para el manejo de
los conceptos más usados en las aplicaciones WEB
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
17
Servlets
• Modelo de Servlets:
• Método (GET/POST)
• Valores de la forma
• URL ejecutable
request
browser
servlet
servlet
servlet
JBoss
Servidor
HTTP
Tomcat
HTTP
forma
HTML
HTTP
response
• HTML
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
18
Servlets
• Es una especificación: el modelo es compartido por
todos los servidores J2EE, pero los detalles de
deploy de los servlets varían
• Cómo funcionan?
•
El servidor asocia un nombre y una configuración con
una clase Java
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
19
Servlets
• Pasos de manejo de un llamado:
•
JBoss recibe el pedido HTTP
•
Traduce los elementos de la consulta y el contexto de
ejecución en objetos y clases de servicio
•
Delega el llamado sobre la clase que implementa el
servlet, el cual genera el contenido.
•
JBoss envía el contenido por un socket al browser
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
20
Servlets
• URL de un Servlet:
<form method=“post“
action=“http://localhost:8080/prefijo/nombre">
•
•
•
En lugar de un script, se le da el “prefijo” y el
nombre asociado con el servlet
El servidor se encarga de encontrar la clase
asociada, y darle control a una instancia
El esquema de instanciación es configurable
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
21
Servlets
• Ejemplo de archivo de configuración:
<web-app>
Relación entre
<servlet>
nombres
<servlet-name>
y clases
simple
</servlet-name>
<servlet-class>
uniandes.cupi2.SimpleServlet
</servlet-class>
</servlet>
</web-app>
web.xlm
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
22
URL de un Servlet
• También puede especificar un URL
personalizado para el servlet.
• Por ejemplo:
•
http://localhost:8080/aplicacion/simple.htm
•
Apunta al servlet simple
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
23
Servlets
• Ejemplo de archivo de configuración:
<web-app>
<servlet>
Relación entre
nombres
y clases
<servlet-name>simple</servlet-name>
<servlet-class>uniandes.cupi2.SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>simple</servlet-name>
<url-pattern>/simple.htm</url-pattern>
</servlet-mapping>
</web-app>
web.xlm
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
24
Servlets
•
Ciclo de vida de un servlet
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
25
Aplicaciones WEB
componente3.jar
calculadoraWeb.war
Servlet1
clases que producen
Servlet1
Servlet1
Servlet1 páginas dinámicas
componente2.jar
componente1.jar
Relación entre
nombres
y clases
páginas estáticas
JBoss
http://URL + entradas
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
26
Elementos de base del modelo
• HttpServletRequest
• HttpServletResponse
• HttpServlet
• doGet(HttpServletRequest, HttpServletResponse)
• doPost(HttpServletRequest, HttpServletResponse)
request
• init
• service
Servidor
servlet
• destroy
servlet
HTTP
servlet
Tomcat
response
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
27
Estructura
public class ServletCalculadora extends HttpServlet
{
public void doPost(
HttpServletRequest request,
HttpServletResponse response ) throws
ServletException, IOException
{
...
}
...
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
28
Estructura
...
public void doGet(
HttpServletRequest request,
HttpServletResponse response ) throws
ServletException, IOException
{
...
}
}
•
doPost atiende el método POST y doGET el método GET
•
Para manejarlos de igual manera a los dos se delega a un tercer método.
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
29
Delegando a un tercer método
...
...
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
30
¿Cómo leer las entradas del usuario?
• Nombres definidos en el formulario HTML
HttpServletRequest:
request.getParameter("name")
request.getRemoteAddr()
request.getContentLength()
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
31
¿Cómo generar la respuesta?
HttpServletResponse:
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.println( “<HTML> ...” );
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
32
¿Cómo generar la respuesta?
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
33
Ejemplo
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWWW extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println( "<HTML>\n" + "<HEAD><TITLE>Hello
WWW</TITLE></HEAD>\n" +
"<BODY>\n" + "<H1>Hello WWW</H1>\n" +
"</BODY></HTML>");
}
}
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
34
Inicialización del servlet
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co
35
Implementación de las clases del modelo del mundo
ISIS1206 – Estructuras de Datos
http://cupi2.uniandes.edu.co

Documentos relacionados