La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuál es la diferencia entre JSP y Servlet en Java?

¿Cuál es la diferencia entre JSP y Servlet en Java?

1. ¿Qué es un servlet?

La evolución de la informática cliente/servidor. Java proporciona una solución cliente/servidor completa, en la que los programas se pueden descargar automáticamente al cliente y ejecutarse. Este es un subprograma. Pero eso es sólo la mitad del problema. La otra mitad del problema son los servlets.

El servlet puede considerarse como un subprograma del lado del servidor. Un servidor web carga y ejecuta un servlet del mismo modo que un navegador carga y ejecuta un subprograma. Un servlet recibe una solicitud de un cliente (a través de un servidor web), realiza alguna tarea y devuelve el resultado. El proceso básico de uso de servlet es el siguiente:

El cliente realiza una solicitud HTTP.

El servidor web recibe la solicitud y la envía al servlet. Si el servlet no se ha cargado, el servidor web lo cargará en la máquina virtual Java y lo ejecutará.

El servlet recibirá la solicitud HTTP y realizará algún procesamiento.

El servlet devolverá una respuesta al servidor web.

El servidor web envía la respuesta recibida del servlet al cliente.

Debido a que los servlets se ejecutan en el servidor, no es necesario implementar los problemas de seguridad generalmente asociados con los applets. Cabe señalar que los navegadores web no se comunican directamente con los servlets, sino que los carga y ejecuta el servidor web.

Los servlets están escritos en Java, por lo que son independientes de la plataforma desde el principio. De esta manera, Java se puede escribir una vez y la promesa de ejecutarse en cualquier lugar y en cualquier plataforma se puede cumplir en el servidor. Los servlets también tienen algunas ventajas únicas que los scripts CGI no tienen: (No conozco muy bien CGI, así que no puedo entender completamente estas características. Esta también es una publicación en el foro, perdóneme)

Los servlets son persistentes. El servidor web solo necesita cargar los servlets una vez y pueden mantener servicios (como conexiones de bases de datos) entre diferentes solicitudes. En comparación, los guiones CGI son efímeros. Cada solicitud de un script CGI hace que el servidor web cargue y ejecute el script. Una vez que se completa el script CGI, se borra de la memoria y los resultados se devuelven al cliente. Cada vez que se utiliza un script CGI, se ejecutará repetidamente el proceso de inicialización del programa (como conectarse a la base de datos).

El servlet es independiente de la plataforma. Como se mencionó anteriormente, los servlets están escritos en Java, que naturalmente hereda la independencia de plataforma de Java.

Los servlets son extensibles. Debido a que el servlet está escrito en Java, tiene todas las ventajas que Java puede aportar. Java es un lenguaje de programación robusto orientado a objetos que se puede ampliar fácilmente para satisfacer sus necesidades. Los servlets nacen con estas características.

El servlet es seguro. La única forma de llamar a un servlet externamente es a través de un servidor web. Esto proporciona un alto nivel de seguridad, especialmente si su servidor web está protegido por un firewall.

Setvlet se puede utilizar en varios clientes. Debido a que los servlets están escritos en Java, se pueden usar en HTML tan fácilmente como los subprogramas.

Entonces, ¿cómo se ejecuta Servlet? ¿Cómo escribir un Servlet y cuál es su arquitectura básica?

Estas cuestiones se tratarán en secciones posteriores.

2.JSP y Servlet

Ahora que tenemos una comprensión general de Servlet, hablemos de la relación entre JSP y Servlet.

JSP es un lenguaje de scripting que encapsula la interfaz del sistema Java Servlet, simplifica el uso de Java y Servlets y proporciona la capacidad de ejecutar páginas web dinámicamente ampliando las etiquetas JSP. A pesar de esto, JSP todavía no va más allá del alcance de Java y Servlets. No sólo se puede escribir código Java directamente en la página JSP, sino que el JSP se traducirá a un servlet antes de ejecutarse.

JSP se ejecuta en el servidor y los resultados de la ejecución se envían al navegador del cliente. Podemos decir que es básicamente independiente del navegador. Es diferente de JavaScript, que es un lenguaje de programación del lado del cliente que se ejecuta en el cliente y no tiene nada que ver con el servidor. Entonces, ¿qué es JSP? Es un servlet.

