La clase Java que recibe peticiones (casi siempre HTTP) y genera una salida (HTML, WML o XML), es un servlet. Entre sus características sobresale que: ◦ Los servlets que conforman una aplicación Web se ejecutan en un servidor de aplicaciones (contenedor). ◦ Cada servlet se puede asociar con una o más URLs. ◦ Esta librería de clases se localiza en los paquetes Javax.servlet y Javax.servlet.http. Hasta la aparición de JSP, el principal uso de los servlets era: ◦ ◦ ◦ ◦ ◦ Generar la vista de una aplicación Web. Recibir peticiones HTTP asociadas con una URL. Leer parámetros. Solicitar una operación sobre el modelo. Generar una salida HTML. 52 5-3 Visión global del framework de servlets. 5-4 55 56 57 58 public class ServletSencillo extends HttpServlet { /** * Maneja el método GET de HTTP para construir una sencilla página Web. */ public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String title = “Servlet Sencillo"; // selecciona el tipo de contenidos y otros campos de cabecera de la respuesta response.setContentType("text/html"); // Luego escribe los datos de la respuesta out = response.getWriter(); } } out.println("<HTML><HEAD><TITLE>"); out.println(title); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>" + title + "</H1>"); out.println("<P>Hola desde un Servlet."); out.println("</BODY></HTML>"); out.close(); 59 <form name="frmDatos" method="post" action = “/servlet/Saludo"> <input type="text" name="nombre"> <br> <input type="submit" name="enviar" value="enviar"> </form> 510 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class Saludo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); } out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body bgcolor=\"white\">"); out.println("<h1>Bievenido: " + request.getParameter("nombre") + "</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } 511 Para poder instalar un Servlet dentro de un servidor de aplicaciones debe estar contenido dentro de un módulo Web A su vez el contenido de un módulo Web se empaqueta en un archivo con extensión .war (utilizando la utileria Jar) Un archivo .war se puede instalar (deployment) en cualquier servidor de aplicaciones web conforme a J2EE 512 513 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <distributable/> <!-- ===================== Servlets ============================= -> <servlet> <servlet-name></servlet-name> <servlet-class></servlet-class> </servlet> <!-- ==================== Servlet mapping ======================= --> <servlet-mapping> <servlet-name></servlet-name> <url-pattern></url-pattern> </servlet-mapping> ... Mappings para el resto de servlets... <!-- ========================= Session =========================== --> <session-config> <session-timeout>30</session-timeout> </session-config> <!-- ======================= Welcome page ======================== -> <welcome-file-list> <welcome-file>Index.jsp</welcome-file> </welcome-file-list> </web-app> 514