You are on page 1of 65

Java Lenguaje de programacin

Mdulo 2
J2EE Componente Web
2006
1 Introduccin

2 Protocolo HTTP

3 Repaso HTML

4 Servlet

5 JSP

everis- CONFIDENCIAL
2 DERECHOS RESERVADOS
Introduccin
Importancia de la Web para los usuarios

Es de uso diario:
Leer correos-e.
Utilizar el buscador.
Realizar compras.
Tener acceso a la informacin.
Es una interfaz comn. Todo el mundo sabe
hacer click.
Los navegadores (browsers) no necesitan
muchos recursos de Hardware para que
funcionen.

everis- CONFIDENCIAL
3 DERECHOS RESERVADOS
Introduccin
Importancia de la Web para las empresas

Por los servicios aadidos y facilidades


que aporta a sus clientes, tales como:
Publicidad.
Relaciones Pblicas.
Servicio de Atencin al Cliente.
Intercambio interactivo con los clientes
en tiempo real.
Incremento de ventas y disminucin de
prdidas de ventas a causa de pedidos
no atendidos.

everis- CONFIDENCIAL
4 DERECHOS RESERVADOS
Introduccin
Importancia de la Web para las empresas

Los clientes pueden tener acceso a la


informacin las 24 horas del da, los 365 das
del ao.
Captacin nuevos clientes y entrar en un nuevo
mercado.
Ahorro en la distribucin de informacin de
inters comercial. Por ejemplo:
los catlogos y listas de precios son fcilmente
actualizables, sin tener que recurrir a costosas
impresiones.
las actualizaciones son inmediatas; se dispone de la
informacin en cualquier lugar, las 24 horas del da...

everis- CONFIDENCIAL
5 DERECHOS RESERVADOS
Introduccin
Importancia de la Web para las empresas

Ahorro en costes de personal, de


facturacin, de atencin al cliente,
etc...
Se puede obtener informacin acerca
el comportamiento de los clientes y
sus intereses. Por ejemplo:
Cules son los productos ms visitados.
Cuntas compras se realizan por un tipo
de pago determinado.
Mejora de la imagen corporativa.
Abre la posibilidad de nuevos
negocios.

everis- CONFIDENCIAL
6 DERECHOS RESERVADOS
Introduccin
Importancia de la Web para los desarrolladores

La interfaz de usuario se puede


delegar a diseadores
profesionales.
Es ms fcil imaginar la aplicacin
desde el punto de vista WEB.
Se enfoca ms en la lgica que en
el diseo.
Es ms fcil explicarle al usuario
final la navegacin del sistema.

everis- CONFIDENCIAL
7 DERECHOS RESERVADOS
Introduccin
Desventajas del desarrollo Web

Cliente muy limitado grficamente


(browser):
Dificultad en el manejo de grillas.
Interfaz de interaccin con el usuario limitada.
Alto trfico de informacin, implica
saturacin de la red.

everis- CONFIDENCIAL
8 DERECHOS RESERVADOS
1 Introduccin

2 Protocolo HTTP

3 Repaso HTML

4 Servlet

5 JSP

everis- CONFIDENCIAL
9 DERECHOS RESERVADOS
Protocolo HTTP

HTTP 1.1: Protocolo especificado en RFC 2616.


Transacciones HTTP:
Peticin (request).
Respuesta (response).
Estructura transaccin HTTP:
Una lnea de peticin o respuesta.
HTTP headers: Conjunto de campos para
intercambiar informacin entre el cliente y servidor.
HTTP body: Parmetros adicionales (POST).
Antecede una lnea en blanco.

everis- CONFIDENCIAL
10 DERECHOS RESERVADOS
Protocolo HTTP

URI (Uniform Resource Identifier):


