Servlet vs JSP

Tradicionalmente las páginas Web mostraban información que cambiaba rara vez o nunca. Esta forma estática de mostrar información era bastante eficiente puesto que la página se creaba una única vez y se presentaba. Cuando era necesario se hacían mínimos cambios y ya estaba lista otra vez. Pero rápidamente surgió la necesidad de interactuar con el usuario y de adaptar la información a sus necesidades, o mostrar información que se toma de bases de datos que cambian frecuentemente. Con la forma que había de crear documentos HTML estáticos era imposible mantener esas páginas si se querían construir con cierto dinamismo. Por ello aparecieron las técnicas de generación dinámica de páginas. Estas técnicas permiten de forma relativamente fácil mantener actualizadas las páginas aunque se muestre información que cambia frecuentemente y también posibilitan formas de establecer comunicaciones personalizadas con los usuarios.

¿Qué es un Servlet?

Los Servlet fueron introducidos por Sun en 1996 como pequeñas aplicaciones Java para añadir funcionalidad dinámica a los servidores Web. Los servlets, al igual que los scripts CGI, reciben una petición del cliente y generan los contenidos apropiados para su respuesta, aunque el esquema de funcionamiento es diferente.

Los Servlets son las respuesta de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Construir páginas Web al vuelo es útil (y comúnmente usado) por un número de razones:

  • La página Web está basada en datos enviados por el usuario. Por ejemplo, las páginas de resultados de los motores de búsqueda se generan de esta forma, y los programas que procesan pedidos desde sites de comercio electrónico también.
  • Los datos cambian frecuentemente. Por ejemplo, un informe sobre el tiempo o páginas de cabeceras de noticias podrían construir la página dinámicamente, quizás devolviendo una página previamente construida y luego actualizándola.
  • Las páginas Web que usan información desde bases de datos corporativas u otras fuentes. Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line que liste los precios actuales y el número de artículos en stock.

