Hable sobre Java Web (Servlet + JSP) esas cosas

Pregunta 1: ¿Cuál es la relación y la diferencia entre servlet y jsp-jsp y servlet?

Respuesta 1:

1. En lo que respecta a la JVM, la JVM solo puede reconocer clases java, pero no códigos JSP. El contenedor web compila los códigos JSP en clases java que la JVM puede reconocer . Entonces, jsp se convierte en Servlet después de compilar, la esencia de JSP es Servlet.

2. En esencia, Servlet es una clase completa de Java, y JSP es una simplificación de Servlet . Servlet es una clase completa de Java. El método de servicio de esta clase se utiliza para generar una respuesta al cliente; JSP es una simplificación de Servlet. El uso de Jsp solo necesita completar el contenido que el programador debe enviar al cliente. En cuanto al script Java en JSP Integrados en una clase, completada por el contenedor JSP, los programadores no tienen que preocuparse.

3. En términos de páginas , jsp es mejor para mostrar páginas y los servlets son mejores para el control lógico.

4. En términos de objetos integrados, no hay objetos integrados en Servlet, hay 9 tipos de objetos integrados en Jsp, pero deben obtenerse a través del objeto HttpServletRequest, el objeto HttpServletResponse y el objeto HttpServlet.

Pregunta 2: ¿Cuáles son los objetos integrados de servlet y jsp-jsp? Cual es el papel?

Answer2 :

JSP tiene 9 objetos incorporados:

request: encapsula la solicitud del cliente, que contiene los parámetros de la solicitud GET o POST;

respuesta: encapsula la respuesta del servidor al cliente;

pageContext: puede obtener otros objetos a través de este objeto;

sesión: el objeto que encapsula la sesión del usuario;

aplicación: objetos que encapsulan el entorno operativo del servidor;

out: salida del objeto del flujo de salida por la respuesta del servidor;

config: objeto de configuración de la aplicación web;

página: página JSP en sí misma (equivalente a esto en un programa Java);

excepción: Objeto que encapsula la excepción lanzada por la página.

Pregunta 3: servlet & jsp-talk sobre los 4 ámbitos de jsp?

Answer3 :

Los cuatro ámbitos en JSP incluyen página, solicitud, sesión y aplicación, específicamente:

La página representa objetos y atributos relacionados con una página.

request representa los objetos y atributos relacionados con una solicitud emitida por el cliente web. Una solicitud puede abarcar varias páginas e involucrar múltiples componentes web; los datos temporales que deben mostrarse en la página se pueden colocar en este ámbito.

session representa objetos y atributos relacionados con una sesión establecida entre un usuario y el servidor. Los datos relacionados con un usuario deben colocarse en su propia sesión.

La aplicación representa los objetos y atributos relacionados con toda la aplicación web. Es esencialmente un ámbito global que abarca toda la aplicación web, incluidas varias páginas, solicitudes y sesiones.

Pregunta 4: sesión y cookie: ¿cuál es la diferencia entre sesión y cookie?

Answer4 :

Dado que el protocolo HTTP es un protocolo sin estado, cuando el servidor necesita registrar el estado del usuario, necesita utilizar un mecanismo para identificar al usuario específico. Este mecanismo es la sesión. Escenarios típicos como los carritos de compras, cuando hace clic en el botón de pedido Dado que el protocolo HTTP no tiene estado, no sabe qué usuario está operando, por lo que el servidor debe crear una sesión específica para un usuario específico, utilizada para identificar a este usuario y rastrear al usuario, de modo que sepamos cuántos hay en el carrito de compras El libro Esta sesión se almacena en el servidor y tiene un identificador único. Hay muchas formas de guardar la sesión en el servidor, incluida la memoria, la base de datos y los archivos de disco. Al agrupar, también debe considerar la transferencia de sesión. En sitios web grandes, generalmente habrá un clúster de servidor de sesión dedicado para guardar las sesiones de los usuarios. En este momento, la información de la sesión se almacena en la memoria y se utilizan algunos servicios de caché como Memcached. Ven y pon Sesión.