La principal diferencia entre JSP y Servlet es que JSP proporciona un conjunto de etiquetas simples que se combinan mejor con HTML, lo que permite a las personas que no entienden Servlet crear páginas web dinámicas. Para las personas que no están familiarizadas con el lenguaje Java (como yo), el desarrollo JSP será más conveniente. Después de modificar el JSP, puede ver los resultados inmediatamente sin compilación manual. El motor JSP hará el trabajo, pero el servlet carece de una serie de acciones como compilar y reiniciar el motor de servlet. Pero en JSP, HTML se mezcla con código de programa, Servlet no. Quizás todo el mundo esté confundido, entonces, ¿qué es Servlet? A continuación se presenta brevemente el funcionamiento de JSP y se le indica cómo ejecutar un archivo JSP:

Cuando el servidor web (o motor Servlet, servidor de aplicaciones) admite el motor JSP, el motor JSP convertirá el archivo JSP. en el archivo fuente del código Servlet, y luego el Servlet se compilará en el código de bytes ejecutable de Java, se cargará y ejecutará en el modo Servlet general.

JSP tiene una sintaxis simple, se puede incrustar fácilmente en HTML, se puede agregar fácilmente con partes dinámicas y se puede generar fácilmente en HTML. Al generar HTML en un servlet, se deben llamar métodos específicos y los caracteres como las comillas deben tratarse de manera especial. Agregarlos como partes dinámicas a páginas HTML complejas es más difícil que JSP.

A excepción de las fases de conversión y compilación, realmente no hay mucha diferencia entre JSP y Servlet.

Los motores JSP generalmente se basan en motores Servlet, y el motor Servlet en sí es un Servlet. Traduce archivos JSP al código fuente de Servlet y luego llama al compilador de Java para compilarlos en Servlets. Esta es también la razón por la que JSP es lento cuando se llama por primera vez. Después de la primera compilación, la velocidad de JSP y Servlet es la misma. Veamos por qué se compilan a la misma velocidad después de la primera compilación:

A lo largo de la ejecución, el motor JSP comprueba si el JSP compilado (en forma de Servlet) es más rápido que el JSP original. El archivo es nuevo Si lo es, el motor JSP no lo compilará; de lo contrario, significa que el archivo JSP es relativamente nuevo y el proceso de traducción y compilación debe volver a ejecutarse.

Para tener una comprensión más profunda, primero echemos un vistazo al entorno de ejecución y desarrollo de JSP:

Navegador: hay dos navegadores comunes: IE y Netscape.

Base de datos: Las bases de datos más utilizadas incluyen Oracle, SQL Server, Informix, DB2, Sybase, Access, MySQL, etc.

Sistema operativo: Los más comunes incluyen Windows, Linux y varios sistemas Unix.

Servidores web: Los más comunes incluyen IIS, Apache, Netscape Enterprise Server, etc.

Motor JSP: en términos generales, el motor JSP se basa en el motor Servlet y aparece en forma de Servlet. Al mismo tiempo, en la implementación de varios motores gratuitos y comerciales, los motores Servlet y JSP generalmente aparecen juntos. En cierto sentido, nos convertimos en motores Servlet / JSP o motores Jsp.

El motor JSP es una entidad a nivel de sistema que puede proporcionar soporte operativo de JSP y Servlet y gestionar sus ciclos de vida.

Cuando se solicita la página JSP por primera vez, el motor JSP convertirá el archivo JSP original en código fuente de Servlet, luego llamará al compilador de Java, lo compilará en un Servlet y lo ejecutará en el Servlet. motor. Cuando haya una solicitud nuevamente, el motor JSP verificará si el JSP compilado es más nuevo que el archivo JSP original. Si es así, ejecute el Servlet; de lo contrario, significa que el archivo se ha actualizado y se iniciará el proceso de conversión y compilación. realizarse nuevamente.

En este punto, la relación entre JSP y Servlet es básicamente clara.

En mi opinión, JSP es utilizable, simple y conveniente, funciona bien con Beans y tiene funciones muy poderosas. ¿Por qué vuelve a aparecer Servlet y para qué sirve? Y su método de escritura también es más complicado. Para aclarar el problema, me gustaría hablar aquí sobre la historia. Por cierto, ¿por qué deberíamos usar Servlet y cuáles son los beneficios de Servlet?

Breve historia: (Extraído de un foro, abreviado y reescrito)

En pocas palabras, SERVLET, el primero desarrollado por Sun, tiene funciones poderosas y un diseño de sistema avanzado. Sin embargo, todavía utiliza el antiguo método CGI para generar oraciones HTML oración por oración, lo cual es muy inconveniente para escribir y modificar HTML.