Mas Información (http://java.sun.com/products/servlet/).

Mas Información (http://courses.coreservlets.com/Course-Materials/csajsp2.html)

Entre las características principales de los servlets cabe citar las siguientes:

  • Son independientes del servidor utilizado y de su sistema operativo, lo que quiere decir que a pesar de estar escritos en Java, el servidor puede estar escrito en cualquier lenguaje de programación.
  • Los servlets pueden llamar a otros servlets, e incluso a métodos concretos de otros servlets (en la misma máquina o en una máquina remota). De esta forma se puede distribuir de forma más eficiente el trabajo a realizar. Por ejemplo, se podría tener un servlet encargado de la interacción con los clientes y que llamara a otro servlet para que a su vez se encargara de la comunicación con una base de datos.
  • Los servlets pueden obtener fácilmente información acerca del cliente (la permitida por el protocolo HTTP), tal como su dirección IP, el puerto que se utiliza en la llamada, el método utilizado (GET, POST), etc.
  • Permiten además la utilización de cookies y sesiones, de forma que se puede guardar información específica acerca de un usuario determinado, personalizando de esta forma la interacción cliente/servidor. Una clara aplicación es mantener la sesión con un cliente.
  • Pueden actuar como enlace entre el cliente y una o varias bases de datos en arquitecturas cliente-servidor.
  • Asimismo, pueden realizar tareas de proxy para un applet. Debido a las restricciones de seguridad, un applet no puede acceder directamente por ejemplo a un servidor de datos localizado en cualquier máquina remota, pero sí podría hacerlo a través de un servlet.
  • Permiten la generación dinámica de código HTML, lo que se puede utilizar para la creación de contadores, banners, etc.

¿Que es JSP?

JavaServer Pages (JSP) es una tecnología híbrida basada en template systems. Al igual que ASP, SSJS y PHP puede incorporar scripts para añadir código Java directamente a las páginas .jsp, pero también implemente, al estilo ColdFusion, un conjunto de etiquetas que interaccionan con los objetos Java del servidor, sin la necesidad de que aparezca código fuente en la página.

Una página JSP es simplemente, en su forma básica, una página Web HTML que contiene unos bits adicionales de código que ejecutan la aplicación lógica para generar el contenido dinámico. Esta aplicación lógica puede envolver JavaBeans, objetos JDBC, Enterprise JavaBeans (EJB), y objetos Remote Method Invocation (RMI), todos los cuales pueden ser fácilmente accedidos por una página JSP.

Mas Información (http://java.sun.com/products/jsp/overview.html)

Las características ofrecidas por JSP como alternativa a la generación de contenido dinámico para la Web se pueden resumir en:

  • Mejoras en el rendimiento:
    • Utilización de procesos ligeros (hilos Java) para el manejo de las peticiones.
    • Manejo de múltiples peticiones sobre una página .jsp en un instante dado.
    • El contenedor servlet puede ser ejecutado como parte del servidor Web.
    • Facilidad para compartir recursos entre peticiones (hilos con el mismo padre: servlet container).
  • Soporte de componentes reutilizables:
    • Creación, utilización y modificaciones de JavaBeans del servidor.
    • Los JavaBeans utilizados en páginas .jsp pueden ser utilizados en servlets, applets o aplicaciones Java.
  • Separación entre código de presentación y código de implementación:
    • Cambios realizados en el código HTML relativos a cómo son mostrados los datos, no interfieren en la lógica de programación y viceversa.
  • División del trabajo:
    • Los diseñadores de páginas pueden centrarse en el código HTML y los programadores en la lógica del programa.
    • Los desarrollos pueden hacerse independientemente.
    • Las frecuentes modificaciones de una página se realizan más eficientemente.

Ventajas de JSP frente a Servlet:

JSP no provee ninguna capacidad que no pueda ser, en principio, llevada a cabo con un servlet. En efecto, los documentos JSP son automáticamente traducidos en servlets. Pero es más cómodo escribir (¡y modificar!) HTML normal que tener “millones” de declaraciones println que generen el HTML. Además, separando la presentación del contenido, se puede colocar a diferentes personas en diferentes tareas: los expertos en diseño Web pueden construir el HTML usando sus herramientas habituales y dejar espacios para que los programadores de servlets inserten el contenido dinámico.

Mas información (http://java.sun.com/developer/technicalArticles/Programming/jsp/)

Conclusiones

Las tecnologías servlet y JSP de Java, no se plantean como dos alternativas a poder utilizar separadamente, sino como técnicas complementarias. Es más, las páginas JSP cuando se compilan se transforman en servlets.

Una de las ventajas importantes de usar cualquiera de estas dos técnicas es que se utiliza código escrito en Java, con todos los beneficios que ello conlleva: no hay necesidad de aprender un nuevo lenguaje, portabilidad, reutilización, etc. El problema de utilizar servlets directamente es que, aunque son muy eficientes, son muy tediosos de programar puesto que hay que generar la salida en código HTML con gran ca¡tntidad de funciones println. Este problema se resuelve fácilmente utilizando JSP, puesto que aprovecha la eficiencia del código Java, para generar el contenido dinámico, y la lógica de presentación se realiza con HTML normal. Sin embargo, cuando en una página JSP se necesita introducir mucha funcionalidad, es decir, introducir mucho código Java para generar el contenido dinámico de nuestra página, ese mismo hecho lleva a que el código de la página JSP no sea demasiado claro.

Por lo tanto, el dilema está en decidir cuándo utilizar servlets y cuándo JSP. Lo ideal sería usar JSP cuando el dinamismo que se pretende no supone introducir mucho código Java en las páginas, puesto que esto oscurecería el código. Sin embargo cuando hay mucha funcionalidad y necesitamos mucho código Java, lo ideal sería utilizar una página JSP que llamase a un servlet que contenga la funcionalidad

necesaria para que éste realice el trabajo y genere la respuesta, ocupándose el código JSP de presentar la información que devuelve el servlet.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: