Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright...

29
Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-1 Programación de Servlets Sesión 1: Introducción a los servlets Ejemplos básicos Especialista en Aplicaciones y Servicios Web con Java Enterprise

Transcript of Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright...

Page 1: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-1

Programación de ServletsSesión 1:

Introducción a los servletsEjemplos básicos

Especialista en Aplicaciones y Servicios Web con Java Enterprise

Page 2: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-2

Índice

Concepto de servletConfiguración de servlets en aplicaciones WebEjemplos básicos de servletsEl plugin Lomboz

Page 3: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-3

Concepto de servletConfiguración de servlets en aplicaciones WebEjemplos básicos de servletsEl plugin Lomboz

Introducción a los servlets

Page 4: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-4

Definición de servlet

Un servlet es un programa Java que se ejecuta en un servidor web y construye o sirve páginas web.Permite la construcción dinámica de páginas, en función de determinados parámetros de entradaMás sencillo que un CGI, más eficiente (se arranca un hilo por petición, y no un proceso entero), más potente y más portable.

Page 5: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-5

Recursos de servlets y JSP

Servlets y JSP son dos conceptos muy interrelacionadosPara trabajar con ellos se necesita:

Un servidor Web con soporte para servlets / JSP (contenedor de servlets y JSP: Tomcat, WebLogic...)Las librerías o clases necesarias (proporcionadas por el servidor)Recomendable también la documentación de la API de servlets / JSP

Son útiles las direcciones:http://java.sun.com/j2eehttp://java.sun.com/products/jsphttp://java.sun.com/products/servlets

Page 6: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-6

Arquitectura del paquete servlet

En el paquete javax.servlet tenemos toda la infraestructura para trabajar con servletsEl elemento central es la interfaz ServletLa clase GenericServlet es una clase abstracta que la implementa para un servlet genérico independiente del protocoloLa clase HttpServlet en el paquete javax.servlet.httphereda de la anterior para definir un servlet vía web utilizando HTTP

Page 7: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7

Arquitectura del paquete servlet

Cuando un servlet recibe una petición de un cliente, se reciben dos objetos:

Un objeto ServletRequest con los datos de la petición (información entrante: parámetros, protocolo, etc)

• Se puede obtener un ServletInputStream para leer los datos como un stream de entrada

• La subclase HttpServletRequest procesa peticiones HTTP

Un objeto ServletResponse donde se colocarán los datos de respuesta del servlet ante la petición

• Se puede obtener un ServletOutputStream para escribir esos datos en la salida

• La subclase HttpServletResponse trata respuestas HTTP

Page 8: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-8

Arquitectura del paquete servlet

Servlet

GenericServlet

HttpServlet

ServletRequest ServletResponse

HttpServletRequest HttpServletResponse

ServletInputStream ServletOutputStream

Page 9: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-9

Ciclo de vida de un servlet

Todos los servlets tienen el mismo ciclo de vida:El servidor carga e inicializa el servletEl servlet procesa N peticionesEl servidor destruye el servlet

Inicialización: para tareas que se hagan una sola vez al iniciar el servletpublic void init() throws ServletException{ ... }

public void init(ServletConfig conf) throws ServletException{ super.init(conf);

...}

Page 10: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-10

Ciclo de vida de un servlet

Procesamiento de peticiones: cada petición llama al método service( )

Según el tipo de petición, llama a uno de los métodos (todos con los mismos parámetros y excepciones que service( )):

