sistemas de información 12/13 servlets y jsps (java server...

30
Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages) Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza Raquel Trillo Lado ([email protected])

Upload: others

Post on 28-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

"

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages)

Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza

Raquel Trillo Lado ([email protected])

Page 2: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

Guión   Introducción  Servlets

  Introducción  Clases e interfaces del API  Ejemplos

 Java Server Pages (JSPs)   Introducción  Ejemplos

 Empaquetamiento de una aplicación Web

 Bibliografía

Sistemas de Información Raquel Trillo Lado

Page 3: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Aplicación Web: Es una aplicación que se ejecuta en un servidor Web y a la que el usuario accede desde un cliente de propósito general (por ejemplo: un navegador web en un pc, teléfono móvil, …):

  Contenido estático y dinámico

Sistemas de Información Raquel Trillo Lado

Introducción

Cliente Web (Navegador)

HTTP

Servidor/Contenedor de aplicaciones Web:

Contenido estático: html, pdf, jpg, png, etc..

Contenido dinámico generado cuando se recibe una petición: -Diferentes tecnologías: Servlets, ASP, PHP

Page 4: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Servlet: Un ejecutable escrito en lenguaje Java que normalmente se ejecuta en respuesta a una petición http:

 Puede recibir peticiones HTTP  Procesa datos y genera una respuesta acorde con

los parámetros generando una página HTML en tiempo de ejecución (página HTML dinámica)

Sistemas de Información Raquel Trillo Lado

Servlets: Introducción

Page 5: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Antes de los Servlets:  CGI Scripts (Common Gateway Interface):

• Requieren crear un proceso por petición (más recursos y tiempo ejecución)

• Dependientes de la plataforma  Servlets:

• Se ejecutan en diferentes hilos (threads) del proceso servidor

• Independientes de la plataforma

Sistemas de Información Raquel Trillo Lado

Servlets: Introducción

Page 6: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Cada Servlet puede estar asociado a una o más URLs:

  El contenedor de aplicaciones asocia URLs a Servlets

 Paquetes javax.servlet y javax.servlet.http:

Sistemas de Información Raquel Trillo Lado

Servlets: Introducción

Page 7: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

Servlets: Clases e interfaces del API

Page 8: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 El método init se ejecuta cuando el servidor de aplicaciones Web decide cargar el Servlet en memoria:

  Cuando se arranca el servidor   La primera vez que se requiere que se ejecute el Servlet   Cuando se accede a algún componente de la aplicación

Web

 El método destroy se ejecuta cuando el servidor de aplicaciones Web decide eliminar el Servlet de memoria:

  Cuando se para el servidor   Cuando se para la aplicación web   Cuando lleva cierto tiempo sin usarse

Sistemas de Información Raquel Trillo Lado

Servlets: Clases e interfaces del API

Page 9: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  El método service se ejecuta cuando se requiere el servicio proporcionado por el Servlet:

  Cuando se recibe una petición asociada a las URLs ligadas al Servlet.

  Los parámetros de la petición están codificados en el objeto ServletRequest

  La salida a enviar al cliente se codifica en el objeto ServletResponse

Servlets: Clases e interfaces del API

Page 10: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 El método público service se implementa llamando a la operación protegida service la cual es una operación plantilla que llama al método doGet o doPost según la petición http sea de tipo GET o de tipo POST

 E n g e n e r a l s e e x t i e n d e l a c l a s e javax.servlet.http.HttpServlet y se redefinen los métodos doGet y/o doPost

Servlets: Clases e interfaces del API

Sistemas de Información Raquel Trillo Lado

Page 11: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  E l m é t o d o p ú b l i c o d e H t t p S e r v l e t R e q u e s t getParameter permite obtener el valor de un parámetro que tiene asociado un único valor

  E l m é t o d o p ú b l i c o d e H t t p S e r v l e t R e q u e s t getParameterValues permite obtener el valor de un parámetro multivaluado (aunque también se puede usar con parámetros monovaluados)

  El método públ ico de HttpServletResponse setContentType permite establecer el tipo de contenido de la respuesta y debe llamarse antes de comenzar a escribir en el objeto PrintWriter proporcionado por el método getWriter

Servlets: Clases e interfaces del API

Sistemas de Información Raquel Trillo Lado

Page 12: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  Creación de un serv let que procese los datos proporcionados por el cliente en el siguiente formulario y le comunique si la operación se ha realizado de forma correcta o ha habido algún error:

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 13: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Ejercicio: Crear la página html que cree el formulario mostrado en la transparencia anterior. Además asociarle al formulario la siguiente acción: http://localhost:8080/MiPrimeraAplicacion/InsertUser

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 14: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