Más tarde, Sun lanzó JSP incorporado (un producto de desarrollo de Servlet) similar a ASP, incorporando etiquetas JSP en declaraciones HTML, lo que simplificó y facilitó enormemente el diseño y modificación de páginas web. Los nuevos lenguajes de red, como ASP, PHP y JSP, son lenguajes de secuencias de comandos integrados.

Desde la perspectiva de la estructura de red de tres capas, un proyecto de red se divide en al menos tres capas: capa de datos, capa empresarial y capa de presentación. Por supuesto, puede ser más complejo. SERVLET es muy poderoso para escribir la capa empresarial, pero es muy inconveniente para escribir la capa de presentación. JSP está diseñado principalmente para facilitar la escritura de la capa de presentación. Por supuesto, también puedes escribir la capa empresarial. Los amigos que están acostumbrados a escribir ASP, PHP y CGI a menudo mezclan inconscientemente la capa de presentación y la capa empresarial. Poner la información de procesamiento de la base de datos en JSP en realidad debería colocarse en la capa empresarial.

Según la propia recomendación de Sun, JSP solo debe almacenar contenido relacionado con la capa de presentación, es decir, solo la parte que genera la página HTML. Todos los cálculos, análisis de datos y procesamiento de conexiones de bases de datos pertenecen a la capa empresarial y deben colocarse en JAVA BEANS. La integración de las dos capas se logra llamando a JAVA BEANS a través de JSP.

De hecho, la tecnología DNA lanzada por Microsoft es simplemente tecnología ASP+COM/DCOM. De manera similar a JSP + BEANS, todas las capas de presentación se completan con ASP y todas las capas comerciales se completan con COM/DCOM. La integración se logra a través de llamadas. Ahora. .NET lanzado por Microsoft también se basa en este concepto. Todas las capas de presentación se completan con ASP.NET y la capa empresarial se completa con C# o VB.NET o VC.NET.

¿Por qué utilizar estas tecnologías de componentes? Debido a que la eficiencia del lenguaje ASP/JSP puro es muy baja, si una gran cantidad de usuarios hacen clic, el lenguaje de script puro alcanzará rápidamente su límite superior funcional, y la tecnología de componentes puede aumentar en gran medida el límite superior funcional y acelerar la velocidad de ejecución.

Por otro lado, los lenguajes de scripting puros mezclan la capa de presentación y la capa empresarial, lo que hace que la modificación sea inconveniente y el código no se pueda reutilizar. Si desea modificar un lugar, a menudo implica más de diez páginas de código. Con la tecnología de componentes, sólo se pueden modificar componentes.

En resumen, SERVLET es un producto temprano e imperfecto. Es bueno escribir la capa comercial, pero no es bueno escribir la capa de presentación. Las dos capas están mezcladas, lo cual es muy confuso.

Entonces se introdujo JSP+BAEN, la capa de presentación se escribió en JSP y la capa empresarial se escribió en BAEN. El propio Sun tiene la intención de utilizar JSP en lugar de SERVLET en el futuro.

Después de leer la descripción anterior, es posible que comprenda mejor la coexistencia de JSP y Servlet. Se puede ver que la practicidad, el potente rendimiento y la facilidad de uso de JSP y Bean están fuera del alcance de Servlet. Entonces, ¿se ha reemplazado Servlet? no quiero! Seguirá desempeñando un papel muy importante en el desarrollo futuro. Lo anterior es sólo un aspecto del problema. Echemos un vistazo a las características del propio Servlet.

Debido a que está escrito en Java, no se mencionarán las características relevantes. Esto se ha introducido en detalle anteriormente. Veamos los demás:

Servlet es un modelo de programación para desarrollar aplicaciones del lado del servidor. Si es solo una aplicación Java normal, se puede escribir sin servlet. Pero si desea proporcionar capacidades de servicio basadas en web, debe escribir de acuerdo con este modelo y se debe permitir que el servlet se ejecute en un servidor web Java o en un servidor de aplicaciones que cumpla con la especificación de servlet; de lo contrario, no se ejecutará.

A menos que implemente un servidor web usted mismo, su complejidad es relativamente alta, especialmente en aplicaciones empresariales, que requieren una alta estabilidad y solidez del sistema, por lo que el modelo de servlet en realidad simplifica el desarrollo de procesos robustos del lado del servidor. Los servlets se pueden utilizar como métodos de acceso para proporcionar funcionalidad de servicio web.

Ahora podrás entender qué es un Servlet, qué es un JSP y la relación entre ellos.