¿Piensa en cómo el servidor identifica a clientes específicos? En este momento, apareció Cookie. Cada vez que solicite HTTP, el cliente enviará la información de cookies correspondiente al servidor. De hecho, la mayoría de las aplicaciones usan cookies para implementar el seguimiento de la sesión. Al crear una sesión por primera vez, el servidor le dirá al cliente en el protocolo HTTP que se necesita registrar una ID de sesión en la cookie. La ID de sesión se envía al servidor y sé quién es usted. Alguien pregunta, ¿qué pasa si el navegador del cliente desactiva las cookies? En general, en este caso, se utiliza una técnica llamada reescritura de URL para el seguimiento de la sesión, es decir, cada interacción HTTP, se agrega un parámetro como sid = xxxxx a la URL, y el servidor reconoce al usuario en función de esto.

En realidad, las cookies se pueden usar en algunos escenarios fáciles de usar. Imagine que ha iniciado sesión en un sitio web una vez y no desea volver a ingresar su número de cuenta la próxima vez que inicie sesión. ¿Qué debe hacer? Esta información se puede escribir en una cookie. Cuando visita el sitio web, el script en la página del sitio web puede leer esta información y completará automáticamente el nombre de usuario para usted, lo que puede facilitarlo. Este es también el origen del nombre de la cookie, un poco de dulzura para el usuario.

En resumen: la sesión es una estructura de datos guardada en el servidor, utilizada para rastrear el estado del usuario, estos datos se pueden guardar en el clúster, la base de datos, el archivo; Cookie es un mecanismo para que el cliente guarde la información del usuario, utilizada para registrar Parte de la información del usuario también es una forma de implementar Session .

Pregunta 5: ¿sesión y cookie-talk sobre cómo funciona la sesión?

Answer5 :

De hecho, la sesión es un archivo que se asemeja a una tabla hash almacenada en el servidor. Contiene la información que necesitamos y puede extraerse de ella cuando la necesitemos. Similar a un mapa grande, las claves dentro almacenan el ID de sesión del usuario, y el usuario traerá este ID de sesión cuando envíe una solicitud al servidor. En este momento, se puede extraer el valor correspondiente.

Pregunta 6: sesión y cookie: ¿se puede usar la sesión si el cliente prohíbe las cookies?

Answer6 :

Generalmente, se considera que Cookie y Session son dos cosas separadas: Session adopta el esquema de mantener el estado en el lado del servidor, mientras que Cookie adopta el esquema de mantener el estado en el lado del cliente. Pero, ¿por qué no puede obtener la sesión si deshabilita las cookies? Debido a que la Sesión usa la ID de sesión para determinar la sesión del servidor correspondiente a la sesión actual, y la ID de sesión se pasa a través de la cookie, deshabilitar la cookie es equivalente a perder la ID de sesión, y no obtendrá la Sesión.

Suponiendo que el usuario usa la sesión cuando se cierra la cookie, es decir, sin usar la cookie para pasar la ID de sesión, puede usar los siguientes métodos para pasar la ID de sesión:

1. Establezca "session.use_trans_sid = 1" en el archivo de configuración php.ini, o abra la opción "--enable-trans-sid" al compilar, y deje que PHP transfiera automáticamente la ID de sesión a través de las páginas.

2. Pase manualmente el valor por URL y pase la ID de sesión ocultando el formulario.

3. Guarde la ID de sesión en forma de archivos de disco, bases de datos, etc., y llámela manualmente durante el proceso de páginas cruzadas.

Pregunta 7: struts y springmvc: ¿Cuál es la diferencia entre struts y springmvc?

Answer7 :

Nivel de intercepción, implementación de intercepción, solicitud de red, singleton, url, parámetro de recepción

Struts2 es una intercepción de nivel de clase; la intercepción de
Struts2 usa su propio mecanismo de interceptor, lo que da como resultado que el archivo de configuración de Struts2 sea más grande que SpringMVC;
cada solicitud creará una Acción, debe cargar toda la inyección de valor de atributo, el rendimiento es bajo;
no puede usar anotaciones o Otras formas de identificar el método al que pertenece, solo pueden diseñarse como casos múltiples;
una Acción corresponde a un contexto de solicitud-respuesta, un método en Acción corresponde a una url;
cuando recibe parámetros, se recibe a través del atributo de clase, porque los parámetros de atributo de clase son múltiples Compartido, por lo que todos los métodos de la clase comparten datos de solicitud-respuesta.