Identificador nico de recursos.
Texto corto que identifica a un nico servicio en la
red.
Consta de dos partes:
dentificador del mtodo de acceso (http:,mailto:
Nombre del recurso (//ww.google.cl).
URL (Uniform Resource Locator):
Localizador uniforme de recurso.
Cadena de caracteres con la que se asigna direccin
nica a cada uno de los recursos en Internet.
Cada vez ms en desuso (englobado por URI).

everis- CONFIDENCIAL
11 DERECHOS RESERVADOS
Protocolo HTTP
Mtodos HTTP

GET: Descarga y envo de un elemento.


HEAD: Solicita ver las cabeceras (headers) que se
enviaran con un elemento concreto. Es decir, el servidor
solo enva las cabeceras.
POST: Enva un elemento al servidor, como los datos
recogidos de un formulario (los elementos enviados no
son mostrados en la URL).
b Solicita colocar la informacin en la URI especificada.
DELETE: Elimina la entidad especificada en la URI.
OPTIONS: Permite al cliente consultar qu mtodos hay
asociados a un recurso.
TRACE: Permite obtener una rplica del mensaje
enviado.

everis- CONFIDENCIAL
12 DERECHOS RESERVADOS
Protocolo HTTP
Cdigos HTTP

Son cdigos de tres dgitos:


1xx: Mensajes de informacin.
2xx: Operacin exitosa.
3xx: Redireccin hacia otra URL.
4xx: Error por parte del cliente.
5xx: Error por parte del servidor.
Ejemplos:
404: Pgina no encontrada.
500: Error en el servidor.

everis- CONFIDENCIAL
13 DERECHOS RESERVADOS
1 Introduccin

2 Protocolo HTTP

3 Repaso HTML

4 Servlet

5 JSP

everis- CONFIDENCIAL
14 DERECHOS RESERVADOS
Repaso HTML

HTML, acrnimo ingls de Hypertext


Markup Language (lenguaje de formato de
documentos de hipertexto).
Aqu revisaremos:
Cuerpo de una pgina html.
Tablas.
Formularios.

everis- CONFIDENCIAL
15 DERECHOS RESERVADOS
Repaso HTML
Cuerpo de una pgina html

everis- CONFIDENCIAL
16 DERECHOS RESERVADOS
Repaso HTML
Tablas

everis- CONFIDENCIAL
17 DERECHOS RESERVADOS
Repaso HTML
Formularios

everis- CONFIDENCIAL
18 DERECHOS RESERVADOS
Repaso HTML

http://www.w3schools.com/

everis- CONFIDENCIAL
19 DERECHOS RESERVADOS
1 Introduccin

2 Protocolo HTTP

3 Repaso HTML

4 Servlet

5 JSP

everis- CONFIDENCIAL
20 DERECHOS RESERVADOS
Servlet
Introduccin

CGI (Common Gateway Interfaces): Interfaz que


permite a un servidor Web ejecutar programas
en varios lenguajes (Perl, C, etc.).
Problemas CGI:
Creacin de nuevo proceso para cada ejecucin de
CGI => Intensivo en recursos
Cdigo especfico para cada sistema.
Difciles de mantener pues combinan presentacin y
lgica.
No hay mtodo simple para mantener y compartir
recursos entre distintos CGIs.

everis- CONFIDENCIAL
21 DERECHOS RESERVADOS
Servlet
Introduccin

Servlet: Componente Web que tiene por objetivo procesar


requerimientos de un cliente (request) y generar respuestas
con contenidos Web dinmicos (response).
Los Servlets son altamente portables entre diferentes
sistemas operativos y servidores.
Los Servlets son eficientes y escalables: Luego de ser
ejecutado, un servlet permanece en la memoria del servidor,
optimizando su acceso para las siguientes ejecuciones.
Generalmente este servlet es ejecutado multithread para
soportar accesos concurrentes.
Los Servlets se ejecutan dentro del servidor, por lo que
pueden delegar ciertas funciones como autenticar usuarios.

everis- CONFIDENCIAL
22 DERECHOS RESERVADOS
Servlet
Introduccin

El contenedor de Servlets provee de los


siguientes servicios y funcionalidades:
Servicios de red sobre los cuales las
peticiones y respuestas son enviados.
Manejar el ciclo de vida de un servlet.
Decodificar peticiones MIME.
Codificar respuestas MIME.

everis- CONFIDENCIAL
23 DERECHOS RESERVADOS
Servlet
Estructura

Se encuentran divididos en dos paquetes:


javax.servlet.*: clases necesarias para servlets
genricos, independientes del protocolo utilizado.
javax.servlet.http.*: clases que definen un servlet
para el protocolo HTTP especficamente.
Servlet:
Define la funcionalidad bsica:
Ciclo de vida (mtodos init(), destroy())
Procesar peticiones (mtodo service())
Implementado por la clase GenericServlet.

everis- CONFIDENCIAL
24 DERECHOS RESERVADOS
Servlet
Estructura

HttpServlet:
Agrega la funcionalidad para proveer los
diferentes tipos de peticiones HTTP, como
doGet() y doPost() que procesa formularios
GET y POST respectivamente.

everis- CONFIDENCIAL
25 DERECHOS RESERVADOS
Servlet
Estructura

everis- CONFIDENCIAL
26 DERECHOS RESERVADOS
Servlet
Estructura

HttpServletRequest:
Proporciona informacin de peticin del cliente al servlet a
travs del protocolo HTTP.
Se pueden obtener datos como encabezados, cookies y
caractersticas genricas como direccin del cliente y
parmetros recibidos desde l (getParameter()).
Permite asociar objetos (setAttribute) y acceder al objeto
HttpSession.
HttpServletResponse:
Proporciona un canal para que el servlet enve respuesta al
cliente (getWriter()).
Provee adems funcionalidad especfica para respuestas HTTP
como enviar encabezados, cookies (addCookie()) y errores con
cdigos nmericos.

everis- CONFIDENCIAL
27 DERECHOS RESERVADOS
Servlet
Estructura

HttpSession:
Permite identificar a un usuario a travs de ms de
una pgina.
Para esto, se le asigna un identificador nico que se
mantiene mientras el usuario navega en el sitio
(getId()).
Permite asignar un tiempo mximo de inactividad y
se le puede asociar objetos para compartir entre
servlets (getAttribute y setAttribute).
Su uso es parecido a un HashTable.

everis- CONFIDENCIAL
28 DERECHOS RESERVADOS
Servlet
Estructura

ServletContext:
Provee un conjunto de mtodos para que el servlet se
comunique con el servidor Web, como:
Inicializar y almacenar atributos que otros servlets en el contexto
pueden acceder.
Registrar eventos.
Obtener referencias URL de recursos.
Obtener los valores asignados a los parmetros de inicializacin.
Obtener el tipo MIME de los archivos.
Obtener informacin acerca del contenedor de servlets, como su
nombre y versin.
Un contexto de servlet est asociado a una aplicacin Web, y
por ende, est compartido por todos los servlets que
pertenezcan a dicha aplicacin.

everis- CONFIDENCIAL
29 DERECHOS RESERVADOS
Servlet
Estructura (Equivalencia variables CGI Servlets)

{ "AUTH_TYPE", request.getAuthType() },
{ "CONTENT_LENGTH", String.valueOf(request.getContentLength()) },
{ "CONTENT_TYPE", request.getContentType() },
{ "DOCUMENT_ROOT", getServletContext().getRealPath("/") },
{ "PATH_INFO", request.getPathInfo() },
{ "PATH_TRANSLATED", request.getPathTranslated() },
{ "QUERY_STRING", request.getQueryString() },
{ "REMOTE_ADDR", request.getRemoteAddr() },
{ "REMOTE_HOST", request.getRemoteHost() },
{ "REMOTE_USER", request.getRemoteUser() },
{ "REQUEST_METHOD", request.getMethod() },
{ "SCRIPT_NAME", request.getServletPath() },
{ "SERVER_NAME", request.getServerName() },
{ "SERVER_PORT", String.valueOf(request.getServerPort()) },
{ "SERVER_PROTOCOL", request.getProtocol() },
{ "SERVER_SOFTWARE", getServletContext().getServerInfo() }

everis- CONFIDENCIAL
30 DERECHOS RESERVADOS
Servlet
Estructura

Un servlet tiene una configuracin


determinada de estructura de directorios y
archivos de configuracin.
Los archivos de configuracin estn en
formato XML.

everis- CONFIDENCIAL
31 DERECHOS RESERVADOS
Servlet
Estructura

Opcional

everis- CONFIDENCIAL
32 DERECHOS RESERVADOS
Servlet
Mi primer Servlet

everis- CONFIDENCIAL
33 DERECHOS RESERVADOS
Servlet
Lgica de funcionamiento (aproximacin)

En el navegador se escribe la URL del contenedor web.


Se indica el contexto.
Se seala la URL del Servlet.
El servidor web busca esta URL en el archivo de
configuracin y ejecuta el Servlet asociado a ella.
La bsqueda se realiza mediante el archivo web.xml.

URL: puerto Contexto URL del Servlet

everis- CONFIDENCIAL
34 DERECHOS RESERVADOS
Servlet
Web.xml

everis- CONFIDENCIAL
35 DERECHOS RESERVADOS
Servlet
Web.xml

XML Tag Descripcin


DOCTYPE Identifica el tipo de descriptor de despliegue.
web-app Raz para el descriptor de despliegue
display-name Nombre corto para la aplicacin. No necesita ser nico.
servlet-name Nombre oficial del Servlet. Necesita ser nico.
servlet-class Nombre completamente especificado del Servlet como clase.
init-param Parmetros de inicializacin disponibles para el Servlet.
param-name Nombre del parmetro.
param-value Valor del parmetro.
servlet-mapping Usado para mapear un Servlet a una URL.
session-config Define tiempo lmite para las sesiones.
error-page Define la pantalla a desplegar con el cdigo de error HTTP.

everis- CONFIDENCIAL
36 DERECHOS RESERVADOS
Servlet
Web.xml (Ejemplo)

everis- CONFIDENCIAL
37 DERECHOS RESERVADOS
Servlet
Ejercicio

Haga un Servlet llamado TablaServlet.


Debe estar en el paquete cl.ejercicio.servlet.
Agregue su Servlet al actual web.xml.
El Servlet debe desplegar en pantalla la siguiente tabla:

everis- CONFIDENCIAL
38 DERECHOS RESERVADOS
Servlet
Ciclo de vida

Instanciacin:
El contenedor de servlets es el encargado de esta
tarea.
Puede ocurrir durante la inicializacin del contenedor,
o postergado hasta cuando ste estime conveniente
hacerlo para procesar una peticin.
Inicializacin:
Luego de ser instanciado, el contenedor lo inicializa.
Se ejecuta una sola vez. No debe volver a ser
inicializado sin antes ser destruido.

everis- CONFIDENCIAL
39 DERECHOS RESERVADOS
Servlet
Ciclo de vida

Interaccin con Clientes:


Todos las peticiones que correspondan a un mismo
servlet, sern ejecutados por la misma instancia en
forma concurrente, por lo que hay que tomar las
medidas necesarias para evitar problemas de
sincronizacin. Si implementa interfaz
SingleThreadModel no hay problemas al respecto.
Destruccin:
El contenedor decide cuando un servlet debe ser
destruido.
Mientras se destruye, el contenedor no acepta
nuevos clientes para esa instancia.

everis- CONFIDENCIAL
40 DERECHOS RESERVADOS
Servlet
Ciclo de vida

everis- CONFIDENCIAL
41 DERECHOS RESERVADOS
Servlet
Formularios

Los formularios se utilizan para recuperar


datos del usuario.
Los Servlet nos permiten procesar estos
datos.
Con el objeto HttpServletRequest se tiene
acceso a los campos del formulario.

everis- CONFIDENCIAL
42 DERECHOS RESERVADOS
Servlet
Formularios (Ejemplo)

everis- CONFIDENCIAL
43 DERECHOS RESERVADOS
Servlet
Formularios (Ejemplo)

everis- CONFIDENCIAL
44 DERECHOS RESERVADOS
Servlet
Formularios (Ejemplo). Cmo funciona?

Accin
Al presionar el botn
Ingresar (submit), se
ejecuta la accin
Ingreso.
Esta accin corresponde
a una URL.
El servidor web busca la
URL en el archivo URL encontrada
web.xml.
Le asocia un Servlet.
web.xml
Se ejecuta este Servlet

everis- CONFIDENCIAL
45 DERECHOS RESERVADOS
Servlet
Formularios (Ejemplo). Cmo funciona?

El Servlet recupera los campos del


formulario utilizado el objeto request.
Enva mensaje al navegador con el objeto
response.

everis- CONFIDENCIAL
46 DERECHOS RESERVADOS
Servlet
Formularios. Ejercicio

Haga el siguientes formulario.


Al presionar Ingresar se debe validar que la clave
sea correcta.
Finalmente se deben desplegar los datos del cliente
en otra pgina

everis- CONFIDENCIAL
47 DERECHOS RESERVADOS
1 Introduccin

2 Protocolo HTTP

3 Repaso HTML

4 Servlet

5 JSP

everis- CONFIDENCIAL
48 DERECHOS RESERVADOS
JSP
Introduccin

JavaServer Page (JSP).


Componente Web utilizado para generar
pginas Web de manera dinmica.
Los archivos tienen la extensin .jsp.
Los JSP se convierten a Servlet.

everis- CONFIDENCIAL
49 DERECHOS RESERVADOS
JSP
Comparacin con Servlet

Diferencias:
Los servlets generan cdigo HTML a partir de cdigo Java.
Los JSPs contienen cdigo embebido Java en pginas HTML estticas.
Ventajas:
Rpidos de escribir y desarrollar.
Se concentra en la presentacin delegando funcionalidad a JavaBeans.
Diferencia la lgica (Java) de la presentacin (HTML).
Soporta un mecanismo de reportes de errores utilizando la directiva
page error.
Desventajas:
Identificar errores y corregirlos es complicado. Pueden ocurrir a nivel de
traduccin del JSP, compilacin del servlet, y presentacin HTML.
Muchos scriptlets pueden dificultar su mantencin.

everis- CONFIDENCIAL
50 DERECHOS RESERVADOS
JSP
Comparacin con Servlet

holaJSP.jsp

HolaServlet.java
HTML generado

everis- CONFIDENCIAL
51 DERECHOS RESERVADOS
JSP
Ciclo de vida

Compuesto de dos fases: Traduccin y Ejecucin.


Traduccin: El contenedor determina la clase servlet que
implementa el JSP. La forma en como el contenedor lo traduce
depende de l, sin embargo debe seguir la especificacin:
crear un servlet que extienda de HttpJspPage.
E implemente mtodo _jspService con la funcionalidad de la pgina
JSP.
Ejecucin: El contenedor utiliza la clase servlet creada
anteriormente para atender las mltiples peticiones por parte de
clientes.
Nota: La traduccin se realiza la primera vez que una
pgina es accesada.

everis- CONFIDENCIAL
52 DERECHOS RESERVADOS
JSP
Ciclo de vida

everis- CONFIDENCIAL
53 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Los elementos JSP estn embebidos en contenido


HTML esttico.
Todos los elementos JSP estn entre brackets: < >
Los elementos JSP son case sensitive.
Se distinguen de tags HTML por comenzar con <% o
<jsp: .
<jsp: sigue formato XML. Debe tener un tag de inicio y
un tag de trmino.

everis- CONFIDENCIAL
54 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Elementos JSP bsicos:


Tipo elemento Sintaxis JSP Descripcin
Directiva <%@ Directiva ... %> Informacin necesaria para controlar
la traduccin del texto.

Scripting (Programacin) <% %> Cdigo Java embebido.


Acciones <jsp: > Tags JSP especficos,
principalmente utilizados para
soportar JavaBeans

everis- CONFIDENCIAL
55 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Directivas:
Page: Permite definir propiedades de la pgina como el juego de
caracteres, bibliotecas a incluir, etc.

Directiva Ejemplo Efecto


info <%@ page info=Mi primer JSP %> Define respuesta de
Servlet.getContextInfo()
import <%@ page import=java.math.* %> Paquete a incluir.
isThreadSafe <%@ page isThreadSafe=true %> Indica si el JSP puede ser ejecutado
multithread.
errorPage <%@ page error=/error.jsp %> Pgina a la que redirige el JSP en caso de
que se produzca una excepcin no
esperada.
isErrorPage <%@ page isErrorPage=true Otorga permiso de excepcin a la pgina
contentType <%@ page contentType=MIME-Type %> Define el tipo de contenido y codificacin
de caracteres de la pgina.
session <%@ page session=false %> Indica que el JSP participa de la sesin.

everis- CONFIDENCIAL
56 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Programacin
(Scriptlets): Declaracin

Cdigo java en general.


Declaracin: Se declaran
en el cuerpo del servlet,
Cdigo
fuera de los mtodos.
Expresiones: Constan de
una sentencia que se
evala, retornando su
valor.
Comentarios.

Expresin
Comentarios

everis- CONFIDENCIAL
57 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Acciones:
Accin Ejemplo Efecto
forward <jsp:forward name=path /> Redirige la peticin a otra URL.
getProperty <jsp:getProperty name=foo Imprime la propiedad de un bean.
property=nombre />

Include <jsp:include path=path /> Incluye los contenidos de una URL local
en tiempo de ejecucin.

setProperty <jsp:setProperty name=client Asigna valor a la propiedad de un bean.


property=nombre
value=Juan />

useBean <jsp:useBean id=name Crea un nuevo bean del tipo


class=java.lang.String> especificado en la pgina.

everis- CONFIDENCIAL
58 DERECHOS RESERVADOS
JSP
Estructura y Sintaxis

Variables predefinidas:
request: Objeto HttpServletRequest asociado con la peticin.
response: Objeto HttpServletResponse asociado con la
respuesta.
out: PrintWriter utilizado para enviar la respuesta al cliente.
session: Objeto HttpSession asociado con la peticin.
application: Objeto ServletContext obtenido con
getServletConfig().getContext().
config: Objeto ServletConfig de la pgina.
pageContext: Encapsula caractersticas especficas del
servidor (es decir, si se accede a estas propiedades a travs de
este objeto, el cdigo funcionar en la mayora de los motores
JSP).
page: sinnimo de this.

everis- CONFIDENCIAL
59 DERECHOS RESERVADOS
JSP
Ejemplo

everis- CONFIDENCIAL
60 DERECHOS RESERVADOS
JSP
Uso de JavaBeans

JavaBeans: Clase de Java que cumple las


siguientes condiciones:
Tener un constructor sin argumentos.
No tener atributos pblicos.
Los atributos deben ser accesibles a travs
de set/get.

everis- CONFIDENCIAL
61 DERECHOS RESERVADOS
JSP
Uso de JavaBeans

everis- CONFIDENCIAL
62 DERECHOS RESERVADOS
JSP
Uso de JavaBeans

Scope:
page: El objeto es accesible en la pgina que lo crea.
request: El objeto es accesible en todas las pginas
correspondientes al mismo request.
session: El objeto es accesible en diferentes
requests correspondientes a una misma sesin.
application: El objeto es accesible por diferentes
requests, de diferentes sesiones, correspondientes a
la aplicacin Web.
Si no se indica, se asume scope de tipo page.

everis- CONFIDENCIAL
63 DERECHOS RESERVADOS
JSP
Ejercicio

Repita el ejercicio del formulario del


Servlet utilizando JSP.

everis- CONFIDENCIAL
64 DERECHOS RESERVADOS
everis- CONFIDENCIAL
65 DERECHOS RESERVADOS

You might also like