public void service(HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException

public void doGet(...) public void doPost(...)public void doPut(...)public void doDelete(...)public void doOptions(...)public void doTrace(...)

Page 11: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-11

Ciclo de vida de un servlet

Destrucción: método destroy( )

Se debe deshacer todo lo construido en init( )Se llama a este método cuando todas las peticiones han concluido, o cuando ha pasado un determinado tiempo (en este caso, se debe controlar por código que se destruya cuando debe)

public void destroy() throws ServletException

Page 12: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-12

Estructura básica de un servlet

import javax.servlet.*;import javax.servlet.http.*;

public class ClaseServlet extends HttpServlet {

public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException {

... // CODIGO PARA UNA PETICION GET}

public void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException {

... // CODIGO PARA UNA PETICION POST}

}

NOTA: esta es la estructura más común de un servlet. Además, se puede incluir cualquiera de los métodos (init(), destroy(), doPut(...), etc, vistos antes

Page 13: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-13

Concepto de servletConfiguración de servlets en aplicaciones WebEjemplos básicos de servletsEl plugin Lomboz

Introducción a los servlets

Page 14: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-14

Llamada directa de servlets

Para utilizar un servlet en una aplicación web, se coloca en el directorio WEB-INF/classes, con su estructura de paquetes y subpaquetesDespués, podemos llamar al servlet directamente con:

O si lo hemos colocado en el root del servidor:

Por ejemplo:

http://host:puerto/<dir-aplicacion>/servlet/<nombre-servlet>

http://host:puerto/servlet/<nombre-servlet>

http://localhost:8080/miapp/servlet/paquete1.subpaquete1.MiServlet

Page 15: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-15

Mapeado de servlets y JSP

Otra opción es incluir en el fichero descriptor un nombre identificativo del servlet o la página JSP:

Con lo que podremos llamar al servlet o página:

<servlet><servlet-name>nombre</servlet-name><servlet-class>ClaseServlet</servlet-class>

</servlet><servlet>

<servlet-name>nombre2</servlet-name><jsp-file>/mipagina.jsp</servlet-class>

</servlet>

http://host:puerto/<dir>/servlet/ClaseServlethttp://host:puerto/<dir>/servlet/nombrehttp://host:puerto/<dir>/mipagina.jsphttp://host:puerto/<dir>/nombre2

Page 16: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-16

Asignar URLs a servlets o páginas JSP

Podemos mapear una URL concreta con un nombre de servlet o página JSP (tras <servlet>):

Con lo que podremos llamar al servlet o página:

También podemos usar comodines para mapear un conjunto de direcciones a un servlet o página JSP:

<servlet-mapping><servlet-name>nombre</servlet-name><url-pattern>/ejemploservlet</url-pattern>

</servlet-mapping>

http://host:puerto/ejemploservlet

<servlet-mapping><servlet-name>nombre</servlet-name><url-pattern>/ejemploservlet/*.jsp</url-pattern>

</servlet-mapping>

Page 17: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-17

Parámetros de inicio en servlets y JSP

Al asignar un nombre a un servlet o página JSP podemos definirle uno o más parámetros de inicio:

Si llamamos al servlet por su nombre o por su servlet-mapping, podemos en su código acceder a estos parámetros con:

<servlet><servlet-name>nombre</servlet-name><servlet-class>ClaseServlet</servlet-class><init-param>

<param-name>param1</param-name><param-value>valor1</param-value>

</init-param></servlet>

String s = getServletConfig().getInitParameter(“nombre”);

Page 18: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-18

Deshabilitar servlets

Podemos deshabilitar la llamada al alias servlet en cada aplicación Web añadiendo en el descriptor:

En algunos servidores (Tomcat, p. ej.) podemos colocar esto en el web.xml global para que sirva para cualquier aplicación

<servlet><servlet-name>error</servlet-name><servlet-class>ErrorServlet</servlet-class>

</servlet>...<servlet-mapping>

<servlet-name>error</servlet-name><url-pattern>/servlet/*</url-pattern>

</servlet-mapping>

Page 19: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-19

Cargar servlets al inicio

Podemos indicar que un servlet se cargue nada más iniciar el servidor Web:

El parámetro numérico es opcional (la etiqueta puede abrirse y cerrarse sin más), e indica el orden en que cargar los servlets al inicio, si hay varios que cargar

<servlet><servlet-name>nombre</servlet-name><servlet-class>ClaseServlet</servlet-class><load-on-startup>2</load-on-startup>

</servlet>

Page 20: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-20

Concepto de servletConfiguración de servlets en aplicaciones WebEjemplos básicos de servletsEl plugin Lomboz

Introducción a los servlets

Page 21: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-21

Ejemplos

Servlet que genera texto plano

Servlet que genera una página HTML

Servlet que toma parámetros de inicio

Page 22: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-22

Prueba de los ejemplos

Viene un fichero WAR que se instala en el servidor. Su fichero descriptor web.xml permite llamar a cada ejemplo de 3 formas distintas:

http://localhost:8080/ejemplobasico/servlet/ClaseServlethttp://localhost:8080/ejemplobasico/servlet/ejemplo1_1http://localhost:8080/ejemplobasico/ejemploservlet

http://localhost:8080/ejemplobasico/servlet/ClaseServletHTMLhttp://localhost:8080/ejemplobasico/servlet/ejemplo1_2http://localhost:8080/ejemplobasico/ejemploservletHTML

http://localhost:8080/ejemplobasico/servlet/ClaseServletInithttp://localhost:8080/ejemplobasico/servlet/ejemplo1_3http://localhost:8080/ejemplobasico/ejemploservletInit

Page 23: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-23

Concepto de servletConfiguración de servlets en aplicaciones WebEjemplos básicos de servletsEl plugin Lomboz

Introducción a los servlets

Page 24: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-24

Introducción

Lomboz es un plugin gratuito de eclipse que permite desarrollar aplicaciones J2EE con elementos como servlets, páginas JSP, EJBs, etc.Características principales:

Editor de código que comprueba la sintaxis JSPGenerador de contenedores Web y EJBGeneración de archivos EAR y WAR para distribuir aplicaciones webSoporte de multitud de servidores de aplicacionesGeneración de servicios web

Información en: http://www.objectlearn.com

Page 25: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-25

Instalación

Descomprimir el ZIP en el directorio de Eclipse (se coloca en plugins automáticamente)Reiniciar eclipse, y activar el plugin: ir a Window –Customize Perspective y marcar todas las casillas de Lomboz

Tendremos disponibles sus opciones desde los menús (como File – New) y el botón de vista Lomboz:

Comprobar en Window – Preferences – New Projectque hay un directorio src para fuentes y otro binpara objetos de un proyecto

Page 26: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-26

Instalación (II)

Establecer en Window – Preferences – Lomboz el fichero tools.jar de JDK (normalmente está en su subdirectorio lib)

Enable JSP syntax checking: habilita o no la comprobación de sintaxis de ficheros JSPServer restart: reinicia el servidor al desplegar una aplicaciónUpdate server classpath before every server launch: permite actualizar el classpath del servidor cada vez que se despliega una aplicaciónUse application server classpath: indica que se utilice el classpath que tiene asignado el servidor

Page 27: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-27

Establecer el servidor

En plugins/com.objectlearn.jdk.j2ee hay una carpeta serverscon ficheros de texto de definición de diferentes servidoresPodemos añadir nuevos añadiendo nuevos ficheros de texto, o modificando existentesDespués, vamos a Window – Preferences – Lomboz – Server Definitions y elegimos el servidor de la lista, establecemos sus propiedades y su variable de CLASSPATHEntre las propiedades, hay que establecer el Classpath Variable Name (nombre de la variable) y el Classpath Variable (valor de la variable ,ruta del directorio del servidor)Comprobar en Window – Preferences – Java – Classpath variables que la variable para el servidor se ha añadido correctamente

Page 28: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-28

Primeros pasos

Con File – New – J2EE Project crearemos un proyecto nuevo para una aplicación J2EE

En su carpeta src colocaremos las clases Java que luego vayan compiladas al directorio WEB-INF/classes

Con File – New – J2EE Module crearemos un módulo con la estructura de la aplicación Web. Contendrá el directorio WEB-INF, el fichero web.xml, y ahí colocaremos las páginas HTML, JSP, etc

Para crear un módulo necesitamos darle un nombre, y asociarlo con uno de los servidores que tengamos configurados

Page 29: Programación de Servlets Introducción a los servlets ... · Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-7 Arquitectura

Programación de Servlets Copyright © 2003-2004 Universidad de Alicante Introducción a los servlets-29

Gestión de módulos y proyectos

En src tendremos las clases Java y servlets de la aplicaciónEn la carpeta del módulo colocaremos las páginas JSP, HTML, etc, y definiremos el web.xml y el fichero de construcción de ant si queremosCon el botón de vista de Lomboz podremos mostrar la ventana de vista, con la que podremos desplegar la aplicación en el servidor, detener/reiniciar el servidor, etc.