SpringMVC es una intercepción a nivel de método;
SpringMVC usa un método AOP independiente;
todas las solicitudes solo crearán un controlador, solo necesitan cargar una inyección de parámetros de método, el rendimiento es mayor;
puede usar anotaciones u otros métodos para identificar el método, diseñado como un solo Por ejemplo, el resultado del procesamiento finalmente se devuelve al marco a través de ModelMap;
un método corresponde a un contexto de solicitud-respuesta, y un método corresponde a una url;
al recibir parámetros, se recibe a través de los parámetros del método, porque los parámetros del método son únicos para cada método, por lo que cada método Datos exclusivos de solicitud-respuesta.

Marco subyacente y tiempo de inicialización

Filter (StrutsPrepareAndExecuteFilter) implementa la capa inferior de Struts2. El filtro se inicializa después de que se inicia el contenedor y el servicio deja
de fallar. Servlet implementa la capa inferior de SpringMVC (DispatcherServlet). El Servlet se inicializa cuando se llama al contenedor y el servicio se detiene.
Debido a que la inicialización del Servlet es anterior a la inicialización del Filtro, la llamada de SpringMVC es anterior a la llamada de Struts2.

Integración con Spring

Cuando Struts2 se integra en Spring, el Action Bean de Struts2 es el modo prototipo por defecto.
Cuando SpringMVC se integra en Spring, el Bean Controller de SpringMVC es Singleton de manera predeterminada, por lo que, de manera predeterminada, solo se creará un Controller para todas las solicitudes y, dado que no hay propiedades compartidas, es seguro para subprocesos. Si desea cambiar el alcance predeterminado , Es necesario agregar la anotación @Scope para modificar.

Como contenedor secundario de Spring, SpringMVC está perfectamente integrado con Spring, y la gestión y la seguridad de todo el proyecto también son superiores a Struts2.

Struts2 SpringMVC
Nivel de intercepción Intercepción de clase Método de intercepción
Implementación de intercepción Struts2 tiene su propio mecanismo de interceptor, por lo que el archivo de configuración es grande SpringMVC utiliza un método AOP independiente, por lo que el archivo de configuración es pequeño
Solicitud de red Cada solicitud creará una Acción, que debe cargarse con todas las inyecciones de atributos, con bajo rendimiento Todas las solicitudes solo crearán un controlador, solo necesitan cargar el método de inyección de parámetros una vez, el rendimiento es mayor
Singleton Las anotaciones u otros métodos no pueden usarse para identificar el método, y solo pueden diseñarse como casos múltiples Puede usar anotaciones u otros métodos para identificar el método, diseñarlo como un singleton y finalmente devolver el resultado del procesamiento al marco a través de ModelMap
url Una acción corresponde a un contexto de solicitud-respuesta, y un método en acción corresponde a una url Un método corresponde a un contexto de solicitud-respuesta, y un método corresponde a una url
Recibir parámetros Al recibir parámetros, reciba a través del atributo de clase, porque el parámetro de atributo de clase es compartido por múltiples métodos, por lo que todos los métodos en la clase comparten datos de solicitud-respuesta Al recibir parámetros, reciba a través de los parámetros del método, porque los parámetros del método son exclusivos de cada método, por lo que cada método solicita exclusivamente datos de respuesta
Marco subyacente y tiempo de inicialización Filtrar Servlet, porque la inicialización de Servlet es anterior a la inicialización de Filter, por lo que la llamada de SpringMVC es anterior a la llamada de Struts2
Integración de primavera Durante la integración de Spring, el Action Bean de Struts2 pasa al modo prototipo Prototype Durante la integración de Spring, el Bean Controller de Spring MVC pasa al modo Singleton Singleton y SpringMVC como contenedor secundario de Spring, y la integración de Spring es perfecta
207 artículos originales publicados · 80 elogiados · 120,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_36963950/article/details/105554813
Recomendado
Clasificación