… import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; …. public class InsertUserServlet extends HttpServlet{ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

String loginName = request.getParameter(”login"); String password = request.getParameter(“pw"); String repassword = request.getParameter(”repw"); String name = request.getParameter(“name"); String surname = request.getParameter(“surname"); String email = request.getParameter(“email"); …...

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 15: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

package miprimeraaplicacion.ejemplo1 public class InsertUserServlet extends HttpServlet{ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ... //Comprobación de parámetros //p.e.: todos los campos obligatorios deben ser distintos de null, // la clave debe ser igual a la clave tecleada por segunda vez, // la dirección de correo debe ser una dirección válida

// Si los parámetros son correctos se crea el objeto usuario // y se realiza una llamada a una clase del modelo que realiza la inserción en la bd UserVO user = new User (login, password, name, surname, email, language, country) try { ModelFacade model = new ModelFacade(); model.insertUser(user); }catch Exception e{ response.sendRedirect(“paginaError.html”) } … }

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 16: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

public class InsertUserServlet extends HttpServlet{ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ... try { ModelFacade model = new ModelFacade(); model.insertUser(user); }catch Exception e{ response.sendRedirect(“paginaError.html”) }

response.setContentType(“text/html; charset=ISO-8859-1”); PrinterWriter out = response.getWriter(); out.println(“<html><head><title>Inserción del usuario</title></head>”); out.println(“<body><p> El usuario con login “ + login + “se ha registrado correctamente </p>”); out.println(“</body></html>”); }

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 17: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 El método sendRedirect le indica al cliente como respuesta a la petición http que ha hecho que genere una nueva petición a la URL que se le indica como parámetro

 A veces interesa pasar el control a otro servlet o JSP dentro del servidor en lugar de indicar una respuesta al cliente. En ese caso se emplea el método forward

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 18: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

RequestDispatcher dispatcher = request.getRequestDispatcher(url);

dispatcher.forward(request,response)

  Se pasa el control a otro servlet dentro del servidor. El cliente no es consciente de los forwards (la dirección del navegador muestra la URL correspondiente a la petición original) y por tanto se debe conservar el objeto request y response

Servlets: Ejemplos

Sistemas de Información Raquel Trillo Lado

Page 19: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Una página JSP es un tipo especial de Servlet orientado a crear una interfaz gráfica:

  Tiene aspecto de una página HTML   Puede incluir scriptlets (scripts) que se escriben en Java

para generar código html dinámicamente

JSPs: Introducción

Page 20: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Cuando se accede a una página JSP:  Si es la primera vez que se accede a ella

entonces el servidor de apliaciones web implementa (lo genera a partir de la página jsp) un servlet asociado a dicha página, lo compila y lo carga en memoria

 Si no es la primera vez, le pasa la petición al servlet asociado

 Si la página jsp se ha modificado desde la compilación del servlet que tiene asociado y se requiere dicha página, entonces se genera un nuevo servlet

Sistemas de Información Raquel Trillo Lado

JSPs: Introducción

Page 21: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

JSPs: Ejemplos

Sistemas de Información Raquel Trillo Lado

 Creación de una página JSP que procese los datos proporcionados por el cliente en el siguiente formulario de búsqueda y le comunique los datos de ese cliente si este existe:

 Ejercicio: Crear la página html que cree el formulario de búsqueda (acción http://localhost:8080/MiPrimeraAplicacion/ShowUser.jsp )

Page 22: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

JSPs: Ejemplos

Sistemas de Información Raquel Trillo Lado

<%@ page import=“miaplicacion.userVO”> <html> <%-- Comentarios en las páginas JSP --%> <head><title>Show a user </title></head> <body> <% String login = request.getParameter(“login”); try { ModelFacade model = new ModelFacade(); UserVO user = model.findUser(login); } catch Exception e{ response.sendRedirect(“paginaError.html”)} if (user == null) response.sendRedirect(“paginaError.html”) %> <h1>Información del usuario buscado (<%=login%>) </h1> <p>Nombre: <%= user.getLogin() %> </p> <p>Apellidos: <%= user.getSurname() %> </p> … </body> </html>

Page 23: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  Las páginas JSP usan <% ….%> para incluir código Java (crear scriptlets)

  Las páginas JSP usan la directiva <%@ … %> para importar clases

  Las páginas JSP usan <%--….--%> para generar comentarios (no en el html)

  Las páginas JSP tienen definidos los siguientes objetos de forma implícita:

  request: javax.servlet.http.HttpServletRequest   response: javax.servlet.http.HttpServletResponse   session: javax.servlet.http.HttpSession   out: javax.servlet.jsp.JspWriter

  Las páginas JSP usan <%= expresión %> para incluir expresiones en Java que dan como resultado un objeto String o un objeto convertible a String (llamada al método toString())

Sistemas de Información Raquel Trillo Lado

JSPs: Ejemplos

Page 24: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  Cuando usar JSP y cuando Servlets:   JSP para la generación de la vista de la aplicación:

  Visualización de formularios y de mensajes de error después de validar los parámetros de entrada del formulario en el servidor

  Visualizar los resultados de una operación (por ejemplo una operación de búsqueda)

  Servlets para el procesamiento de los formularios y las llamadas a la capa modelo de la aplicación:

  Si los parámetros son válidos realizará la correspondiente operación y pasará el control a la página JSP que visualiza los resultados de la acción

  Si no lo son detectará los errores y pasará el control a la página JSP que permita al usuario subsanar lo errrores

Sistemas de Información Raquel Trillo Lado

JSPs: Ejemplos

Page 25: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  ¿Cómo hacer disponible una aplicación Web? Instándola (deployment) en el servidor web

  Los servidores/contenedores de aplicaciones Web que trabajan con tecnologías Java emplean ficheros war.

  Jar cvf miPrimeraAplicacion.war directorio

  Estructura del fichero .war:   Directorio WEB-INF/classes: contiene los ficheros .class de la

aplicación web agrupados en directorios según su estructura de paquetes

  Directorio WEB-INF/lib: contiene los ficheros .jar de las liberías que usa la aplicación (por ejemplo el driver jdbc de conexión a la BD)

Sistemas de Información Raquel Trillo Lado

Empaquetamiento de una aplicación Web

Page 26: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

 Estructura del fichero .war:   Directorio WEB-INF/web.xml: fichero de configuración

de la aplicación web que contiene diversos parámetros (p.e. qué URLs se asocian a cada Servlet incluido en la aplicación)

  Directorio raíz y subdirectorios que contienen los ficheros vista de la aplicación:

  Páginas HTML, CSS, imágenes, páginas JSP   Los navegadores (clientes) no pueden acceder al

contenido de WEB-INF (sólo es visible para los servlets y JSP)

Sistemas de Información Raquel Trillo Lado

Empaquetamiento de una aplicación Web

Page 27: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>Mi primera aplicación Web</display-name>

<!-- ================ Servlets ================ --> <servlet> <servlet-name>InsertUser</servlet-name> <servlet-class>miprimeraaplicacion.ejemplo1.InsertUserServlet </servlet-class> </servlet>

Sistemas de Información Raquel Trillo Lado

Empaquetamiento de una aplicación Web

Page 28: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

<!-- ===--========= Servlets Mapping======= --> <servlet-mapping> <servlet-name>InsertUser</servlet-name> <url-pattern>/InsertUser</url-pattern> </servlet-mapping>

<!-- ============ Welcome page ========= --> <welcome-file-list> <welcome-file>Index.html</welcome-file> </welcome-file-list>

</web-app>

Sistemas de Información Raquel Trillo Lado

Empaquetamiento de una aplicación Web

Page 29: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

  En el ejemplo sólo se muestran algunas etiquetas comunes

  Display-name: Define el nombre de la aplicación Web

  Servlet: Declara cada clase servlet que forma parte de la aplicación (servlet-class) y le asigna un nombre (servlet-name)

  Servlet-mapping: Define las URLs asociadas a cada servlet (url-pattern) definido anteriormente (servlet-name)

  Welcome-file-list: indica la página devuelta por el servidor cuando se acceda a la aplicación (welcome-file)

Sistemas de Información Raquel Trillo Lado

Empaquetamiento de una aplicación Web

Page 30: Sistemas de Información 12/13 Servlets y JSPs (Java Server ...webdiis.unizar.es/~raqueltl/SI/T5_6_Servlets_JSP.pdf · Guión Introducción Servlets Introducción Clases e interfaces

Bibliografía

 Mark Andrews “Story of a Servlet: An instant Tutorial” (http://www.oracle.com/technetwork/java/tutorial-138750.html)

 Fernando Bellas Permuy “Integración de Sistemas”, Ingeniería Informática, Universidad da Coruña

 Transparencias en la plataforma Blackboard 9.1 del Anillo Digital Docente (ADD): http://bb.unizar.es

Sistemas de Información Raquel Trillo Lado