- Java Servlet
-
Java Servlet Desarrollador Oracle Corporation / Sun Microsystems
http://java.sun.com/...Información general Última versión estable 3.0 (info) Género ? Programado en Java Sistema operativo Máquina virtual Java Licencia ? En español ? Los servlets, son objetos que corren dentro del contexto de un contenedor de servlets (ej: Tomcat) y extienden su funcionalidad.
La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas que se ejecutan en el contexto de un navegador web. Por contraposición, un servlet es un programa que se ejecuta en un servidor.
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.
Contenido
Historia
La especificación original de Servlets fue creada por Sun Microsystems (la versión 1.0 fue terminada en junio de 1997). Comenzando con la versión 2.3, la especificación de Servlet fue desarrollada siguiendo el Proceso de la Comunidad Java (Java Community Process).
Aspectos técnicos
Un servlet es un objeto que se ejecuta en un servidor o contenedor JEE, especialmente diseñado para ofrecer contenido dinámico desde un servidor web, generalmente HTML. Otras opciones que permiten generar contenido dinámico son los lenguajes ASP, PHP, JSP (un caso especial de servlet), Ruby y Python. Forman parte de JEE (Java Enterprise Edition), que es una ampliación de JSE (Java Standard Edition).
Un servlet implementa la interfaz
javax.servlet.Servlet
o hereda alguna de las clases más convenientes para un protocolo específico (ej:javax.servlet.HttpServlet
). Al implementar esta interfaz el servlet es capaz de interpretar los objetos de tipoHttpServletRequest
yHttpServletResponse
quienes contienen la información de la página que invocó al servlet.Entre el servidor de aplicaciones (o web content) y el servlet existe un contrato que determina cómo han de interactuar. La especificación de éste se encuentra en los JSR (Java Specification Requests) del JCP (Java Community Process).
Descriptor de despliegue
El descriptor de despliegue es un archivo que se localiza en el directorio WEB-INF y se llama web.xml. En él es donde se controla el comportamiento de los Servlet y páginas JSP.
Ejemplo sencillo de un Descriptor de despliegue
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>HolaMundoServlet</servlet-name> <servlet-class>org.prueba.servlet.HolaMundoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HolaMundoServlet</servlet-name> <url-pattern>/HolaMundoServlet</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app>
Ciclo de vida
El ciclo de vida de un Servlet se divide en los siguientes puntos:
- El cliente solicita una petición a un servidor vía URL.
- El servidor recibe la petición.
- Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al método
init()
. - Si ya está iniciado, cualquier petición se convierte en un nuevo hilo. Un Servlet puede manejar múltiples peticiones de clientes.
- Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al método
- Se llama al método
service()
para procesar la petición devolviendo el resultado al cliente. - Cuando se apaga el motor de un Servlet se llama al método
destroy()
, que lo destruye y libera los recursos abiertos.
Clases y objetos necesarios
Podemos crear un Servlet haciendo uso del paquete
javax.servlet
.Interface HttpServletRequest
Sigue este enlace para ver su definición detallada (en inglés): http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRequest.html
Interface HttpServletResponse
Sigue este enlace para ver su especificación detallada (en inglés): http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletResponse.html
Beneficios de utilizar Servlets en lugar de CGI
- Son más eficientes y utilizan menos recursos. CGI utiliza un nuevo proceso por cada petición. En cambio en los Servlets sólo existe una copia cargada en la máquina virtual y por cada petición se inicia un hilo, lo cual reduce el uso de memoria del servidor y el tiempo de respuesta.
- Tienen persistencia, por lo que siguen "vivos" una vez terminada la petición.
Ejemplo
Código de ejemplo de un Servlet que procesa una petición GET y devuelve una página web HTML sencilla:
package org.pruebas; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HolaMundoServlet extends HttpServlet { /** * Servlet de ejemplo que procesa una petición GET * @param request * @param response * @throws ServletException * @throws IOException */ @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); out.println("<html>"); out.println("<head><title>Ejemplo Hola Mundo</title></head>"); out.println("<body>"); out.println("<h1>¡Hola Mundo!</h1>"); out.println("</body></html>"); } }
Enlaces externos
Categorías:- Tecnologías Java EE
- Aplicaciones informáticas
- Desarrollo web
Wikimedia foundation. 2010.