JSP - Arquitectura
El servidor web necesita un motor JSP, es decir, un contenedor para procesar páginas JSP. El contenedor JSP es responsable de interceptar solicitudes de páginas JSP. Este tutorial hace uso de Apache, que tiene un contenedor JSP incorporado para admitir el desarrollo de páginas JSP.
Un contenedor JSP trabaja con el servidor web para proporcionar el entorno de ejecución y otros servicios que necesita un JSP. Sabe comprender los elementos especiales que forman parte de las JSP.
El siguiente diagrama muestra la posición del contenedor JSP y los archivos JSP en una aplicación web.
Procesamiento JSP
Los siguientes pasos explican cómo el servidor web crea la página web usando JSP:
Al igual que con una página normal, su navegador envía una solicitud HTTP al servidor web.
El servidor web reconoce que la solicitud HTTP es para una página JSP y la reenvía a un motor JSP. Esto se hace usando la URL o la página JSP que termina con.jsp en vez de .html.
El motor JSP carga la página JSP desde el disco y la convierte en un contenido de servlet. Esta conversión es muy simple en la que todo el texto de la plantilla se convierte en declaraciones println () y todos los elementos JSP se convierten a código Java. Este código implementa el correspondiente comportamiento dinámico de la página.
El motor JSP compila el servlet en una clase ejecutable y reenvía la solicitud original a un motor de servlet.
Una parte del servidor web denominada motor de servlet carga la clase Servlet y la ejecuta. Durante la ejecución, el servlet produce una salida en formato HTML. La salida se transmite posteriormente al servidor web por el motor de servlets dentro de una respuesta HTTP.
El servidor web reenvía la respuesta HTTP a su navegador en términos de contenido HTML estático.
Finalmente, el navegador web maneja la página HTML generada dinámicamente dentro de la respuesta HTTP exactamente como si fuera una página estática.
Todos los pasos mencionados anteriormente se pueden ver en el siguiente diagrama:
Normalmente, el motor JSP comprueba si ya existe un servlet para un archivo JSP y si la fecha de modificación en la JSP es anterior a la del servlet. Si la JSP es más antigua que su servlet generado, el contenedor JSP asume que la JSP no ha cambiado y que el servlet generado aún coincide con el contenido de la JSP. Esto hace que el proceso sea más eficiente que con los otros lenguajes de programación (como PHP) y, por lo tanto, más rápido.
Entonces, de alguna manera, una página JSP es realmente otra forma de escribir un servlet sin tener que ser un experto en programación Java. Excepto por la fase de traducción, una página JSP se maneja exactamente como un servlet normal.