SlideShare a Scribd company logo
1 of 28
Download to read offline
Eric Gustavo Coronel Castillo
gcoronelc.blogspot.com
gcoronelc@Gmail.com
JAVA WEB DEVELOPER
2
TEMA: Servlets
Índice
• Objetivo
• ¿Qué es un Servlet?
• Arquitectura del Paquete Servlet
• Proyecto 01
• Interacción con los Clientes
• Programación de Servlets
• Proyecto 02
• Interacción con un Servlet
• Servlets con Múltiples Mapeos
• Proyecto 03
3
Objetivo
• Entender el funcionamiento de los servlets.
• Aplicar servlets en el desarrollo de aplicaciones web.
4
¿Qué es un Servlet?
• Los Servlets son módulos que extienden los servidores orientados a
requerimiento/respuesta, como los servidores web compatibles con Java.
• Por ejemplo, un servlet podría ser responsable de tomar los datos de un
formulario de entrada de pedidos en HTML y aplicarle la lógica de
negocios utilizada para actualizar la base de datos de pedidos de una
compañía.
5
Arquitectura del Paquete Servlet
6
Proyecto 01
7
<servlet>
<servlet-name>HolaMundo</servlet-name>
<servlet-class>project1.HolaMundo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HolaMundo</servlet-name>
<url-pattern>/holamundo</url-pattern>
</servlet-mapping>
@WebServlet(
name="HolaMundo",
urlPatterns={"/HolaMundo"}
)
public class HolaMundo extends HttpServlet {
}
Servlet 3.x
Servlet 2.x
Interacción con los Clientes
• Objetos HttpServletRequest y HttpServletResponse.
• Requerimientos GET y POST.
• Método service( … ).
• Métodos doGet( … ) y doPost().
8
Programación de Servlets
9
Programación de Servlets
• void init(ServletConfig config): es invocado una sola vez, por el
contenedor del servidor JEE compatible donde se hospeda el servlet y se
emplea para inicializarlo. Se ejecuta cuando se realiza el primer
requerimiento del servlet.
10
Programación de Servlets
• void destroy(): es invocado por el contenedor antes de que el
servlet se descargue de memoria y deje de prestar servicio.
11
Programación de Servlets
• void service(ServletRequest request, ServletResponse reponse): es invocado por el contenedor
para procesar el requerimiento, una vez que el servlet se ha inicializado. Es el llamado método de
servicio. Sus argumentos son instancias de las interfaces javax.servlet.ServletRequest y
javax.servlet.ServletResponse que modelan, respectivamente, el requerimiento del cliente y la
respuesta del servlet.
12
Programación de Servlets
13
Esquema
de
Funcionamiento
Programación de Servlets
• Esquema de Funcionamiento
14
• Finalizada la inicialización, el servlet ya está disponible para procesar los requerimientos y generar una
respuesta a los mismos, con el método service(ServletRequest request, ServletResponse
response).
• Una vez procesado el primer requerimiento, el resto de requerimientos se gestiona mediante diferentes
hilos de ejecución, tantos como requerimientos existan, tal como se puede apreciar en la figura y sin
que se ejecute más el método init(..).
Proyecto 02
15
Desarrolle un proyecto que permita calcular el importe de una venta.
Los datos necesarios son:
– Precio de producto (Ya incluye el impuesto general a la ventas)
– Cantidad
El programa debe calcular:
– El importe de la venta
– El impuesto general a la ventas
– El total a pagar
Recurso Nombre Descripción
Página HTML index.html En esta pagina HTML debes desarrollar el
formulario para ingresar los datos.
Servlet Venta.java Servlet que recibe los datos de la venta, realiza
los cálculos respectivos y muestra el resultado.
Interacción con un Servlet
• Consideraciones Previas
– Para hacer referencia a un servlet debemos tener en cuenta como es mapeado en el
descriptor de despliegue (archivo web.xml) o en el mismo servlet utilizando la
anotación @WebServlet.
<servlet>
<servlet-name>Empleado</servlet-name>
<servlet-class>servlets.Empleado</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Empleado</servlet-name>
<url-pattern>/Empleado</url-pattern>
</servlet-mapping>
– La etiqueta url-pattern representa el alias con que debemos hacer referencia al
servlet, normalmente se utiliza el mismo nombre de la clase pero no tiene que ser así.
16
Interacción con un Servlet
• Escribiendo la URL del Servlet en un Navegador Web
– Los servlets pueden ser llamados directamente escribiendo su URL
en el campo dirección del navegador Web.
http://localhost:8080/VentaApp/ConsultaProducto?cod=P00001
17
Interacción con un Servlet
• Llamar a un Servlet desde dentro de una página HTML
– Si el servlet está en otro servidor, debemos utilizar la URL completa.
<form method="post"
action="http://localhost:8080/VentaApp/ConsultaProducto">
. . .
. . .
</form>
<a href="http://localhost:8080/VentaApp/ConsultaProducto?cod=P00001">
Consultar
</a>
18
Interacción con un Servlet
• Llamar a un Servlet desde dentro de una página HTML
– Si el servlet está en la misma aplicación sólo debemos hacer referencia
al alias del servlet.
<form method="post" action="ConsultaProducto">
. . .
. . .
</form>
<a href="ConsultaProducto?cod=P00001">
Consultar
</a>
19
Interacción con un Servlet
• Llamada a un Servlet desde otro Servlet
– Tenemos dos posibilidades, ejecutar un sendRedirect() o un forward(), que tienen el mismo
objetivo, pero que funcionan diferente.
– A continuación tenemos sus diferencias:
• forward() se ejecuta completamente en el servidor. Mientras que sendRedirect() conlleva a
responder con un mensaje HTTP y esperar a que el navegador cliente acuda a la URL especificada.
Es por ello que forward() es más rápido. Y es por ello que sendRedirect() modifica la URL del
navegador.
• forward() permite llamar a un serlvet o página JSP. Por el contrario en sendRedirect() se indica una
URL que puede ser incluso una URL externa como "http://gcoronelc.blogspot.com" o cualquier otra.
• En un forward() se pasan dos argumentos: request y response. Esto permite pasar objetos en el
scope request. Mientras que en sendRedirect() los únicos parámetros que se pueden pasar son los
de una URL "...?parametro1=valor1....". Obviamente también se podría usar otro scope, pero no el
scope request.
20
Interacción con un Servlet
• Llamada a un Servlet desde otro Servlet
– Supongamos que tenemos dos servlets de nombre Datos y Respuesta.
A continuación tenemos dos ejemplos, uno utilizando sendRedirect() y
otro utilizando forward().
• Desde el servlet Datos se realiza un sendRedirect() al servlet Respuesta:
response.sendRedirect("Respuesta");
• Desde el servlet Datos se realiza un forward() al servlet Respuesta:
RequestDispatcher rd = request.getRequestDispatcher("Respuesta");
rd.forward(request, response);
21
Servlets con Múltiples Mapeos
22
Servlets con Múltiples Mapeos
• Servlet 2.x
<servlet>
<servlet-name>Matematica</servlet-name>
<servlet-class>servlets.MateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Matematica</servlet-name>
<url-pattern>/Sumar</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Matematica</servlet-name>
<url-pattern>/Multiplicar</url-pattern>
</servlet-mapping>
• Servlet 3.x
@WebServlet(name = "Matematica", urlPatterns = {"/Sumar", "/Multiplicar"})
public class Cuenta extends HttpServlet {
}
23
Servlets con Múltiples Mapeos
• Programación
– Desde ConsultarMovimientos.HTML
<form method="post" action="Sumar">
. . .
. . .
</form>
24
Servlets con Múltiples Mapeos
• Programación
– Desde ConsultarEstado.HTML
<form method="post" action="Multiplicar">
. . .
. . .
</form>
25
Servlets con Múltiples Mapeos
• Programación
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String urlServlet = request.getServletPath();
if (urlServlet.equals("/Sumar")) {
sumar( request, response );
} else if (urlServlet.equals("/Multiplicar")) {
multiplicar( request, response );
}
}
26
Proyecto 03
Desarrollar una calculadora básica que permita las 5
operaciones:
– Sumar
– Restar
– Multiplicar
– Dividir
– Resto de una división
27
www.desarrollasoftware.com
FUNDAMENTOS DE
PROGRAMACIÓN CON JAVA
Inicia tu aprendizaje, utilizando
las mejores prácticas de
programación
CURSO PROFESIONAL DE
JAVA ORIENTADA A OBJETOS
Aprende programación en capas,
patrones y buenas prácticas
PROGRAMACIÓN DE BASE DE
DATOS ORACLE CON PL/SQL
Aprende a obtener el mejor
rendimiento de tú base de datos
PROGRAMACIÓN DE BASE DE
DATOS ORACLE CON JDBC
Aprende a programar
correctamente con JDBC
gcoronelc.github.io
youtube.com/DesarrollaSoftware
facebook.com/groups/desarrollasoftware
Gustavo Coronel

