Logo Studenta

Apuntes de Informática Distribuida UAH _HTML_ Servlets_ JSP_ MVC____

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

Apuntes/Sesion1_HTML.pdf
1
Laboratorio de Informática 
Distribuida
Sesión I. Lenguaje HTML/Formularios
Roberto Barchino Plata
Lenguaje HTML/Formularios
Lenguaje HTML
El lenguaje HTML (HyperText Markup Language), es un 
lenguaje pensado para presentar información en la Web.
Es un lenguaje de marcas – etiquetas para la creación de 
documentos hipertextuales. 
Por hipertexto entenderemos texto con una presentación 
agradable, con inclusión de elementos multimedia 
(gráficos, video, audio) y con la presencia de hiperenlaces
que permiten relacionar otras fuentes de información en 
documentos hipertextos. 
La versión actual del lenguaje es la 4.0.1 disponible en: 
http://www.w3.org/TR/html4/
2
Lenguaje HTML/Formularios
Lenguaje HTML
Es un lenguaje de etiquetas y pueden verse como las 
“instrucciones” del lenguaje, la estructura de una etiqueta 
dentro de un documento o página HTML es:
<ETIQUETA> ..Campo acción .. </ETIQUETA>
Por tanto, un documento HTML estará formado de texto 
que será el contenido del documento y de etiquetas
HTML que resaltarán el contenido y le darán un formato 
de manera sencilla y con la posibilidad de relacionar 
documentos y fuentes de información mediante 
hiperenlaces. 
Lenguaje HTML/Formularios
Lenguaje HTML
Las etiquetas pueden presentar modificadores, que 
llamaremos atributos, que permitirán definir las diferentes 
posibilidades de la etiqueta HTML. 
Estos atributos se definirán en la etiqueta de inicio y 
consistirán normalmente en el nombre del atributo y el 
valor que toma separados por un signo de igual. Ejemplo:
<FORM method=“POST” action=“./ConsultarSaldo”>
Cuando el valor que toma el atributo tiene más de una 
palabra deberá expresarse entre comillas, en otro caso 
no será necesario. 
3
Lenguaje HTML/Formularios
Lenguaje HTML
La estructura de cualquier página HTML es:
<HTML> 
<HEAD> 
Definiciones de cabecera 
</HEAD> 
<BODY> 
Etiquetas HTML 
</BODY> 
</HTML> 
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Los formularios son plantillas que permiten la creación de 
documentos HTML para solicitar cierta información a los 
clientes/usuarios de la página, lo que nos permite 
interactuar con ellos. 
La principal utilidad de los formularios reside en la 
posibilidad de crear cuestionarios, encuestas o en general 
cualquier documento en el que se desee una interacción 
por parte del usuario. 
Se podrán definir distintos tipos de cajas de dialogo, 
botones de selección, menús de distintas opciones, etc. 
4
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
A continuación se presentan los diferentes 
atributos de la etiqueta <FORM> además de 
enumerar las posibilidades de inclusión de 
elementos de interacción con el usuario.
Dicha enumeración es básica, pudiendo 
profundizar en la definición en la siguiente 
dirección web: 
http://www.w3.org/TR/html4/interact/forms.html
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Atributos <FORM>
< FORM ACTION=“URL->fichero” METHOD= POST | GET > 
...
Elementos que forman el formulario
...
< /FORM>
Action – Modificador donde se especifica la dirección del programa del servidor 
web que se va hacer cargo de los datos del formulario. La URL puede ser absoluta 
(http://www.cc.alcala.es/servlet/Comprobar) o relativa (/Servlet/Comprobar)
Method – Determina cómo se transportan los datos entre el cliente y el servidor. 
En el método GET los datos se añaden a la URL y en el método POST los datos se 
envían a través de un fichero standard de entrada/salida.
5
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entradas básicas de datos en el formulario.
< INPUT TYPE = ( TEXT | PASSWORD | 
CHECKBOX | RADIO | HIDDEN | SUBMIT | IMAGE
| RESET ) 
NAME = "Variable " VALUE = "Valor Inicialización" 
>
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada de texto:
< INPUT TYPE=TEXT NAME="variable" VALUE="valor
inicial " SIZE="tamaño" MAXLENGTH="long. máxima" >
Ejemplo.
Nombre:<input type=text name=nombre size=30 
maxlength=25 >
6
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada de texto oculto. Password:
< INPUT TYPE=PASSWORD NAME="variable" 
VALUE="valor inicial " SIZE="tamaño" 
MAXLENGTH="long. máxima" > 
Ejemplo.
Password:<input type=PASSWORD name=clave size=15 
maxlength=10>
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada CheckBox.
< INPUT TYPE=CHECKBOX NAME="variable" 
CHECKED> 
Ejemplo.
<input type=checkbox name=caja1 checked ><br>
<input type=checkbox name=caja2 ><br>
<input type=checkbox name=caja3 ><br>
Nota: “Los posibles valores de las variables serán On y Off”
7
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada Radio.
<INPUT TYPE=RADIO NAME="variable" 
VALUE="valor“ CHECKED>
Ejemplo.
<input type=radio name=so value=linux checked ><br>
<input type=radio name=so value=95 ><br>
<input type=radio name=so value=2000 ><br>
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada Oculta.
< INPUT TYPE=HIDDEN NAME="variable“
VALUE="valor" > 
Ejemplo.
<input type=hidden name=oculto value=pasa1 ><br>
8
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Envío de Datos.
< INPUT TYPE=SUBMIT VALUE="mensaje" > 
Ejemplo.
<input type=submit value=“Enviar consulta” >
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Envío de Datos. Botón envío gráfico.
< INPUT TYPE=IMAGE NAME="variable" SRC="URL 
Imagen" > 
Ejemplo.
<input type=image name=imagen src=uah.jpg >
9
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Inicialización Datos.
< INPUT TYPE=RESET VALUE=“Mensaje" > 
Ejemplo.
<input type=reset value=“Borrar consulta” >
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Entrada de Texto, varias líneas.
<TEXTAREA NAME="variable" ROWS=Filas
COLS=Columnas> 
Texto de Inicialización que puede incluir varias líneas.
</TEXTAREA> 
Ejemplo.
<TEXTAREA NAME=texto ROWS=10 COLS=60> Escriba aquí
</TEXTAREA> 
10
Lenguaje HTML/Formularios
Lenguaje HTML. Formularios.
Selección entre múltiples opciones.
<SELECT NAME="variable"> 
< OPTION SELECTED VALUE=valor1> Opción 
Primera
< OPTION VALUE=valor2> Opción Segunda
… </SELECT> Ejemplo.
<SELECT NAME=dpto> 
< OPTION SELECTED VALUE=ventas> Dpto. 
Ventas
< OPTION VALUE=personal> Dpto. Personal
</SELECT> 
Laboratorio de Informática 
Distribuida
Sesión I. Lenguaje HTML/Formularios
Roberto Barchino Plata
Apuntes/Sesion2_Servlets[1].pdf
1
Laboratorio de Informática 
Distribuida
Sesión II. Servlets
Servlets
Base de datos
Cliente
Servidor 
Web
Tecnología Servlets
Se puede definir un Servlet como un 
programa JAVA que se ejecuta en un entorno 
distribuido en red, como un servidor web, y 
que recibe y responde a las peticiones de un 
cliente a través del protocolo HTTP. 
2
Servlets
Entorno de Trabajo:
Sistema operativo. 
Servidor Web: Apache Tomcat. 
Configuración de las variables de entorno.
Cómo crear una aplicación Web y desplegarla.
Formas de ejecutar un servlet.
Servlets
Sistema operativo.
A lo largo de la sesión se asumirá que se trabaja sobre 
una máquina con Windows 95/98/2000/NT/XP. 
En la elección del sistema operativo se ha tenido en 
cuenta que la mayoría de las personas que leen este 
tema dispondrán y conocerán este popular sistema 
operativo.
Pero también es factible construir un entorno de 
programación de la tecnología de los Servlets en un 
sistema operativo con Unix.
3
Servlets
Servidor Web (I).
El Servidor Web elegido es Tomcat. Para su utilización 
dispones de dos posibilidades:
1. Dentro del NetBeans tenemos pre-instalado el 
Tomcat 5.5.7.
Servlets
Servidor Web (II).
El Servidor Web Tomcat.
2. Instalar el Tomcat de forma independiente, 
simplemente será necesario descomprimir o 
ejecutar el fichero de jakarta-tomcat-5.5.9 en C:
4
Servlets
Servidor Web (III).
Cuando pregunte por el nombre y la clave del 
administrador se recomienda utilizar admin
– admin. El 
puerto por defecto es el 8080.
Servlets
Servidor Web (IV)
Para arrancar el servidor vamos al icono del Tomcat y 
pulsamos (botón derecho del ratón) en Start service.
Una vez arrancado el servidor podemos comprobar su 
funcionamiento ejecutando el navegador de Internet y 
poniendo la dirección: http://localhost:8080 o 
http://127.0.0.1:8080
5
Servlets
Servidor Web (V).
La página por defecto del Servidor Web.
Servlets
Configuración de las variables de entorno.
Se tendrán que añadir dos nuevas variables de entorno 
al sistema operativo. Estas son JAVA_HOME que 
especifica donde se encuentra instalado el JDK y otra es 
CATALINA_HOME que indica donde está instalado el 
Tomcat.
A continuación mostramos las pantallas en la que se 
especifica esta información (Panel de Control – Sistema 
– Opciones Avanzadas – Variables de Entorno):
6
Servlets
Configuración de las variables de entorno.
Servlets
Configuración de las variables de entorno.
Si el entorno de desarrollo NO es NetBeans, para poder 
compilar las clases que representan los servlets
debemos decirle al compilador donde se encuentra el 
API de los servlets. 
Esto es así porque el API de los servlets no viene con el 
API estándar del JDK.
La librería que tenemos que añadir se llama servlet-
api.jar y se encuentra dentro del Tomcat en el directorio 
/common/lib.
Si se utiliza NetBeans esto no es necesario!!!
7
Servlets
Configuración de las variables de entorno.
Si utilizamos el entorno de Java JCreator, podremos 
especificar donde buscar las librerías externas al JDK 
para incluirlas en nuestro proyecto y poder buscar las 
clases necesarias para compilar los servlets.
Para hacerlo debemos ir a las propiedades del proyecto 
y en la pestaña de Required Libraries introducir una 
nueva librería llamada servlets que apunte al fichero 
servlet-api.jar.
Servlets
Configuración de las variables de entorno.
8
Servlets
Cómo crear una aplicación Web en 
NetBeans.
Pasos:
1. Elegir un nuevo proyecto Web.
2. Configurarlo: Nombre del proyecto, su ubicación, el 
servidor web, etc.
3. Cerrar configuración configuración 
Servlets
Elegir un nuevo proyecto en NetBeans
9
Servlets
Configurarlo en NetBeans.
Servlets
Una vez terminada la configuración, el proyecto 
web ya está creado y ya podemos ejecutarlo en 
NetBeans. 
Para ejecutarlo debemos pulsar el botón de Run Main
Proyect - > F6.
10
Servlets
Y podremos visualizar, a través de un navegador 
web, la página por defecto de nuestro proyecto no 
es otra cosa que una página jsp
Servlets
Cómo crear una aplicación y desplegarla, sin 
NetBeans.
Para crear una aplicación Web y desplegarla en el 
servidor es necesario crear una estructura de 
directorios en la carpeta webapps del Tomcat.
1.- Creamos una carpeta con el nombre del proyecto 
Web que queremos realizar, por ejemplo:
C:\Tomcat\webapps\Miproyecto
2.- En el directorio MiProyecto situamos los siguientes 
ficheros y directorios:
11
Servlets
Cómo crear una aplicación y desplegarla.
/ *.html *.jsp *.css: Este directorio base contiene los 
elementos que comúnmente son utilizados en un sitio Web, 
Documentos en HTML , JSP's , CSS ,etc. 
/WEB-INF/web.xml: Contiene elementos de seguridad de la 
aplicación así como detalles sobre los servlets que serán 
utilizados dentro de la aplicación.
/WEB-INF/classes/: Contiene a los servlets y a las clases 
Java adicionales a las del JDK que serán empleadas. 
/WEB-INF/lib/: Contiene los JAR's que serán utilizados por 
la aplicación.
Servlets
Cómo crear una aplicación y desplegarla.
Una vez situados todos los ficheros en los directorios 
adecuados para crear nuestra aplicación Web, debemos 
crear un fichero llamado web.xml.
Este fichero se conoce como el descriptor de
despliegue y sirve para registrar nuestros servlets en el 
contenedor. 
El entorno de NetBeans nos ayuda enormemente en la 
creación y posterior manipulación de este fichero.
Para crear fácilmente un descriptor de despliegue, se 
suele editar uno existente. A continuación tenemos un 
esqueleto de un fichero web.xml:
12
Servlets
Fichero Web.xml.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
</web-app>
Servlets
Cómo crear una aplicación y desplegarla.
Además de la información anterior debemos describir 
cuándo el contenedor de servlets debe invocar al 
servlet, lo que se suele llamar el mapeo del servlet. 
En otras palabras, debemos describir cómo se enlaza 
una URL al servlet. En el fichero web.xml, las URLs se 
mapean de esta forma:
<servlet-mapping> 
<servlet-name>nombre</servlet-name>
<url-pattern>pattern</url-pattern>
</servlet-mapping>
13
Servlets
Formas de ejecutar un Servlet.
Introducir la dirección URL del servlet en un navegador 
web.
Llamar al servlet desde una página web o formulario.
Ejecutar un servlet llamándolo desde otro servlet.
Servlets
Desde un navegador web
Ejemplo: 
http://nombre_maquina:puerto/ruta_servlet/nombre_servlet
Las llamadas a servlets pueden contener parámetros:
http://www.cc.alcala.es/~barchino/servlets/ejem1?dato1=3&dato2=4
Parámetros
14
Servlets
Desde una página Web
Un servlet también puede ser llamado desde el código de 
una página web, al igual que se llamaría a cualquier CGI.
Ejemplo:
<form action = 
“http://www.cc.alcala.es/~barchino/servlets/serv2”
method=“post”>
...distintas entradas en el formulario…
</form>
Servlets
Desde otro servlet
Se puede lanzar la ejecución de un servlet desde otro.
Pasos:
Conocer el nombre del servlet que queremos llamar.
Proporcionar acceso al objeto “Servlet” del servlet
llamado.
Llamar al método público del servlet.
15
Servlets
El API de los Servlets
Biblioteca ‘javax.servlet’
Servlets
HttpServlet
MiServlet
paquete javax.servlet
paquete javax.servlet.http
Servlets
El API de los Servlets
Dos paquetes:
javax.servlet javax.servlet.http
Interfaz Servlet Interfaz HttpServlet
Interfaz ServlerRequest Interfaz HttpServletRequest
Interfaz ServlerResponse Interfaz HttpServletResponse
Interfaz ServletConfig Interfaz HttpServletConfig
Interfaz ServletContext ………
Interfaz SingleThreadModel
Clase GenericServlet
16
Servlets
La Clase HttpServlet
Extiende de la clase GenericServlet y proporciona una 
implementación de la interfaz Servlet mucho más específica para el 
protocolo HTTP. Esta es la clase que extienden la mayoría de los 
servlets que hay en la actualidad.
Métodos (throws ServletException, IOException)
Gestionan el servicio
public void service (HttpServletRequest req, HttpServletResponse
res)
Implementan operaciones propias de HTTP
GET doGet (HttpServletRequest req, HttpServletResponse res)
POST doPost (HttpServletRequest req, HttpServletResponse res)
Servlets
Javax.servlet.http.HttpServletRequest
Una interfaz que encapsula la funcionalidad de las 
peticiones que hace el cliente. 
IMPORTANTE: Uno de los métodos de esta interfaz es el 
método getParameter (String Name) utilizado en la 
mayoría de los servlets que recuperan valores de los de 
los formularios HTML rellenados por los clientes de las 
aplicaciones.
Un objeto HttpServletRequest se pasa como parámetro al 
método service de la clase HttpServlet.
17
Servlets
Javax.servlet.http.HttpServletResponse
Esta interfaz encapsula la funcionalidad de una respuesta 
HTTP, incluyendo el manejo de las cabeceras del propio 
protocolo. 
Interfaz que encapsula la funcionalidad de la respuesta 
MIME que será enviada al cliente.
Un objeto ServletResponse se pasa como parámetro al 
método service de la clase Servlet.
Servlets
Ciclo de Vida:
La interfaz
que se utiliza para implementarlos define una 
serie de métodos para cada una de las etapas.
El orden es el siguiente:
Cuando el servidor carga el Servlet invoca al método init. (Todas las 
peticiones que lleguen ante de que el método termine deberán 
esperar).
Una vez ejecutado el método init, todas las peticiones serán 
atendidas por el método service . IMPORTANTE: El servidor 
manejará varias peticiones simultáneamente, asignando un hilo 
propio a cada petición.
Por último cuando el servidor web descarga al Servlet se 
invocará al método destroy.
18
Servlets
Servidor Servlet
Servidor
Servlet Manejo de
peticiones
Cliente
Cliente
service()
Servidor Servlet
Descarga
destroy()
doGet()
doPost()
Carga
init()
Servlets
Creación del primer Servlet:
Se van a seguir todos los pasos necesarios para hacer 
funcionar sin problemas un Servlet, y se va a realizar un 
primer análisis de su estructura básica.
El ejemplo va a consistir en una página HTML en la que 
existirá un campo de entrada en el formulario, con los 
correspondientes botones Submit (Enviar consulta) y 
Reset (Restablecer) típicos de cualquier formulario de 
entrada de datos.
19
Servlets
Creación del primer Servlet. Pagina Web.
Al pulsar al botón
Servlets
Creación del primer Servlet. Resultado.
Salida del Servlet
20
Servlets
Código HTML:
<html> 
<head> 
<title>Ejemplo "Mi Primer Servlet"</title> 
</head> 
<body> 
<form action=/MiPrimerServlet/MiPrimerServlet method=POST> 
<BR> <BR>Introduzca un texto en el cuadro y pulse "Enviar 
Consulta"<BR> <BR> 
<input type=text name=TEXTO> 
<BR> <BR><input type=submit><input type=reset></form> 
</body> 
</html>
Servlets
Código del Servlet:
// MiPrimerServlet.java
// 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
public class MiPrimerServlet extends HttpServlet
{ 
string nombre;
public void service(HttpServletRequest req, HttpServletResponse res) 
throws ServletException, IOException
{ 
nombre = req.getParameter("TEXTO"); 
PrintStream out = new PrintStream(res.getOutputStream()); 
res.setContentType("text/html"); 
out.println("<p>Usted ha escrito : "+nombre+"</p>");
out.close();
} 
}
21
Servlets
Código del web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Servidor Hola</display-name>
<description>Captura un texto como parametro</description>
<servlet>
<servlet-name> MiPrimerServlet </servlet-name>
<servlet-class> MiPrimerServlet </servlet-class>
<servlet-class>package.nombre.MiClass</servlet-class>
</servlet>
<servlet-mapping> 
<servlet-name> MiPrimerServlet </servlet-name>
<url-pattern>/MiPrimerServlet </url-pattern>
</servlet-mapping>
</web-app>
Servlets
Crear un Servlet, por defecto, en el entorno de 
NetBeans.
Pasos:
Crear un nuevo fichero de tipo servlet sobre el proyecto web 
previamente creado.
Configurar servlet con el nombre y demás parámetros de 
configuración como veremos a continuación.
Ejecutar la aplicación y probar el ejecución del servlet.
22
Servlets
Creación de una servlet en el entorno del 
NetBeans, una vez creado el proyecto:
Servlets
Configurar (I) el servlet con el nombre :
23
Servlets
Configurar (II) el servlet con la información 
necesaria para el mapeo :
Servlets
Además podemos visualizar el código que se 
genera por defecto.
24
Servlets
Y el fichero de configuración web.xml.
Servlets
Una vez terminada la configuración, del servlet, 
podemos ejecutarlo. 
Para ejecutarlo debemos pulsar el botón de Run Main
Proyect - > F6.
25
Servlets
Resultado de la ejecución.
Servlets
Servlet y JDBC.
La clave del éxito de las aplicaciones Web, reside en la 
consulta de bases de datos por parte del aplicativo 
software, que hace de intermediario entre el cliente y el 
sistema que almacena la información.
A las aplicaciones cliente-servidor que utilizan este tipo de 
arquitectura, se las denomina aplicaciones de tres capas.
26
Servlets
Creación del primer Servlet:
Se van a seguir todos los pasos necesarios para hacer 
funcionar sin problemas un Servlet, y se va a realizar un 
primer análisis de su estructura básica.
El ejemplo va a consistir en una página HTML en la que 
existirá un campo de entrada en el formulario, con los 
correspondientes botones Submit (Enviar consulta) y 
Reset (Restablecer) típicos de cualquier formulario de 
entrada de datos.
Servlets
Creación de una página en el entorno del NetBeans
(I):
File –> New File 
Ctrl + N
27
Servlets
Creación de una página en el entorno del NetBeans
(II):
Servlets
Código HTML:
28
Servlets
Crear el servlet:
1º
2º
Servlets
Código Servlet:
29
Servlets
Código del web.xml
Servlets.
Una vez terminada la creación y 
configuración, del servlet y la página web, 
podemos ejecutar esta primera aplicación. 
Para ejecutarlo debemos pulsar el botón de Run
Main Proyect - > F6.
30
Servlets
Acceso a la aplicación
Servlets
Resultado de la Aplicación.
31
Servlets
Servlet y JDBC.
La clave del éxito de las aplicaciones Web, reside en la 
consulta de bases de datos por parte del aplicativo 
software, que hace de intermediario entre el cliente y el 
sistema que almacena la información.
A las aplicaciones cliente-servidor que utilizan este tipo de 
arquitectura, se las denomina aplicaciones de tres capas.
Servlets
Servlet y JDBC: Arquitectura en tres capas.
32
Servlets
Acceso a Datos.Conector JDBC-ODBC.
Cómo Crear un Conector vía JDBC-ODBC.
El puente JDBC-ODBC no necesita pasos específicos 
para su instalación, pero ODBC si. 
Por ejemplo si asumimos que estamos utilizando un 
máquina con S.O. Windows necesitaremos configurar 
nuestra conexión mediante ODBC.
A continuación se presentan las pantallas necesarias 
para crear un conector.
Servlets
Acceso a Datos. Conector JDBC-ODBC.
33
Servlets
Acceso a Datos. Conector JDBC-ODBC.
Servlets
Acceso a Datos. Conector JDBC-ODBC.
34
Servlets
Acceso a Datos. Conector JDBC-ODBC.
Servlets
Acceso a Datos. Conector JDBC-ODBC.
35
Servlets
Servlet y JDBC. Aplicación Ejemplo. Encuesta.
En nuestra página principal insertaremos un pequeño 
formulario, donde se deberá responder a una sencilla 
pregunta, e introducir los datos personales necesarios 
para que podamos contactar con el posible ganador del 
premio.
Una vez el participante haya introducido los datos, y pulse 
el botón para mandar los datos al servidor, recibirá un 
resumen con la estadística resultante hasta ese momento 
junto con un mensaje de agradecimiento.
Servlets
Aplicación Ejemplo. Encuesta. Página HTML
36
Servlets
Aplicación Ejemplo. Encuesta. Página 
HTML
Servlets
Aplicación Ejemplo. Encuesta. Resultado
37
Servlets
Aplicación Ejemplo. Encuesta. Servlet (I)
Servlets
Aplicación Ejemplo. Encuesta. Servlet (II)
38
Servlets
Aplicación Ejemplo. Encuesta. Servlet (III)
Servlets
Aplicación Ejemplo. Encuesta. Servlet (IV)
39
Servlets
Aplicación Ejemplo. Encuesta. Servlet (V)
Servlets
Servlet y el Manejo de Sesiones. 
Los protocolos de Comunicaciones en Internet se pueden 
dividir en 2 tipos:
Con Estado (FTP, Telnet, etc. )
Sin Estado (WWW - HTTP )
ESTADO: Se sabe quien es el usuario y qué es lo que 
quiere realizar en cada momento, mientras esté conectado 
al servidor.
40
Servlets
Servlet y el Manejo de Sesiones. 
El protocolo HTTP es un protocolo SIN estado. Por tanto, 
el servidor no necesita saber si un determinado conjunto 
de peticiones vienen del mismo cliente o de clientes 
diferentes.
Pero, en algunas situaciones, puede ser interesante 
cuando se desarrollan aplicaciones WEB que este aspecto 
se tenga en cuenta (estado), por ejemplo en una tienda 
virtual.
El objetivo de una sesión es mantener el estado del 
usuario en el servidor.
Servlets
Servlet y
el Manejo de Sesiones. 
Una sesión se puede definir como un conjunto de 
interacciones relacionadas, entre un cliente y un Servidor 
WEB, que tienen lugar en un periodo de tiempo 
determinado.
Debido a que el protocolo HTTP es un protocolo sin 
estado, el servidor web no conoce a qué sesión pertenece 
una petición determinada, existen en general dos formas 
para conocer el estado del usuario:
Que el cliente se identifique cada vez que realiza una petición 
determinada. (REPETITIVA)
Usando distintas técnicas que se presentan a continuación
41
Servlets
Servlet y el Manejo de Sesiones. 
Si en el desarrollo de la aplicación WEB utilizamos 
Servlets para gestionar las peticiones, el desarrollador 
tiene a su disposición una serie de posibilidades que le 
ayudan a mantener una sesión:
Introduciendo campos ocultos en el formulario HTML. 
Reescribiendo la URL incluyendo estos datos como 
parámetros de la misma.
Usando cookies.
Usando las herramientas de seguimiento de sesiones que se 
incluyen dentro de la API de Servlets.
Servlets
Servlet y el Manejo de Sesiones. 
La API de JAVA para desarrollar Servlets proporciona un 
método para el seguimiento de los datos de una sesión, el 
cual utiliza dos técnicas diferentes:
Las cookies
El objeto HttpSession
El objeto HttpSession se usa para almacenar los datos de 
una sesión en el contexto del servlet actual.
Las cookies se utilizan para relacionar a un usuario 
particular con su objeto de sesión asociado, gracias a un 
identificador de sesión
42
Servlets
Servlet y el Manejo de Sesiones. 
El objeto HttpSession viene definido por la interfaz 
HttpSession y se obtiene usando el método getSession()
del objeto HttpServletResponse. 
El objeto HttpSession posee los siguientes métodos:
getCreationTime() Devuelve la fecha en la fue creada 
la sesión.
getID() Devuelve el identificador de la sesión.
getLastAccesedTime() Devuelve el lapso de tiempo 
transcurrido desde que un usuario con el mismo 
identificador de sesión, realizó una petición al servidor.
Servlets
Servlet y el Manejo de Sesiones. 
El objeto HttpSession posee los siguientes métodos:
invalidate() Elimina la sesión actual.
isNew() Devuelve true si el objeto sesión ha sido 
creado por el servidor, pero todavía no se ha enviado 
de vuelta al navegador del usuario correspondiente.
getValueNames() Devuelve un array de textos que 
representan todos los nombres de los valores que son 
almacenados para esta sesión.
43
Servlets
Servlet y el Manejo de Sesiones. 
El objeto HttpSession posee los siguientes métodos:
getValue(String name) Devuelve el valor almacenado 
para el nombre pasado como parámetro.
putValue(String name, Object value) Añade un item
“clave=valor” a la sesión.
removeValue(String name) Elimina un item de la 
sesión.
Servlets
Servlet y el Manejo de Sesiones. 
El objeto HttpSession posee los siguientes métodos:
setMaxInactiveInternal(int interval) Especifica el 
máximo intervalo de tiempo, en segundos, que el 
servidor mantiene la sesión si que exista ninguna otra 
petición dirigida a la sesión.
getMaxInactiveInternal() Devuelve el máximo intervalo 
de tiempo que la sesión ha estado inactiva.
44
Servlets
Servlet y el Manejo de Sesiones. 
Pasos a seguir para la realización de sesiones usando 
servlets:
Lo primero es crear un objeto sesión. Utilizando para ello el 
método getSession(boolean) de la clase 
HttpServletRequest.
Después una vez creado el objeto sesión, sólo queda leer de 
él y escribir en él. Cuando finaliza el servlet, se invalida la 
sesión.
Servlets
Servlet y el Manejo de Sesiones. 
Ejemplo (I): Como escribir datos en una sesión.
//Se obtiene un objeto sesion
HttpSession sesion=peticion.getSession(true);
//Se añade un nuevo item a la sesión
sesion.putValue("Cliente",strCodigo[0]);
Nota: peticion es un objeto de la clase HttpServletsRequest
45
Servlets
Servlet y el Manejo de Sesiones. 
Ejemplo (II): Como leer datos de una sesión
//Se obtiene un objeto sesion
HttpSession sesion=peticion.getSession(true);
//Se leen los datos realizando los casting necesarios
String strCodigoC=(String) sesion.getValue("Cliente");
Laboratorio de 
Informática Distribuida
Sesión II. Servlets
Apuntes/Sesion3_JSP.pdf
1
Laboratorio de Informática 
Distribuida
Sesión III. JavaServer Pages
Introducción a JavaServer Pages
Índice Sesión JSP:
Tecnologías JAVA para aplicaciones web.
Introducción a JSP.
Elementos JSP.
Ciclo de Vida. 
Acceso a Datos.
Manejo de Sesiones.
JavaBeans.
Librería de Etiquetas.
2
Introducción a JavaServer Pages
Tecnologías JAVA para aplicaciones web.
El lenguaje JAVA dispone de dos tecnologías 
para el desarrollo de aplicaciones en entorno 
web:
Tecnología JSP.
Tecnología Servlets.
Aunque distintas, están íntimamente 
relacionadas, ya las páginas JSP al final se 
transforman en Servlets que son las aplicaciones 
que realmente se ejecutan en el servidor web. 
Introducción a JavaServer Pages
Introducción a JSP.
Permite mezclar, en una página, código HTML para 
generar la parte estática, con contenido dinámico generado 
a partir de marcas especiales <% .... %>
El contenido dinámico se obtiene, en esencia, gracias a la 
posibilidad de incrustar dentro de la página código Java
de diferentes formas.
Permite el acceso a Bases de Datos remotas. 
Gestionar sesiones.
3
Introducción a JavaServer Pages
Introducción a JSP.
El primer borrador de la especificación JSP, de 
Sun Microsystems, vio la luz en 1998, 
apareciendo la especificación v 1.0 al año 
siguiente.
La siguiente versión (v 1.1) se presento a finales 
de 1999.
Actualmente disponemos de la especificación v 
1.2
Introducción a JavaServer Pages
Introducción a JSP.
La página JSP se convierte en un Servlet
La conversión la realiza la máquina servidora: el motor o 
contenedor de JSP, la primera vez que se solicita la página 
JSP al servidor web.
Este servlet generado procesa cualquier petición para esa 
página JSP.
Si se modifica el código de la página JSP, entonces se 
regenera y recompila automáticamente el Servlet y se 
recarga la próxima vez que sea solicitada.
4
Introducción a JavaServer Pages
Introducción a JSP.
Introducción a JavaServer Pages
Introducción a JSP.
Ejemplo de página JSP que dice Hola y escribe la 
fecha actual (fichero hola.jsp). Para editar las 
páginas se utilizará el EditPlus.
<%@ page info="Un ejemplo Hola Mundo" import="java.util.Date" %>
<HTML>
<head> <title> Hola, Mundo </title> </head>
<body> <h1> ¡Hola, Mundo! </h1>
La fecha de hoy es: <%= new Date().toString() %>
</body>
</HTML>
5
Introducción a JavaServer Pages
Introducción a JSP. 
/ *.html *.jsp *.css: Este directorio base contiene los elementos 
que comúnmente son utilizados en un sitio Web, Documentos 
en HTML , JSP's , CSS ,etc. 
/WEB-INF/web.xml: Contiene elementos de seguridad de la 
aplicación así como detalles sobre los servlets que serán 
utilizados dentro de la aplicación.
/WEB-INF/classes/: Contiene a los servlets y a las clases Java 
adicionales a las del JDK que serán empleadas. 
/WEB-INF/lib/: Contiene los JAR's que serán utilizados por la 
aplicación.
Directorio de Partida
C:\Tomcat5.0\webapps\MiAplicación\
Introducción a JavaServer Pages
Elementos JSP. Resumen.
Comentarios.
Directivas <%@
page <%@ page ATRIBUTOS %>
include <%@ include file=”Nombre del fichero” %>
taglib <%@ taglib uri =”taglibraryURI” prefix=”tagPrefix” %>
Elementos para incrustar código JAVA
Scripting (guiones) <%
Declaraciones <% ! Declaración %>
Código Java arbitrario (scriptlets) <% código Java %>
Expresiones <%= Expresión Java a evaluar %>
Acciones estándar (formato XML) <jsp:
<jsp:useBean> <jsp:setProperty> <jsp:getProperty>
<jsp:include> <jsp:param>
<jsp:forward> <jsp:param>
6
Introducción a JavaServer Pages
Elementos JSP. 
Comentarios.
Las paginas JSP admiten dos tipos de comentarios, los 
que están orientados o concebidos para presentarse en 
el código HTML que se generaran
a partir de la pagina 
JSP y los comentarios ocultos, que solamente aparecen 
en la pagina JSP y están orientados al desarrollador.
<!-- Comentario HTML normal -->
<%-- Comentario oculto JSP --%>
Introducción a JavaServer Pages
Elementos JSP. 
Declaraciones:
Son elementos que se utilizan para declarar una 
variable, objeto o un método que se utilizará
posteriormente en la pagina JSP. No generan ninguna 
salida, por lo que pueden utilizarse conjuntamente con 
otros elementos de las paginas JSP, como son 
expresiones o scriptlets.
<%! Declaracion, .... % >
<%! int i = 0, j = 10; % >
<%! java.util.Date fecha = new java.util.Date();%>
7
Introducción a JavaServer Pages
Elementos JSP. 
Expresiones:
Las expresiones son un mecanismo que evita tener que 
escribir el código completo de la sentencia 
out.println(). Su sintaxis utiliza el símbolo de igual, 
tal y como vemos a continuación
<%= expresion >
<%= sueldoBase + dietas %>
Introducción a JavaServer Pages
Elementos JSP. 
Scriptlets:
Un scriptlet es un bloque de código Java insertado en la 
página y ejecutado durante el procesamiento de la 
respuesta.
El código introducido se inserta directamente en el 
método _jspService() del servlet generado para la 
página. 
<% código Java %>
<% int i, j;
for (i=0;i<3;i++) {
j=j+1;
}
%>
8
Introducción a JavaServer Pages
Elementos JSP. 
Directivas:
Utilizadas para definir y manipular una serie de atributos 
dependientes de la página que afectan a todo el JSP.
Las directivas existentes son las siguientes:
Page
Include
Taglib
Introducción a JavaServer Pages
Elementos JSP. 
Directiva page:
Esta directiva se utiliza para definir atributos globales
que deben ser aplicados a la pagina JSP completa.
La directiva page se puede utilizar varias veces en una 
misma pagina JSP, aunque solamente se puede 
especificar el valor de un atributo una única vez. La 
excepción de esta regla es el atributo import al cual se 
le pueden asignar diferentes valores.
9
Introducción a JavaServer Pages
Elementos JSP. 
Directiva page:
Sintaxis:
Donde ATRIBUTOS aparecen en pares: nombre=”valor”
Ejemplo:
A continuación se presenta una lista de los 
atributos más utilizados.
<%@ page ATRIBUTOS %>
<%@ page language=”Java” import=”Java.rmi.*, java.util.*” session=”true” %>
Introducción a JavaServer Pages
Elementos JSP. 
Directiva page:
language.
indica el lenguaje que se utiliza en la página (scriptles). Con la 
especificación 1.2, sólo está permitido el valor “java”.
import.
Lista de paquetes o clases, separados por coma, que serán 
importados para utilizarse dentro del código java.
session.
Especifica si la página participa en una sesión. Si se inicializa a 
true, está disponible el objeto implícito sesión.
buffer.
Especifica el tamaño de un “espacio” para manejar la salida de la 
página jsp al cliente.
autoflush, info, errorPage, isErrorPage,….
10
Introducción a JavaServer Pages
Elementos JSP. 
Directiva include:
Indica al motor JSP que incluya el contenido de un 
fichero a una página JSP, insertándolo en el lugar de la 
directiva include JSP.
El contenido del fichero incluido, es analizado en el 
momento de la traducción del fichero JSP y se incluye 
una copia del mismo dentro del servlet generado.
Una vez incluido, si se modifica el fichero incluido no se 
verá reflejado en el servlet.
Introducción a JavaServer Pages
Elementos JSP. 
Directiva include:
El tipo de fichero a incluir puede ser un
fichero HTML (estático)
fichero jsp (dinámico)
Sintaxis
<%@ include file=”URL fichero” %>
11
Introducción a JavaServer Pages
Elementos JSP. 
Directiva include: Ejemplo: directiva.jsp 
<HTML>
<head>
<title> Página de prueba de directivas de compilación 
</title>
</head>
<body>
<h1> Página de prueba de directivas de
compilación </h1>
<%@ include file=”/fich1.html” %>
<%@ include file=”/fich2.jsp” %>
</body>
</HTML>
Introducción a JavaServer Pages
Elementos JSP. 
Directiva include: Ejemplo: fich1.html 
<HTML>
<head> <title> Hola, Mundo </title> </head>
<body> <h1> ¡Hola, Mundo! </h1>
</body>
</HTML>
<%@ page info="Un ejemplo Hola Mundo"
import="java.util.Date" %>
La fecha de hoy es: <%= new Date().toString() %>
fich2.jsp
12
Introducción a JavaServer Pages
Elementos JSP. 
Directiva taglib:
Permite extender los marcadores de JSP con etiquetas 
o marcas generadas por el propio usuario (etiquetas 
personalizadas).
Se hace referencia a una biblioteca de etiquetas que 
contiene código Java compilado definiendo las etiquetas 
que van a ser usadas, y que han sido definidas por el 
usuario.
Introducción a JavaServer Pages
Elementos JSP. 
Directiva taglib:
Sintaxis
Los atributos son:
uri: la dirección donde se sitúa el fichero descriptor de la 
librería de etiquetas (Tag Library Description - TLD) en 
formato XML.
prefix: Define el prefijo de una acción de la librería.
<%@ taglib uri=”WEF-INF/tlds/libreria.tld” prefix=”lib” %>
13
Introducción a JavaServer Pages
Elementos JSP. 
Acciones:
Son marcas-etiquetas estándar, en formato XML, que 
afectan al comportamiento en tiempo de ejecución de 
la página JSP. 
En la traducción de la página JSP al servlet, la marca se 
reemplaza por cierto código Java que define a dicha 
marca. Una marca, por tanto, asocia cierto código Java.
Constan de un prefijo y un sufijo además de una serie 
de atributos. El prefijo es siempre “jsp” en las acciones 
estándar.
Introducción a JavaServer Pages
Elementos JSP. 
Acciones.
Sintaxis:
Lista de Acciones:
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:sufijo atributos/>
14
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:include>
Permite incluir un recurso especificado por la URL, en la 
petición JSP en tiempo de ejecución.
Por tanto, cuando se ejecuta el servlet, se invoca al 
recurso que realiza la operación y devuelve el resultado 
al propio servlet.
Sintaxis
<jsp:include page=“URL”/>
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:include>
¿Qué diferencia existe entre la directiva y la acción?
Directiva: <%@ include file=“Nombre fichero” %> se 
añade el código al servlet que se genera para la página 
en tiempo de compilación y se incluye el contenido 
EXISTENTE EN EL MOMENTO INICIAL.
Acción <jsp:include> no se añade código al servlet, sino 
que se invoca al objeto en tiempo de ejecución y se 
ejecuta el contenido EXISTENTE EN EL MOMENTO DE 
LA PETICIÓN.
15
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:param>
Se usa como submarca dentro de cualquier otra acción.
Sirve para pasar parámetros.
Sintaxis
<jsp:include page=“URL”>
<jsp:param name=“nombre clave” value=“valor”/> 
</jsp:include>
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:forward>
Esta marca permite que la petición sea redirigida a otra 
página JSP, a otro servlet o a otro recurso estático.
Muy útil cuando se quiere separar la aplicación en 
diferentes vistas, dependiendo de la petición interceptada.
Sintaxis
<jsp:forward page=“URL”/ >
16
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:forward>
Ejemplo. Formulario HTML que pide nombre y password 
y los envía a una página jsp que lo analiza. Página 
comprobar.html.
<HTML><head> <title> Ejemplo de uso del forward </title> 
</head> <body>
<h1> Ejemplo de uso del forward </h1>
<form method=“post” action=“comprobar.jsp”>
<input type=“text” name=“Nombre”>
<br> y clave:
<input type=“password” name=“password”> </p>
<p><input type=“submit” name=“login”>
</form></body></HTML>
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:forward>
Ejemplo. EL fichero comprobar.jsp:
<% if
((request.getParameter(“Nombre”).equals(“Roberto”)) &&
(request.getParameter(“password”).equals(“xyzzy”))) {
%>
<jsp:forward page=“saludoforward.jsp”/>
<% } else { %>
<%@ include file=“comprobar.html”%>
<% } %>
17
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:forward>
Ejemplo. EL fichero saludoforward.jsp :
<HTML>
<head>
<title> Saludo al cliente </title>
</head>
<body>
<h1> Saludo al cliente</h1>
<%
out.println(“Bienvenido a la nueva aplicación");
%>
</body> </HTML>
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:useBean>
Esta acción se utiliza para instanciar un JavaBean si no 
existe, o localizar una instancia ya existente, para su uso 
desde la página JSP.
Los JavaBeans son objetos Java que cumplen ciertas 
características de diseño en la creación.
Se utilizan para reducir al máximo el código Java 
insertado en una página JSP. 
Permite separar la lógica de ejecución (en el JavaBean) 
de la presentación (en el servlet generado)
18
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:useBean>
Los JavaBeans se caracterizan porque a sus atributos 
(llamados propiedades) se acceden (por convenio) a 
través de los métodos setNombreAtributo y 
getNombreAtributo
Si se usa un JavaBean en una página habrá que definir la 
clase externa correspondiente, creando los métodos set
y get.
Dentro del servlet generado se puede llamar a métodos 
de un JavaBean que se encarguen de realizar ciertas 
operaciones.
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:useBean>
Sintaxis
Características de los atributos de esta acción:
En id se define el nombre asignado al JavaBean 
(identificador asociado)
El ámbito se refiere a dónde puede referenciarse el 
Javabean. Permite compartir objetos en una sesión
“page”,”request”,”session” y “application”
Los detalles pueden ser:
class=“Nombre de la clase del JavaBean”
<jsp:useBean id=“nombre” scope=“nombreámbito” detalles />
19
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:setProperty>
Esta marca se utiliza junto con la marca useBean para 
asignar valor a las propiedades del Bean
En el método _jspService() del servlet generado se 
invoca al método set de la propiedad deseada.
Sintaxis
<jsp:setProperty name =“identificador del Bean” detalles/>
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:setProperty>
Sintaxis. Donde detalles puede ser:
property=“*” (se cogen como propiedades y valores todos 
los parámetros del objeto implícito request)
property=“Nombre” (se coge un parámetro con el mismo 
nombre del objeto implícito request)
property=“Nombre” param=“NombreParámetro” (si se 
desean nombres distintos)
property=“Nombre” value=“valor parámetro” (se asignan 
propiedades arbitrarias con valores concretos)
20
Introducción a JavaServer Pages
Elementos JSP. 
Acción <jsp:getProperty>
Se utiliza para obtener el valor de las propiedades de un 
Bean.
Dentro del método _jspService() del servlet generado se 
accede al valor de una propiedad, lo convierte a string y 
lo imprime en la salida del cliente (objeto out).
Sintaxis
<jsp:getProperty> name=“nombre del Bean”
property=“Nombre de la propiedad” />
Introducción a JavaServer Pages
Elementos JSP. 
Objetos Implícitos.
Los objetos implícitos, son aquellos que están accesibles 
al motor JSP, por lo que el desarrollador de páginas JSP 
puede utilizarlos cuando los necesite sin más que 
invocarlos adecuadamente.
Son objetos creador por el motor que no necesitan ser 
declarados para ser usados, sino que se pueden invocar 
directamente.
Modelan mucha de la funcionalidad básica de cualquier 
aplicación web: tratamiento de sesiones, procesamiento 
de un formulario, etc.
21
Introducción a JavaServer Pages
Elementos JSP. 
Objetos Implícitos.
out : Proporciona métodos para generar las salidas dentro de scriplets.
request: Para obtener los parámetros que vienen de un formulario.
response: Ligado con out, ayuda a generar la salida HTML.
pageContext: API para acceder a objetos relacionados con los servlets. 
session: Se utiliza para mantener información sobre el cliente que ha 
establecido conexión con el servidor a la largo de un cierto tiempo.
application: Proporciona un medio de comunicación entre páginas JSP 
y el servidor sin intervención del objeto request.
page: Representa la instancia del servlet generado por la página JSP
exception: Solamente está disponible si la excepción no ha sido 
capturada y se ha utilizado el atributo ERRORPAGE de la directiva page
de la página JSP
config: Acceso a los parámetros de inicialización del servlet o del motor 
JSP.
Introducción a JavaServer Pages
Elementos JSP. 
Ejemplo de uso de Objetos Implícitos.
Aplicación que pide el nombre al usuario y le devuelve un 
saludo. Se utiliza un fichero HTML con un formulario que 
pide los datos al cliente y se los pasa a una página JSP 
que muestra el saludo con éstos datos. El paso de los 
datos del formulario al JSP se realiza a través de un 
objeto especial: objeto request.
22
Introducción a JavaServer Pages
Elementos JSP. 
Ejemplo de uso de Objetos Implícitos.
<HTML><head>
<title> Formulario de petición de nombre
</title></head>
<body>
<h1> Formulario de petición de nombre </h1>
<!-- Se envía el formulario al JSP “saludo.jsp” -->
<form method="post" action="saludo.jsp">
<p> Por favor, introduce tu nombre:
<input type="text" name="nombre">
</p>
<p> <input type="submit" value="enviar
información"> </form> </body>
</HTML>
Introducción a JavaServer Pages
Elementos JSP. 
Ejemplo de uso de Objetos Implícitos.
<HTML> <head> <title> Saludo al cliente </title>
</head> <body>
<h1> Saludo al cliente</h1>
<%-- Los parámetros que le pasa el cliente en la
petición se obtienen del objeto implícito
request --%>
<% 
String nombre = request.getParameter(”nombre");
out.println(”Es un placer conocerte, “ + nombre);
%>
<%-- Al evaluarse el código hay que escribir
explícitamente en la salida (objeto implícito
out) --%> </body> </HTML>
23
Introducción a JavaServer Pages
Ciclo de Vida.
Cuando se llama por primera vez al fichero JSP, se 
genera un servlet con las siguientes operaciones
jspInit()
Inicializa el servlet generado
Sólo se llama en la primera petición
jspService(petición,respuesta)
Maneja las peticiones. Se invoca en cada petición, incluso 
en la primera
jspDestroy()
Invocada por el motor para eliminar el servlet
Introducción a JavaServer Pages
Acceso a Datos.
JDBC, Java Database Connectivity, es una API de Java 
que se usa para acceder a Bases de Datos, tanto locales 
como remotas.
Existe una independencia del SGBDR: Si cambia el gestor 
se minimizan los cambios en la aplicación. Lenguaje de 
consulta SQL.
El API JDBC (java.sql) está formada por cinco grupos:
Gestión de Drivers.
API para manejadores JDBC.
Excepciones.
API (trabajar con los datos)
Utilidades.
24
Introducción a JavaServer Pages
Acceso a Datos. Arquitectura.
Introducción a JavaServer Pages
Acceso a Datos. 
Arquitectura JDBC Tipo 
I
Puente Jdbc-Odbc
Permite conectar con 
cualquier SGBR que 
soporte ODBC.
Es muy lento
25
Introducción a JavaServer Pages
Acceso a Datos. 
Arquitectura JDBC Tipo II
Se conecta directamente 
con un SGBD, siendo 
especifico de cada SGBD.
Es más rápido. 
Un manejador diferente 
para cada sistema gestor.
Introducción a JavaServer Pages
Acceso a Datos. Arquitectura 
JDBC Tipo III
El manejador JDBC traduce 
las peticiones JDBC a un 
protocolo independiente del 
SGBDR.
Se requiere un middleware
como traductor.
Mayor coste.
Menor Velocidad.
26
Introducción a JavaServer Pages
Acceso a Datos. 
Arquitectura JDBC Tipo IV
Utiliza el protocolo 
propietario de red del 
SGBDR para hablar con él 
de forma remota.
No necesitamos 
middleware. 
Mayor Velocidad.
Introducción a JavaServer Pages
Acceso a Datos.
Cuando queremos trabajar con BBDD, 
debemos tener presente una serie de pasos 
“básicos”:
Abrir la conexión a la base de datos.
Ejecutar consultas contra la base de datos.
Procesar los resultados.
Cerrar la conexión a la base de datos.
27
Introducción a JavaServer Pages
Acceso a Datos.
Abrir la conexión a la base de datos.
Ejecutar consultas contra la base de datos
Connection
conexion = 
DriverManager.getConnection("jdbc:odbc:Nombre_ODBC",
"usuario","password");
Statement Comando = conexion.createStatement();
ResultSet rs = Comando.executeQuery("select dni, nombre, 
apellidos, edad from agenda");
Introducción a JavaServer Pages
Acceso a Datos.
Procesar los resultados.
Cerrar conexión.
while (rs.next()) {
out.println("DNI ->"+ rs.getString("dni"));
out.println("NOMBRE ->"+ rs.getString("nombre"));
out.println("APELLIDOS ->"+ rs.getString("apellidos"));
out.println("EDAD ->"+ rs.getInt("edad"));
}
rs.close();
Comando.close();
conexion.close();
28
Introducción a JavaServer Pages
Acceso a Datos.Conector JDBC-ODBC.
Cómo Crear un Conector vía JDBC-ODBC.
El puente JDBC-ODBC no necesita pasos específicos 
para su instalación, pero ODBC si. 
Por ejemplo si asumimos que estamos utilizando un 
máquina con S.O. Windows necesitaremos configurar 
nuestra conexión mediante ODBC.
A continuación se presentan las pantallas necesarias 
para crear un conector.
Introducción a JavaServer Pages
Acceso a Datos. Conector JDBC-ODBC.
29
Introducción a JavaServer Pages
Acceso a Datos. Conector JDBC-ODBC.
Introducción a JavaServer Pages
Acceso a Datos. Conector JDBC-ODBC.
30
Introducción a JavaServer Pages
Acceso a Datos. Conector JDBC-ODBC.
Introducción a JavaServer Pages
Acceso a Datos. Conector JDBC-ODBC.
31
Introducción a JavaServer Pages
Gestión de sesiones.
El protocolo HTTP es un protocolo sin estado. No posee 
funcionalidad interna para seguir datos de una solicitud a 
otra.
Aunque esto puede proporcionar algunos beneficios en 
cuanto al rendimiento, también supone un problema en 
alguna aplicaciones web. Por ejemplo, en aplicaciones 
tipo: tienda virtual, acceso a un banco, etc.
La tecnología JSP proporciona acceso a un objeto 
implícito session, para almacenar y recuperar valores de 
una conexión lógica: sesión.
Introducción a JavaServer Pages
Gestión de sesiones.
El objeto session es único para cada usuario concreto. La 
primera vez que un usuario solicita una página jsp, se crea 
la sesión, esta sesión está identificada por un ID de 
sesión único y asociado a ella. 
Cada vez que el usuario solicita una página jsp, el ID de la 
sesión se transfiere con la solicitud y, por tanto, se 
asocia a la sesión adecuada con el usuario.
El ID es transferido entre el servlet (transformación página 
JSP) y el usuario a través de una cookie HTTP.
32
Introducción a JavaServer Pages
Gestión de sesiones. Funcionamiento.
Navegador
JSP #1
Sesión
JSP #2
Primera 
Solicitud
Devuelve el ID de sesión
dentro de una cookie
Crea el objeto de sesión en
un sistema de archivos
(o memoria) de un servidor
de aplicación
Obtiene el objeto sesión
basado en el ID de sesión
que se transfirió
Transfiere la Cookie
con el ID de sesión
Introducción a JavaServer Pages
Gestión de sesiones.
El objeto session es análogo a la clase 
HttpSession de la tecnología servlets.
Una vez obtenida la sesión, normalmente 
mediante el objeto implícito, es posible:
Escribir,
Obtener,
y Eliminar atributos del objeto session.
33
Introducción a JavaServer Pages
Gestión de sesiones.
Por ejemplo, para escribir o dar de alta un atributo 
(variable de sesión) en la sesión, deberíamos 
utilizar el método setAttribute de la siguiente 
manera:
<% session.setAttribute(“nombre”,”Roberto”); %>
Nombre Variable Valor Variable
Introducción a JavaServer Pages
Gestión de sesiones.
Para recuperar este valor se utiliza el método 
getAttribute.
Observar cómo se asigna el resultado de este método a 
String. Esto es necesario dado que la sesión, sólo 
almacena un objeto y devuelve un objeto, sin tener en 
cuenta el tipo de objeto que esté almacenado. Tenemos 
que realizar una conversión.
<%String SNombre=(String) session.getAttribute(“nombre”); %>
34
Introducción a JavaServer Pages
Gestión de sesiones.
Para eliminar un atributo se debe utilizar el 
método removeAttribute.
<% session.removeAttribute(“nombre”); %>
Introducción a JavaServer Pages
Gestión de sesiones. Ejemplo.
Como ejemplo, se presentará un sencillo formulario que 
acepta el nombre de una persona. 
Enviaremos este formulario a una página JSP que 
guardará el nombre en la sesión y presentará al usuario 
mediante dos sencillos hipervínculos a otras páginas JSP. 
Una vez que el usuario vaya a una de dichas páginas, se 
recuperará el nombre de la sesión y aparecerá un 
mensaje personalizado.
35
Introducción a JavaServer Pages
Gestión de sesiones. Formulario.
<HTML><head>
<title> Ejemplo de Sesión </title></head>
<body>
<h1> Ejemplo de sesión </h1>
<form method="post" action=“sesionEje.jsp">
Por favor, introduce tu nombre:
<input type="text" name="nombre">
<input type="submit" value="enviar información"> </form> 
</body>
</HTML>
Introducción a JavaServer Pages
Gestión de sesiones. sesionEje.jsp
<HTML>
<head> <title> Ejemplo de Sesión </title> </head>
<body>
<%
String val = request.getParameter(“nombre”);
if (val != null) session.setAttribute(“Nombre”,val);
%>
<center> <h1>Ejemplo de Sesión</h1> 
Donde quieres ir!!!
<a href=“sesionEje1.jsp”>Ir a Página 1</a>
<a href=“sesionEje2.jsp”>Ir a Página 2</a>
</body>
</HTML>
36
Introducción a JavaServer Pages
Gestión de sesiones. sesionEje1.jsp
<HTML><head> <title> Ejemplo de Sesión </title> </head> 
<body>
<center> <h1>Ejemplo de Sesión</h1> 
Hola, <=%session.getAttribute(“Nombre”)%>
Bienvenido a la página 1
</body>
</HTML>
Introducción a JavaServer Pages
Gestión de sesiones. sesionEje2.jsp
<HTML><head> <title> Ejemplo de Sesión </title> </head> 
<body>
<center> <h1>Ejemplo de Sesión</h1> 
Hola, <=%session.getAttribute(“Nombre”)%>
Bienvenido a la página 2
</body>
</HTML>
37
Introducción a JavaServer Pages
Uso de JavaBean.
Un JavaBean es una clase Java que sigue un conjunto de 
guías de estilo para permitir la creación de componentes 
Java distribuidos.
La tecnología JSP soporta el uso de JavaBeans como 
mecanismo de acceder a objetos remotos.
El objetivo básico del uso de los JavaBean, es reducir el 
código Java que hay en las páginas JSP.
Introducción a JavaServer Pages
Uso de JavaBean.
En el contexto de JSP, un JavaBean será una clase que 
obedece a las siguientes guías de estilo:
Constructor público sin argumentos. Si no se indica ningún 
constructor explícito, dispone del constructor por defecto.
Dispone de propiedades que se pueden consultar con 
métodos getXXX y/o modificar con métodos setXXX
Las propiedades pueden ser controladas por:
public TipoPropiedad getNombrePropiedad()
public void setNombrePropiedad(TipoPropiedad
propiedad)
Una propiedad de tipo boolean tiene una convención de 
nombres diferente para el método “getXXX” -> “isXXX”
38
Introducción a JavaServer Pages
Uso de JavaBean.
Las acciones son etiquetas especiales que 
afectan el comportamiento en ejecución de 
cualquier página JSP.
Las acciones estándares son las soportadas por 
todos los contenedores web. Para manejar 
JavaBeans se utilizan las siguientes:
<jsp: useBean>
<jsp: setProperty>
<jsp: getProperty>
Introducción a JavaServer Pages
Uso de JavaBean. La acción useBean. 
<jsp:useBean id=“name”
scope=“page”|”request”|”session”|”application”
class=“Nombre de la Clase” />
39
Introducción a JavaServer Pages
Uso de JavaBean. 
Acciones setProperty y getProperty.
Esta acciones estándar de JSP permiten 
obtener y modificar los valores de los atributos 
definidos en el JavaBean.
A continuación se presenta un ejemplo de 
utilización de todas las acciones relacionadas 
con el uso de un JavaBean.
Introducción a JavaServer Pages
Uso de JavaBean. Ejemplo: MensajeBean
package ejemplos;
public class MensajeBean
{
private String mensaje = "Valor no establecido";
public String getMensaje() 
{
return (mensaje);
}
public void setMensaje(String mensaje)
{
this.mensaje = mensaje;
}
}
40
Introducción a JavaServer Pages
Uso de JavaBean. Ejemplo: Bean.jsp
<html>
<head> <title>Ejemplo de beans </title></head>
<body> 
<center><h1>Ejemplo de JavaBeans</h1></center>
<jsp:useBean id="mensaje" class="ejemplos.MensajeBean"/>
<% mensaje.setMensaje("Hola mundo desde un Bean"); %>
<center> <h1>Mensaje: <i> <%=mensaje.getMensaje(); %>
<% mensaje.setMensaje("Hola otra vez desde el Bean"); %>
</i>Mensaje: <i> <%=mensaje.getMensaje(); %>
</i></h1></center> 
</body>
</html>
Introducción a JavaServer Pages
Uso de JavaBean. Ejemplo: Bean.jsp
<html> <head> <title>Ejemplo de beans </title></head>
<body> 
<center><h1>Ejemplo de JavaBeans</h1></center>
<jsp:useBean id="mensaje" class="ejemplos.MensajeBean"/>
<% mensaje.setMensaje("Hola mundo desde un Bean"); %>
<center> <h1>Mensaje: <i> <%=mensaje.getMensaje(); %>
<% mensaje.setMensaje("Hola otra vez desde el Bean"); %>
</i>Mensaje: <i> <%=mensaje.getMensaje(); %>
</i></h1></center> 
</body>
</html>
41
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
En JSP, las acciones eran elementos que pueden 
utilizarse para manejar objetos Java.
Existen acciones estándar, definidas por la especificación 
JavaServer Pages, o acciones personalizadas, creadas 
por el programador.
Una acción personalizada se invoca en una página JSP 
mediante una etiqueta personalizada.
Una librería de etiquetas es una colección de etiquetas 
personalizadas.
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Una etiqueta JSP es una forma simple de 
abstracción del código Java fuera de la página 
JSP. 
Posibilitando que no haya código Java en una 
página JSP.
42
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Reducen la presencia de Scriptlets en las páginas JSP
Las etiquetas personalizadas tienen una sintaxis muy 
simple, mediante la notación XML.
Mejoran la calidad de los desarrollos.
Encapsular funciones simples o complejas que facilita la 
legibilidad de las páginas JSP.
Facilitan la reutilización de código.
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Para que una página JSP pueda utilizar una 
librería de etiquetas, ésta debe estar compuesta 
por dos tipos de componentes:
El fichero descriptor de la librería de etiquetas.
Los controladores o manejadores de las etiquetas.
43
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
El fichero descriptor de la librería de etiquetas, o fichero 
Tag Library Descriptor (TDL), es un documento XML 
que describe la librería. 
Contiene información acerca de la librería en su conjunto y 
acerca de cada una de las etiquetas que la componen en 
particular.
Este fichero es utilizado por el contenedor de JSP´s a la 
hora de validar la utilización de las etiquetas de la librería.
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
El fichero TDL contiene información de cabecera previa a los 
elementos utilizados para describir la librería. Entre esta 
información se encuentra:
<taglib> La librería de etiquetas en sí misma
<tlibversion> Versión de la librería de etiquetas
<jspversion> Versión de la especificación JSP soportada por la 
librería de etiquetas. Por defecto es 1.2
<shortname> Nombre corto que suele utilizarse como prefijo en la 
directiva taglib
<uri> Opcional que identifica la librería de etiquetas.
<info> Descripción opcional de la librería de etiquetas.
44
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Tras la cabecera se encuentra la descripción de 
cada una de las etiquetas que la integran. 
De los elementos que describen a estas 
etiquetas, solamente uno de ellos es obligatorio: 
<tagclass>
A continuación se muestra un ejemplo de fichero 
TLD, donde podemos ver lo comentado hasta 
ahora.
Introducción a JavaServer Pages
Uso de Librería de Etiquetas. Ejemplo de fichero TLD.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.2</jspversion>
<shortname>ejemplo</shortname>
<info> Ejemplo de Librería de Etiquetas
</info>
<!-- Etiqueta simple de saludo -->
<tag>
<name>hola</name>
<tagclass>ejemplos.HolaTag</tagclass>
<bodycontent>empty</bodycontent>
<info>Etiqueta simple de saludo</info>
<!-- nombre personalizado -->
<attribute>
<name>nombre</name>
</attribute>
</tag> 
</taglib
45
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Para utilizar la librería de etiquetas descrita en el archivo 
TDL en una página JSP, es necesario importar esa librería 
a través de la directiva taglib, cuya sintaxis es la 
siguiente:
Donde URI es la dirección que indica la localización del 
fichero TDL y prefijo es el identificador con el que se 
reconocen las etiquetas pertenecientes a esa librería en la 
página JSP.
<%@ taglib uri=“uri” prefix=“prefijo”%>
Introducción a JavaServer Pages
Uso de Librería de Etiquetas.
Cada etiqueta personalizada integrante de una librería de 
etiquetas debe estar definida en una clase controladora.
Cuando el motor JSP se encuentra con el elemento de 
comienzo de una etiqueta personalizada, inicializa el 
controlador de la etiqueta y luego invoca al método 
doStartTag() de esa etiqueta.
Cuando se encuentra la etiqueta de cierre, se invoca al 
método doEndTag() de la etiqueta personalizada.
46
Laboratorio de Informática 
Distribuida
Sesión III. JavaServer Pages
Apuntes/Sesion4_Aplica_MVC.pdf
 
 
 
 
 
 
 
 
 
Ejemplo de Aplicación Web con la implementación del patrón 
de diseño MVC (MODELO VISTA CONTROLADOR) 
 
 
 
Índice 
 
1. Página HTML. (Inicio Aplicación) 
2. Servlet – Controlador. 
3. Clase Acceso a Datos. – Modelo 
4. Página JSP – Vista. 
5. Configuración Servidor: Fichero web.xml 
1. Página HTML. (Inicio Aplicación) ACB.html 
 
 
<html> 
<head> 
<title>Votación mejor jugador liga ACB</title> 
</head> 
<body> 
<center><H1>Votación al mejor jugador de la liga ACB 2005</H1></center><hr> 
<form action="/Acb/Acb" method="POST"> 
 
<p align="left">Nombre del Visitante: <input type="text" size="20" 
name="txtNombre"> 
eMail: <input type="text" size="20" name="txtMail"></p> 
ESTUDIANTES: 
<p align="left"><input type="radio" name="R1" value="Azofra">Azofra, Nacho</p> 
<p align="left"><input type="radio" name="R1" value="Loncar">Loncar, Nikola</p> 
<p align="left"><input type="radio" name="R1" value="Jimenez">Jiménez, 
Carlos</p> 
REAL MADRID: 
<p align="left"><input type="radio" name="R1" value="Bennet">Bennet, Elmer</p> 
<p align="left"><input type="radio" name="R1" value="Herreros">Herreros, 
Alberto</p> 
<p align="left"><input type="radio" name="R1" value="Reyes">Reyes, Felipe</p> 
<p align="left"><input type="radio" name="R1" value="Otros">Otro 
<input type="text" size="20" name="txtOtros"></p> 
<p align="left"> 
<input type="submit" name="B1" value="Votar"> 
<input type="reset" name="B2" value="Reset"></p> 
</form> 
</body> 
</html> 
2. Servlet – Controlador. (Acb.java) 
 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.util.*; 
import java.sql.*; 
 
public class Acb extends HttpServlet { 
private ModeloDatos bd; 
 
public void init(ServletConfig cfg) throws ServletException 
 { 
bd=new ModeloDatos(); 
bd.abrirConexion(); 
} 
 
public void service(HttpServletRequest req, 
HttpServletResponse res) throws ServletException, IOException 
{ 
 
 HttpSession s = req.getSession(true); 
 
String nombreP=(String)req.getParameter("txtNombre"); 
 String nombre=(String)req.getParameter("R1"); 
 
 if (nombre.equals("Otros")) nombre=(String)req.getParameter("txtOtros"); 
 
if (bd.existeJugador(nombre)){ 
 bd.actualizarJugador(nombre); 
 } 
 else 
 bd.insertarJugador(nombre); 
 s.putValue("nombreCliente", nombreP); 
 // Llamada a la página jsp que nos da las gracias 
 res.sendRedirect(res.encodeRedirectURL("/Acb/TablaVotos.jsp")); 
} 
 
public void destroy() 
{ 
bd.cerrarConexion(); 
super.destroy(); 
} 
} 
 
3. Clase Acceso a Datos. – Modelo. 
(ModeloDatos.java) 
 
import java.util.*; 
import java.sql.*;
public class ModeloDatos { 
 
private Connection con; 
private Statement set; 
private ResultSet rs; 
 
public void abrirConexion() { 
 String sURL="jdbc:odbc:mvc"; 
try 
{ 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
con = DriverManager.getConnection(sURL,"",""); 
System.out.println("Se ha conectado"); 
} 
catch(Exception e){ 
System.out.println("No se ha conectado");} 
} 
 
public boolean existeJugador(String nombre) { 
boolean existe = false; 
String cad; 
try 
{ 
set = con.createStatement(); 
rs = set.executeQuery("SELECT * FROM Jugadores"); 
while (rs.next()) 
{ 
cad = rs.getString("Nombre"); 
cad = cad.trim(); 
if (cad.compareTo(nombre.trim())==0) 
existe = true; 
} 
rs.close(); 
set.close(); 
}catch(Exception e){ 
System.out.println("No lee de la tabla"); 
} 
return(existe); 
} 
 
 
 
 
public void actualizarJugador(String nombre) { 
try 
{ 
set = con.createStatement(); 
set.executeUpdate( 
"UPDATE Jugadores SET votos=votos+1 WHERE nombre " 
+ " LIKE '%" + nombre + "%'"); 
rs.close(); 
set.close(); 
}catch(Exception e){ 
System.out.println("No modifica la tabla"); 
} 
} 
 
public void insertarJugador(String nombre) { 
try { 
set = con.createStatement(); 
set.executeUpdate("INSERT INTO Jugadores " 
+ " (nombre,votos) VALUES ('" + nombre + "',1)"); 
rs.close(); 
set.close(); 
}catch(Exception e){ 
System.out.println("No inserta en la tabla"); 
} 
} 
 
 
public void cerrarConexion() { 
try { 
con.close(); 
} catch (Exception e){} 
} 
} 
4. Página JSP – Vista. 
 
 
 
 
<html> 
<head><title>Votación mejor jugador liga ACB</title></head> 
<body> 
<font size=10> 
<h1>Votación al mejor jugador de la liga ACB 2005</h1> 
<hr> 
 
<% 
String nombreP =(String) session.getValue("nombreCliente"); 
%> 
 
<br><h3>Muchas gracias <%=nombreP%> por su voto</h3> 
 
</font> 
<br> 
 
<br> <a href="/Acb/Acb.html"> Ir al comienzo</a> 
 
</body> 
</html> 
 
 
 
 
 
 
5. Configuración Servidor: Fichero web.xml 
 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app> 
 <description> 
 Curso Zaragoza. 
 </description> 
 <display-name>Ejemplos</display-name> 
 <servlet> 
 <servlet-name>Acb</servlet-name> 
 <servlet-class> Acb</servlet-class> 
 </servlet> 
 <servlet-mapping> 
 <servlet-name> Acb</servlet-name> 
 <url-pattern>/Acb</url-pattern> 
 </servlet-mapping> 
</web-app> 
 
Apuntes/Sesion4_MVC.pdf
1
Laboratorio de Informática 
Distribuida
Sesión IV. Patrón de Diseño Modelo-
Vista-Controlador.
Roberto Barchino Plata
Patrón de diseño Modelo-Vista-Controlador
Introducción
A la hora de describir las arquitecturas que se 
pueden utilizar en el desarrollo de aplicaciones 
web, creadas con intervención de servlets, 
JavaBeans, páginas JSP, Librerías de etiquetas, 
etc. dos son las estructuras más utilizadas:
La primera es el modelo clásico Cliente / Servidor, 
donde todas las peticiones realizadas por el cliente 
llegan directamente a la página JSP o al servlet.
2
Patrón de diseño Modelo-Vista-Controlador
Introducción
La segunda estructura es la que utiliza n-capas, 
donde la aplicación se dividen en unidades 
funcionales. Cada capa, sabe perfectamente que 
hacer en cada momento. Una forma de 
implementar esta arquitectura es el modelo-vista-
controlador.
Patrón de diseño Modelo-Vista-Controlador
¿Qué es el patrón Modelo-Vista-Controlador?
Un Patrón es una solución eficiente sofware de 
problemas habituales en el diseño de 
aplicaciones informáticas.
Existen distintos patrones de diseño, cada una 
ofrecerá una solución para un determinado 
problema. IDEA: Conocer que existen y saber 
utilizarlos de manera adecuada. 
3
Patrón de diseño Modelo-Vista-Controlador
¿Qué es el patrón Modelo-Vista-Controlador?
El principal objetivo, por tanto, del patrón de 
diseño Modelo Vista Controlador (MVC) es aislar-
separar los datos de la aplicación, como el 
estado (modelo) de la misma, del mecanismo 
utilizado para representar (vista) dicho estado.
Así, como para modularizar esta vista y modelar 
la transición entre estados del modelo 
(controlador). 
En el desarrollo de aplicaciones web se utiliza 
mucho el patrón MVC, por ejemplo los structs de 
jakarta.
Patrón de diseño Modelo-Vista-Controlador
¿Qué es el patrón Modelo-Vista-Controlador?
Las aplicaciones MVC se dividen, por tanto, en 
tres grandes categorías funcionales:
Vista: La representación de los datos a visualizar por 
parte del cliente o usuario del sistema.
Controlador: el que atenderá las peticiones y tomará
las decisiones adecuadas de la aplicación.
Modelo: la lógica de negocio o servicio y los datos 
asociados con la aplicación.
4
Patrón de diseño Modelo-Vista-Controlador
Arquitectura MVC: 
Laboratorio de Informática 
Distribuida
Sesión IV. Patrón de Diseño Modelo-
Vista-Controlador.
Roberto Barchino Plata

Otros materiales