Nicolás Troncoso Carrère ILI 258 Departamento de Informática Universidad Técnica Federico Santa María Valparaíso, 2006
1 2 3
Porqué paginas dinamicas? Confirmacion de suscripciones. Contenido generado en base a un formulario. Contenido a partir de una base de datos. Contenido cambiante como el stock de un producto.
Páginas Dinámicas con CGI Estandar popular, es de las primeras soluciones credas. Requiere un interprete. Si no esta bien programado es inseguro.
Microsoft ASP Active Server Page es una solucion Microsoft que incrusta codigo en las paginas. Corren en IIS (Internet Infomation Server). El unico vendedor es Microsoft. Esta siendo reemplazado por ASP.NET.
PHP Hypertex Preprocesor Es libre. Existe amplia documentacion. Tiene soporte nativo para correr en apache.
Servlets Temario Provee todas las caracteristicas mendionadas anteriormente. Es eficiente. Es conveniente (acceso a la biblioteca de JAVA). Es portable. Es Robusto.
JSP Temario Ejemplo Usa HTML. Incrusta codigo java. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> Saludos </TITLE> </HEAD> <BODY> <H2>Saludos </H2> <% if (Math.random() < 0.7) { %> Que pase un <B>bonito </B> dia! <% } else { %> Que tenga un <B>lmal</B> dia! <% } %> </BODY> </HTML>
JSP vs Servlets Todo lo que se puede hacer con JSP se puede hacer con servlets. Los JSP son convertidos en Servlets de forma interna. Es mas comodo programas JSP que servlets con println(). Permite separara presentacion de la logica de negocios.
Contenedores de Servlet y JSP JavaServer Web Development Kit (JSWDK) Es la referencia oficial de servlet 2.1 y JSP 1.0 Permite probar servlets y páginas JSP No soporta recarga automática de servlets Apache Es la referencia oficial de Sun para servlet 2.2 y JSP 1.1 (tb. servlet 2.3 y JSP 1.2) Es parte del proyecto Jakarta de Apache Software Foundation La versión 4.0 se denomina Catalina Puede correr sólo o integrado a Apache No soporta recarga automática de servlets
Contenedor de Servlets
Servlet mas HTTP
Funcionamiento de un Servlet
Ciclo de vida de un Servlet init() inicializa el servlet, creando los recursos requeridos, y comienza su vida Se invoca una sola vez service() maneja todas las peticiones enviadas por clientes con parámetros ServletRequest y ServletResponse destroy() Término de la vida del servlet, generalmente liberando recursos y salvando estado persistente
Programacion de un servlet Exjemplo de un Servet import javax.servlet.*; import java.io.ioexception; public class PrimitiveServlet implements Servlet { public void init(servletconfig config) throws ServletException { System.out.println("init"); } public void service(servletrequest request, ServletResponse response) throws ServletException, IOException { System.out.println("service"); } public void destroy() { System.out.println("destroy");
Protocolo HTTP Permite intercambiar datos entre servidores y browsers Web Se basa en conexiones TCP fiables creadas por el cliente para cada petición Se usa normalmente puerto 80 Definida en RFC 2068 y refinada en RFC 2616 (versión 1.1)
Peticiones HTTP Transacción HTTP comienza con una petición del cliente y termina con una respuesta del servidor Una petición HTTP consiste de: URI protocolo / versión Cabecera de la petición Línea en blanco Cuerpo
Metodos HTTP 1.0 GET Recupera el recurso identificado por URL requerida. HEAD Retorna sólo cabecera del recurso identificado por URL requerida. POST Envía datos de largo ilimitado al servidor Web.
Extension HTTP 1.1 PUT Almacena el cuerpo de la petición en la URL solicitada Complementaria a GET (similar a put de FTP) DELETE Borra en el servidor el documento identificado en la la URL OPTIONS Retorna métodos HTTP que soporta el servidor TRACE Se usa para depurar problemas complejos en redes
Respuesta del Servidor Incluye: Protocolo Código Descripción Campos de cabecera Línea en blanco Cuerpo Algunos posibles códigos de retorno: 200: OK 404: Recurso requerido no disponible 500: Error en el servidor HTTP
Clase HttpServlet
Servlet ejemplo ejemplo import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SomeServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Usar "request" para leer cabecera HTTP // (e.g. Cookies o HTML data form) // Usar "response" para retornar // (e.g. especificar tipo de contenido y definir cook PrintWriter out = response.getwriter(); // usar "out" para enviar contenido al browser }
Deploy de la Aplicacion Crear un Directorio para la aplicación. Escribir el código del servlet. Compilar el código. Crear un descriptor de despliegue. Hacer partir. Llamar al servlet desde el browser.
Preguntas Temario Gracias /L A TEX 2ε