More Related Content

Similar to Java Web: Servlets

Similar to Java Web: Servlets (20)

Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
 
Servicios web
Servicios webServicios web
Servicios web
 
J sockets
J socketsJ sockets
J sockets
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
Taller desarrollo web
Taller  desarrollo webTaller  desarrollo web
Taller desarrollo web
 
Servicios web
Servicios webServicios web
Servicios web
 
presenjava.ppt
presenjava.pptpresenjava.ppt
presenjava.ppt
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en Java
 
Clientes servidor
Clientes servidorClientes servidor
Clientes servidor
 
Modelo cliente servidor bcva 45_a
Modelo cliente servidor bcva 45_aModelo cliente servidor bcva 45_a
Modelo cliente servidor bcva 45_a
 
13 servidor http
13 servidor http13 servidor http
13 servidor http
 
Clase servlet - Análisis de Sistemas
Clase servlet - Análisis de SistemasClase servlet - Análisis de Sistemas
Clase servlet - Análisis de Sistemas
 
Arquitectura cliente
Arquitectura cliente Arquitectura cliente
Arquitectura cliente
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
Arquitectura3 capas
Arquitectura3 capasArquitectura3 capas
Arquitectura3 capas
 

More from Eric Gustavo Coronel Castillo

EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEric Gustavo Coronel Castillo
 

More from Eric Gustavo Coronel Castillo (20)

Java Web JSTL
Java Web JSTLJava Web JSTL
Java Web JSTL
 
Model View Controller - MVC
Model View Controller - MVCModel View Controller - MVC
Model View Controller - MVC
 
JavaServer Page
JavaServer PageJavaServer Page
JavaServer Page
 
Java Web - Presentación
Java Web - PresentaciónJava Web - Presentación
Java Web - Presentación
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
JAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONESJAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONES
 
JAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOSJAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOS
 
JAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACESJAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACES
 
JAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIAJAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIA
 
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASEJAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
 
JAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGAJAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGA
 
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASEJAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
 
Cursos Virtuales con Gustavo Coronel en UDEMY
Cursos Virtuales con Gustavo Coronel en UDEMYCursos Virtuales con Gustavo Coronel en UDEMY
Cursos Virtuales con Gustavo Coronel en UDEMY
 
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓNJAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
 
Buenas practicas para el Desarrollo de Software
Buenas practicas para el Desarrollo de SoftwareBuenas practicas para el Desarrollo de Software
Buenas practicas para el Desarrollo de Software
 
JAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONESJAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONES
 
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
 
ORACLE SQL
ORACLE SQLORACLE SQL
ORACLE SQL
 
CONSULTAS BASICAS
CONSULTAS BASICASCONSULTAS BASICAS
CONSULTAS BASICAS
 

Java Web: Servlets

  • 1. Eric Gustavo Coronel Castillo gcoronelc.blogspot.com gcoronelc@Gmail.com JAVA WEB DEVELOPER
  • 3. Índice • Objetivo • ¿Qué es un Servlet? • Arquitectura del Paquete Servlet • Proyecto 01 • Interacción con los Clientes • Programación de Servlets • Proyecto 02 • Interacción con un Servlet • Servlets con Múltiples Mapeos • Proyecto 03 3
  • 4. Objetivo • Entender el funcionamiento de los servlets. • Aplicar servlets en el desarrollo de aplicaciones web. 4
  • 5. ¿Qué es un Servlet? • Los Servlets son módulos que extienden los servidores orientados a requerimiento/respuesta, como los servidores web compatibles con Java. • Por ejemplo, un servlet podría ser responsable de tomar los datos de un formulario de entrada de pedidos en HTML y aplicarle la lógica de negocios utilizada para actualizar la base de datos de pedidos de una compañía. 5
  • 8. Interacción con los Clientes • Objetos HttpServletRequest y HttpServletResponse. • Requerimientos GET y POST. • Método service( … ). • Métodos doGet( … ) y doPost(). 8
  • 10. Programación de Servlets • void init(ServletConfig config): es invocado una sola vez, por el contenedor del servidor JEE compatible donde se hospeda el servlet y se emplea para inicializarlo. Se ejecuta cuando se realiza el primer requerimiento del servlet. 10
  • 11. Programación de Servlets • void destroy(): es invocado por el contenedor antes de que el servlet se descargue de memoria y deje de prestar servicio. 11
  • 12. Programación de Servlets • void service(ServletRequest request, ServletResponse reponse): es invocado por el contenedor para procesar el requerimiento, una vez que el servlet se ha inicializado. Es el llamado método de servicio. Sus argumentos son instancias de las interfaces javax.servlet.ServletRequest y javax.servlet.ServletResponse que modelan, respectivamente, el requerimiento del cliente y la respuesta del servlet. 12
  • 14. Programación de Servlets • Esquema de Funcionamiento 14 • Finalizada la inicialización, el servlet ya está disponible para procesar los requerimientos y generar una respuesta a los mismos, con el método service(ServletRequest request, ServletResponse response). • Una vez procesado el primer requerimiento, el resto de requerimientos se gestiona mediante diferentes hilos de ejecución, tantos como requerimientos existan, tal como se puede apreciar en la figura y sin que se ejecute más el método init(..).
  • 15. Proyecto 02 15 Desarrolle un proyecto que permita calcular el importe de una venta. Los datos necesarios son: – Precio de producto (Ya incluye el impuesto general a la ventas) – Cantidad El programa debe calcular: – El importe de la venta – El impuesto general a la ventas – El total a pagar Recurso Nombre Descripción Página HTML index.html En esta pagina HTML debes desarrollar el formulario para ingresar los datos. Servlet Venta.java Servlet que recibe los datos de la venta, realiza los cálculos respectivos y muestra el resultado.
  • 16. Interacción con un Servlet • Consideraciones Previas – Para hacer referencia a un servlet debemos tener en cuenta como es mapeado en el descriptor de despliegue (archivo web.xml) o en el mismo servlet utilizando la anotación @WebServlet. <servlet> <servlet-name>Empleado</servlet-name> <servlet-class>servlets.Empleado</servlet-class> </servlet> <servlet-mapping> <servlet-name>Empleado</servlet-name> <url-pattern>/Empleado</url-pattern> </servlet-mapping> – La etiqueta url-pattern representa el alias con que debemos hacer referencia al servlet, normalmente se utiliza el mismo nombre de la clase pero no tiene que ser así. 16
  • 17. Interacción con un Servlet • Escribiendo la URL del Servlet en un Navegador Web – Los servlets pueden ser llamados directamente escribiendo su URL en el campo dirección del navegador Web. http://localhost:8080/VentaApp/ConsultaProducto?cod=P00001 17
  • 18. Interacción con un Servlet • Llamar a un Servlet desde dentro de una página HTML – Si el servlet está en otro servidor, debemos utilizar la URL completa. <form method="post" action="http://localhost:8080/VentaApp/ConsultaProducto"> . . . . . . </form> <a href="http://localhost:8080/VentaApp/ConsultaProducto?cod=P00001"> Consultar </a> 18
  • 19. Interacción con un Servlet • Llamar a un Servlet desde dentro de una página HTML – Si el servlet está en la misma aplicación sólo debemos hacer referencia al alias del servlet. <form method="post" action="ConsultaProducto"> . . . . . . </form> <a href="ConsultaProducto?cod=P00001"> Consultar </a> 19
  • 20. Interacción con un Servlet • Llamada a un Servlet desde otro Servlet – Tenemos dos posibilidades, ejecutar un sendRedirect() o un forward(), que tienen el mismo objetivo, pero que funcionan diferente. – A continuación tenemos sus diferencias: • forward() se ejecuta completamente en el servidor. Mientras que sendRedirect() conlleva a responder con un mensaje HTTP y esperar a que el navegador cliente acuda a la URL especificada. Es por ello que forward() es más rápido. Y es por ello que sendRedirect() modifica la URL del navegador. • forward() permite llamar a un serlvet o página JSP. Por el contrario en sendRedirect() se indica una URL que puede ser incluso una URL externa como "http://gcoronelc.blogspot.com" o cualquier otra. • En un forward() se pasan dos argumentos: request y response. Esto permite pasar objetos en el scope request. Mientras que en sendRedirect() los únicos parámetros que se pueden pasar son los de una URL "...?parametro1=valor1....". Obviamente también se podría usar otro scope, pero no el scope request. 20
  • 21. Interacción con un Servlet • Llamada a un Servlet desde otro Servlet – Supongamos que tenemos dos servlets de nombre Datos y Respuesta. A continuación tenemos dos ejemplos, uno utilizando sendRedirect() y otro utilizando forward(). • Desde el servlet Datos se realiza un sendRedirect() al servlet Respuesta: response.sendRedirect("Respuesta"); • Desde el servlet Datos se realiza un forward() al servlet Respuesta: RequestDispatcher rd = request.getRequestDispatcher("Respuesta"); rd.forward(request, response); 21
  • 23. Servlets con Múltiples Mapeos • Servlet 2.x <servlet> <servlet-name>Matematica</servlet-name> <servlet-class>servlets.MateServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Matematica</servlet-name> <url-pattern>/Sumar</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Matematica</servlet-name> <url-pattern>/Multiplicar</url-pattern> </servlet-mapping> • Servlet 3.x @WebServlet(name = "Matematica", urlPatterns = {"/Sumar", "/Multiplicar"}) public class Cuenta extends HttpServlet { } 23
  • 24. Servlets con Múltiples Mapeos • Programación – Desde ConsultarMovimientos.HTML <form method="post" action="Sumar"> . . . . . . </form> 24
  • 25. Servlets con Múltiples Mapeos • Programación – Desde ConsultarEstado.HTML <form method="post" action="Multiplicar"> . . . . . . </form> 25
  • 26. Servlets con Múltiples Mapeos • Programación @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String urlServlet = request.getServletPath(); if (urlServlet.equals("/Sumar")) { sumar( request, response ); } else if (urlServlet.equals("/Multiplicar")) { multiplicar( request, response ); } } 26
  • 27. Proyecto 03 Desarrollar una calculadora básica que permita las 5 operaciones: – Sumar – Restar – Multiplicar – Dividir – Resto de una división 27
  • 28. www.desarrollasoftware.com FUNDAMENTOS DE PROGRAMACIÓN CON JAVA Inicia tu aprendizaje, utilizando las mejores prácticas de programación CURSO PROFESIONAL DE JAVA ORIENTADA A OBJETOS Aprende programación en capas, patrones y buenas prácticas PROGRAMACIÓN DE BASE DE DATOS ORACLE CON PL/SQL Aprende a obtener el mejor rendimiento de tú base de datos PROGRAMACIÓN DE BASE DE DATOS ORACLE CON JDBC Aprende a programar correctamente con JDBC gcoronelc.github.io youtube.com/DesarrollaSoftware facebook.com/groups/desarrollasoftware Gustavo Coronel