¿Qué es SESSION en chino?
¿Qué es SESIÓN en chino?
1. El término sesión
En mi experiencia, el grado de abuso de la palabra sesión probablemente sea superado solo por transacción. Lo que es aún más interesante es que transacción y sesión son intercambiables. en ciertos contextos el significado es el mismo.
Sesión, muchas veces traducida como conversación en chino, su significado original hace referencia a una serie de acciones/mensajes que tienen un principio y un final. Por ejemplo, al realizar una llamada telefónica, la serie de procesos desde la recogida. levantar el teléfono para marcar para finalizar la llamada se puede llamar Es una sesión. A veces podemos ver palabras como "Durante una sesión del navegador,..." La palabra sesión aquí se usa en su significado original, que se refiere al período desde la apertura hasta el cierre de una ventana del navegador①. Lo más confuso es la frase “el usuario (cliente) durante una sesión”, que puede referirse a una serie de acciones por parte del usuario (generalmente una serie de acciones relacionadas con un propósito específico, como por ejemplo desde iniciar sesión hasta seleccionar Internet). El proceso de compra, desde la compra de productos hasta el pago y el cierre de sesión, a veces se denomina transacción. Sin embargo, a veces puede referirse simplemente a una conexión o puede referirse al significado ①. La diferencia solo puede determinarse por el contexto ②.
Sin embargo, cuando la palabra sesión se asocia con protocolos de red, a menudo implica dos significados: "orientado a la conexión" y/o "mantenimiento del estado". "Orientado a la conexión" se refiere a Antes de comunicarse, ambas partes. debe establecer un canal de comunicación, como hacer una llamada telefónica. La comunicación no puede comenzar hasta que la otra parte responda el teléfono. Por el contrario, escribir una carta requiere que no confirme la identidad de la otra parte cuando envíe la carta. o no, el canal de comunicación puede no estar establecido, pero para el remitente la comunicación ya ha comenzado. "Mantener el estado" significa que la parte que se comunica puede asociar una serie de mensajes para que los mensajes puedan depender unos de otros. Por ejemplo, un camarero puede reconocer a un antiguo cliente que vuelve y recordar que el cliente le debía un dólar a la tienda la última vez. . Ejemplos de esta categoría incluyen "una sesión TCP" o "una sesión POP3" ③.
En la era del intenso desarrollo de los servidores web, la semántica de sesión en el contexto del desarrollo web tiene un nuevo kit de expansión. Su significado se refiere a un tipo de semántica utilizada entre el cliente y el servidor. para mantener el estado durante el tiempo ④. A veces, la sesión también se usa para referirse a la estructura de almacenamiento de esta solución, como "almacenar xxx en la sesión"⑤. Dado que varios lenguajes utilizados para el desarrollo web brindan soporte para esta solución hasta cierto punto, la sesión también se usa para referirse a la solución de ese lenguaje en el contexto de un lenguaje específico, como a menudo Javax.servlet..HttpSession proporcionado en Java se denomina sesión⑥.
En vista de que esta confusión es irreversible, el uso de la palabra sesión en este artículo también tendrá diferentes significados según el contexto.
En este artículo, el "período de sesión del navegador" chino se usa para expresar el significado ①, el "mecanismo de sesión" se usa para expresar el significado ④, la "sesión" se usa para expresar el significado ⑤ , Y la "HttpSession" específica se utiliza para expresar el significado Significado ⑥
2. Protocolo HTTP y mantenimiento del estado
El protocolo HTTP en sí no tiene estado, lo que es coherente con el propósito original del protocolo HTTP. El cliente solo necesita enviar una solicitud al servidor. El servidor solicita descargar ciertos archivos. Ni el cliente ni el servidor necesitan registrar las acciones pasadas de cada uno. una máquina expendedora o una ordinaria (sin afiliación) La relación entre hipermercados es la misma.
Sin embargo, las personas inteligentes (¿o codiciosas?) pronto descubrieron que la Web sería más útil si pudiera proporcionar información dinámica generada bajo demanda, tal como agregar funcionalidad bajo demanda a la televisión por cable.
Por un lado, esta demanda obligó a HTML a agregar gradualmente comportamientos del lado del cliente, como formularios, scripts y DOM. Por otro lado, aparecieron especificaciones CGI en el lado del servidor para responder a las solicitudes dinámicas del cliente. El operador de transmisión también agregó funciones como carga y cookies. La función de las cookies es resolver los defectos sin estado del protocolo HTTP. En cuanto al mecanismo de sesión que surgió más tarde, es otra solución para mantener el estado entre el cliente y el servidor.
Usemos algunos ejemplos para describir las diferencias y conexiones entre las cookies y los mecanismos de sesión. Una cafetería que visité con frecuencia ofrecía una taza de café gratis por 5 tazas de café. Sin embargo, la posibilidad de consumir 5 tazas de café a la vez es muy pequeña. En este caso, se necesita alguna forma de registrar la cantidad consumida. determinado cliente. Imagine que en realidad no hay más que las siguientes opciones:
1. El dependiente de esta tienda es muy bueno y puede recordar la cantidad consumida por cada cliente tan pronto como el cliente entra a la cafetería. el empleado sabrá cómo tratarlo. Este enfoque está respaldado por el propio protocolo.
2. Emitir una tarjeta al cliente, en la que se registra el importe del consumo y suele tener fecha de caducidad. Cada vez que un cliente realiza una compra, si presenta esta tarjeta, la compra quedará vinculada a compras anteriores o futuras. Este enfoque consiste en mantener el estado en el lado del cliente.
3. Emita una tarjeta de membresía al cliente y no registre ninguna información excepto el número de la tarjeta. Cada vez que el cliente presente la tarjeta, el empleado encontrará el número de la tarjeta en el libro de registro de la tienda. añade alguna información de consumo. Este enfoque consiste en mantener el estado en el lado del servidor.
Dado que el protocolo HTTP no tiene estado y, por diversas razones, no queremos que tenga estado, las dos últimas soluciones se han convertido en opciones realistas. Específicamente, el mecanismo de cookies utiliza una solución que mantiene el estado en el lado del cliente, mientras que el mecanismo de sesión utiliza una solución que mantiene el estado en el lado del servidor. Al mismo tiempo, también hemos visto que dado que la solución para mantener el estado en el lado del servidor también necesita almacenar una identidad en el lado del cliente, es posible que el mecanismo de sesión deba utilizar el mecanismo de cookies para lograr el propósito de almacenar la identidad. pero en realidad tiene otras opciones.
3. Comprenda el mecanismo de cookies
El principio básico del mecanismo de cookies es tan simple como el ejemplo anterior, pero aún quedan varios problemas por resolver: cómo distribuir "tarjetas de membresía"; el contenido de la "Tarjeta de membresía" y cómo los clientes usan la "Tarjeta de membresía".
La distribución de cookies ortodoxa se implementa mediante la extensión del protocolo HTTP. El servidor agrega una línea especial de instrucciones al encabezado de respuesta HTTP para solicitar al navegador que genere la cookie correspondiente de acuerdo con las instrucciones. Sin embargo, los scripts puros del lado del cliente, como JavaScript o VBScript, también pueden generar cookies.
El uso de cookies se envía automáticamente al servidor en segundo plano por el navegador según ciertos principios. El navegador verifica todas las cookies almacenadas. Si el alcance declarado por una cookie es mayor o igual a la ubicación del recurso que se solicitará, la cookie se adjunta al encabezado de solicitud HTTP del recurso solicitado y se envía al servidor. Esto significa que la tarjeta de membresía de McDonald's solo se puede presentar en las tiendas McDonald's. Si una determinada sucursal también emite su propia tarjeta de membresía, al ingresar a la tienda, además de la tarjeta de membresía de McDonald's, también debe mostrar la membresía de esta tienda. Tarjeta.
El contenido de la cookie incluye principalmente: nombre, valor, tiempo de caducidad, ruta y dominio.
El dominio puede especificar un dominio determinado como .google., que es equivalente al signo principal de la tienda, como Procter & Gamble, o puede especificar una máquina específica bajo un dominio como google o. froogle.google., puedes usar Rejoice como comparación.
La ruta es la ruta URL que sigue al nombre de dominio, como / o /foo, etc., que se puede comparar con un determinado contador Rejoice.
La ruta y el dominio juntos constituyen el alcance de la cookie.
Si no se establece el tiempo de caducidad, significa que la vida útil de esta cookie es durante la sesión del navegador. Mientras la ventana del navegador esté cerrada, la cookie desaparecerá. Este tipo de cookie que dura mientras dura la sesión del navegador se denomina cookie de sesión. Las cookies de sesión generalmente no se almacenan en el disco duro sino en la memoria, aunque este comportamiento no está regulado por la especificación. Si se establece un tiempo de vencimiento, el navegador almacenará las cookies en el disco duro. Si cierra y vuelve a abrir el navegador, estas cookies seguirán siendo válidas hasta que se exceda el tiempo de vencimiento establecido.
Las cookies almacenadas en el disco duro se pueden compartir entre diferentes programas de navegador, como por ejemplo dos ventanas de IE. Cada navegador tiene diferentes formas de manejar las cookies almacenadas en la memoria. Para IE, la ventana abierta presionando Ctrl-N (o desde el menú de archivo) en una ventana abierta se puede *compartir con la ventana original. Sin embargo, un programa IE recién abierto que utiliza otros métodos no puede *compartir la ventana ya abierta. cookie; para Mozilla Firefox 0.8, todos los programas y pestañas pueden compartir la misma cookie. En términos generales, la ventana abierta usando window.open de JavaScript compartirá la cookie de memoria con la ventana original. El manejo de las cookies de sesión por parte del navegador, que sólo reconoce la cookie pero no a la persona, a menudo causa grandes problemas a los desarrolladores de aplicaciones web que utilizan el mecanismo de sesión.
El siguiente es un ejemplo del encabezado de respuesta de la configuración de cookies de Google
HTTP/1.1 302 Found
Ubicación: :google./intl/zh-CN /
Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-ene-2038 19:14:07 GMT; path =/; dominio=.google.
Tipo de contenido: texto/
Esto es parte del registro de comunicación HTTP capturado usando HTTPLook, el software HTTP Sniffer
El navegador envía cookies automáticamente al acceder nuevamente a los recursos de Google
Es fácil observar el valor de las cookies existentes usando Firefox
Es fácil de usar HTTPLook con Firefox Entiende cómo funcionan las cookies .
IE también se puede configurar para que pregunte antes de aceptar cookies.
Este es un cuadro de diálogo que solicita aceptar cookies.
4. Comprender el mecanismo de sesión
El mecanismo de sesión es un mecanismo del lado del servidor. El servidor utiliza una estructura similar a una tabla hash (o puede usar una tabla hash) para almacenar. Información.
Cuando el programa necesita establecer una sesión para la solicitud de un cliente, el servidor primero verifica si la solicitud del cliente ya contiene un identificador de sesión, llamado ID de sesión. Si ya contiene una identificación de sesión, significa que es una sesión. se ha establecido para este cliente antes, y el servidor recuperará esta sesión de acuerdo con la identificación de la sesión y la usará (si no se puede recuperar, puede crear una nueva. Si la solicitud del cliente no incluye la identificación de la sesión, entonces). esta sesión será utilizada por este cliente. Establezca una sesión y genere una identificación de sesión asociada con esta sesión. El valor de la identificación de sesión debe ser una cadena que no sea repetitiva ni fácil de encontrar patrones para la falsificación. en esta respuesta.
El método de almacenamiento de este ID de sesión puede utilizar cookies, de modo que durante el proceso de interacción, el navegador pueda mostrar automáticamente esta identificación al servidor de acuerdo con las reglas. Generalmente, el nombre de esta cookie es similar a SEEESIONID. Por ejemplo, para la cookie generada por weblogic, JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764, su nombre es JSESSIONID.
Dado que las cookies se pueden deshabilitar artificialmente, debe haber otros mecanismos para pasar la identificación de la sesión al servidor cuando las cookies están deshabilitadas. Una tecnología de uso frecuente se llama reescritura de URL, que consiste en agregar la identificación de la sesión directamente al final de la ruta de la URL. Hay dos formas de agregarla como información adicional a la ruta de la URL, en forma de: .. .../ xxx; jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
El otro es como una cadena de consulta agregada al final de la URL, en el formato: ...../xxx?jsessionid=ByOK3vjFD75aPnrF7C 2HmdnV6QZcE bzWoWiBYEnLerjQ99zWpBng !-145788764
No hay diferencia entre estos dos métodos para el usuario, pero la forma en que el servidor los maneja durante el análisis es diferente. Usar el primer método también es útil para distinguir la información de identificación de sesión de la normal. argumentos del programa.
Para mantener el estado durante toda la interacción, esta identificación de sesión debe incluirse después de cada ruta que el cliente pueda solicitar.
Otra técnica se llama formar campos ocultos. Es decir, el servidor modificará automáticamente el formulario y agregará un campo oculto para que la identificación de la sesión pueda devolverse al servidor cuando se envíe el formulario.
Por ejemplo, el siguiente formulario
lt; form name=testform action="/xxx"gt
lt; /formgt ;
se reescribirá en
antes de pasarlo al cliente lt; form name=testform action="/xxx"gt; tipo de entrada=nombre oculto=jsessionid value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"gt;
lt;tipo de entrada=textgt;
lt;/formgt;
Esta tecnología rara vez se usa ahora. El muy antiguo iPla6 (el predecesor del servidor de aplicaciones SunONE) con el que el autor ha entrado en contacto utiliza esta tecnología.
De hecho, esta técnica se puede sustituir simplemente aplicando la reescritura de URL a la acción.
Cuando hablamos del mecanismo de sesión, a menudo escuchamos el malentendido de que "mientras cierres el navegador, la sesión desaparece". De hecho, puede imaginarse el ejemplo de una tarjeta de membresía, a menos que el cliente solicite activamente a la tienda que cancele la tarjeta, la tienda nunca borrará la información del cliente fácilmente. Lo mismo ocurre con las sesiones, a menos que el programa notifique al servidor que elimine una sesión, el servidor la mantendrá. El programa generalmente envía un comando para eliminar la sesión cuando el usuario cierra la sesión. Sin embargo, el navegador nunca notifica activamente al servidor que está a punto de cerrarse antes de cerrarse, por lo que el servidor no tiene posibilidad de saber que el navegador se ha cerrado. La razón de esta ilusión es que la mayoría de los mecanismos de sesión utilizan cookies de sesión para almacenar la identificación de la sesión. , y esta identificación de sesión desaparece después de cerrar el navegador y no se puede encontrar la sesión original al conectarse nuevamente al servidor. Si la cookie configurada por el servidor se almacena en el disco duro, o se utiliza algún método para reescribir el encabezado de solicitud HTTP enviado por el navegador y enviar la ID de sesión original al servidor, la sesión original aún se puede encontrar cuando el navegador está abrió de nuevo.
Precisamente porque cerrar el navegador no provocará que se elimine la sesión, lo que obligará al servidor a establecer un tiempo de caducidad para la sesión. Cuando el tiempo desde que el cliente utilizó la sesión por última vez supera este tiempo de caducidad, el servidor. Se puede considerar que el cliente ha detenido sus actividades y la sesión se eliminará para ahorrar espacio de almacenamiento.
5. Comprenda javax.servlet..HttpSession
HttpSession es la especificación de implementación de la plataforma Java para el mecanismo de sesión, porque es solo una interfaz, específica de lo que proporciona cada servidor de aplicaciones web. Además de admitir la especificación, todavía habrá algunas diferencias sutiles que no se especifican en la especificación. Aquí utilizamos Weblogic Server8.1 de BEA como ejemplo para demostrarlo.
En primer lugar, Weblogic Server proporciona una serie de parámetros para controlar la implementación de su HttpSession, incluida la opción de cambio para usar cookies, la opción de cambio para usar la reescritura de URL, la configuración de persistencia de la sesión y el tiempo de vencimiento de la sesión. , así como varias configuraciones para las cookies, como la configuración del nombre de la cookie, la ruta, el dominio, la duración de la cookie, etc.
En circunstancias normales, las sesiones se almacenan en la memoria. Cuando el programa del servidor se detiene o reinicia, la sesión en la memoria también se borrará. Si se configura la función de persistencia de la sesión, el servidor se guardará. la sesión al disco duro cuando se reinicia el programa del servidor o la información se puede utilizar nuevamente, los métodos de sostenibilidad soportados por Weblogic Server incluyen almacenamiento de archivos, bases de datos, cookies del cliente y replicación.
Estrictamente hablando, la replicación no se considera almacenamiento persistente, porque la sesión en realidad todavía se almacena en la memoria, pero la misma información se copia al programa del servidor en cada clúster, de modo que incluso si un servidor Incluso si el El programa deja de funcionar, aún puede obtener sesiones de otros programas.
La configuración de la duración de la cookie afectará si la cookie generada por el navegador es una cookie de sesión. El valor predeterminado es utilizar cookies de sesión. Aquellos que estén interesados pueden usarlo para probar el malentendido que mencionamos en la Sección 4.
La ruta de las cookies es una opción muy importante para las aplicaciones web. La forma predeterminada en que Weblogic Server maneja esta opción lo hace significativamente diferente de otros servidores. Lo discutiremos más tarde.
Referencia para la configuración de la sesión [5]: e-docs.bea./wls/docs70/webapp/weblogic_xml.#1036869
6. Preguntas frecuentes sobre HttpSession
(En esta sección, el significado de sesión es una mezcla de ⑤ y ⑥)
1. ¿Cuándo se estableció la sesión?
Un malentendido común es que la sesión tiene un cliente. Se crea cuando el cliente accede a él. Sin embargo, el hecho es que no se crea hasta que un programa del lado del servidor llama a una declaración como HttpServletRequest.getSession(true). Tenga en cuenta que si JSP no lo muestra, use lt; @page session="false"gt; para cerrar la sesión, el archivo JSP agregará automáticamente dicha declaración HttpSession session = HttpServletRequest.getSession(true) cuando se compila en un Servlet. objeto de sesión en JSP.
Dado que la sesión consume recursos de memoria, si no planea utilizar la sesión, debe cerrarla en todos los JSP.
2. ¿Cuándo se elimina la sesión?
Según la discusión anterior, la sesión se elimina en las siguientes circunstancias: a. El programa llama a HttpSession.invalidate(); La distancia desde la última recopilación El intervalo de tiempo de ID de sesión enviado al cliente excede la configuración de tiempo de espera de la sesión o c. El programa del servidor se detiene (sesión no persistente)
3. Cómo eliminar la sesión; cuando el navegador está cerrado
Estrictamente hablando, esto no se puede hacer. Una forma de hacer un pequeño esfuerzo es utilizar el código javascript window.oncolose en todas las páginas del cliente para monitorear la acción de cierre del navegador y luego enviar una solicitud al servidor para eliminar la sesión. Pero todavía no hay nada que puedas hacer con métodos no convencionales, como fallas del navegador o eliminación forzada de programas.
4. ¿Cuál es el punto de tener un HttpSessionListener?
Puede crear un oyente de este tipo para monitorear la creación y destrucción de sesiones, de modo que pueda dar algunas respuestas cuando ocurran tales eventos. . trabajar.
Tenga en cuenta que las acciones de creación y destrucción de la sesión activan al oyente, y no al revés. Los oyentes similares relacionados con HttpSession incluyen HttpSessionBindingListener, HttpSessionActivationListener y HttpSessionAttributeListener.
5. ¿Los objetos almacenados en la sesión deben ser serializables?
No es necesario. Se requiere que los objetos sean serializables solo para que la sesión pueda replicarse en el clúster o almacenarse de manera persistente o el servidor pueda intercambiar temporalmente la sesión fuera de la memoria cuando sea necesario. Colocar un objeto no serializable en una sesión de Weblogic Server generará una advertencia en la consola. En cierta versión de iPla que he usado, si hay objetos no serializables en la sesión, habrá una excepción cuando se destruya la sesión, lo cual es muy extraño.
6. Cómo abordar correctamente la posibilidad de que el cliente prohíba las cookies
Utilice la reescritura de URL para todas las URL, incluidos hipervínculos, acciones de formulario y URL redirigidas; consulte [6 ]
para más detalles: e-docs.bea./wls/docs70/webapp/sessions.#100770
7. Abra dos ventanas del navegador para acceder a la aplicación. ¿Se realizará la misma sesión o ¿Se pueden usar diferentes sesiones?
Consulte la discusión sobre cookies en la tercera sección. Para las sesiones, solo se reconoce la identificación pero no la persona. Por lo tanto, diferentes navegadores, diferentes métodos de apertura de ventanas y diferentes formas. Las cookies que se almacenen tendrán un impacto en la respuesta a esta pregunta.
8. Cómo evitar la confusión de sesiones causada por los usuarios que abren dos ventanas del navegador
Este problema es similar a evitar múltiples envíos de un formulario. Puede configurar el comando Tarjetas del cliente para resolverlo. Es decir, el servidor genera una ID diferente y la devuelve al cliente cada vez, y la almacena en la sesión. Cuando el cliente envía el formulario, también debe devolver esta ID al servidor. el valor almacenado en la sesión es consistente. Si es inconsistente, significa que esta operación se ha enviado. Puede consultar la sección sobre el modelo de capa de presentación en "Patrones principales J2EE". Cabe señalar que para las ventanas abiertas usando javascript window.open, esta ID generalmente no se establece o se usa una ID separada, en caso de que no se pueda operar la ventana principal, se recomienda no realizar modificaciones en la ventana abierta por ventana. .open, de modo que no se requiere ninguna configuración.
9. ¿Por qué necesita llamar a session.setValue nuevamente después de cambiar el valor de la sesión en Weblogic Server?
Esta acción se realiza principalmente para solicitar el valor en la sesión de Weblogic Server en un entorno de clúster. Se ha producido un cambio y es necesario copiar el nuevo valor de la sesión a otros programas del servidor.
10. Por qué desapareció la sesión
Excluyendo el fallo normal de la sesión, la posibilidad del servidor en sí debería ser mínima. Aunque el autor agregó algunos parches a la versión Solaris de iPla6SP1. Lo he encontrado antes; la posibilidad de los complementos del navegador es la segunda, y el autor también encontró problemas causados por los complementos 3721, en teoría, los firewalls o servidores proxy también pueden tener problemas en el procesamiento de cookies.
La mayoría de las razones de este problema son errores de programa. La causa más común es acceder a otra aplicación desde una aplicación. Discutimos este tema en la siguiente sección.
7. Compartir sesiones entre aplicaciones
A menudo ocurre que un proyecto grande se divide en varios proyectos pequeños para su desarrollo. Para evitar interferir entre sí, cada proyecto. Se requiere desarrollar un proyecto pequeño como una aplicación web separada, pero al final, de repente descubro que es necesario compartir cierta información entre varios proyectos pequeños, o quiero usar sesiones para implementar SSO (inicio de sesión único). ) y almacenar los inicios de sesión en sesiones. Para obtener información del usuario, el requisito más natural es que las aplicaciones puedan acceder a las sesiones de las demás.
Sin embargo, según la especificación del Servlet, el alcance de la sesión debe limitarse a la aplicación actual y diferentes aplicaciones no pueden acceder a las sesiones de las demás. En realidad, cada servidor de aplicaciones cumple con esta especificación, pero los detalles de implementación pueden ser diferentes, por lo que los métodos para resolver el intercambio de sesiones entre aplicaciones también son diferentes.
Primero, echemos un vistazo a cómo Tomcat implementa el aislamiento de sesiones entre aplicaciones web. A juzgar por las rutas de cookies establecidas por Tomcat, establece diferentes rutas de cookies para diferentes aplicaciones. diferentes aplicaciones son diferentes, por lo que incluso si se accede a diferentes aplicaciones en la misma ventana del navegador, los ID de sesión enviados al servidor pueden ser diferentes.
Con base en esta característica, podemos especular que la estructura de memoria de la sesión en Tomcat es aproximadamente la siguiente.
El iPla que he usado antes también usa el mismo método. Se estima que no habrá mucha diferencia entre SunONE e iPla. Para este tipo de servidor, la solución es muy sencilla y no es difícil implementarla en la práctica. Permita que todas las aplicaciones compartan una ID de sesión o permita que las aplicaciones obtengan las ID de sesión de otras aplicaciones.
Existe una forma muy sencilla de compartir una identificación de sesión en iPla, que es establecer la ruta de la cookie de cada aplicación en / (en realidad debería ser /NASApp, para aplicaciones Se dice que su función es equivalente al de una raíz).
lt;session-infogt;
lt;pathgt;/NASApplt;/pathgt;
lt;/session-infogt;
Cabe señalar que operar una sesión compartida debe seguir algunas convenciones de programación, como agregar el prefijo de la aplicación delante del nombre del atributo de la sesión, de modo que setAttribute("name", "neo") se convierta en setAttribute( "app1. name", "neo") para evitar que los conflictos de espacios de nombres se sobrescriban entre sí.
No existe una opción tan conveniente en Tomcat. En Tomcat versión 3, también podemos tener algunos medios para disfrutar de la sesión. Para las versiones 4 y superiores de Tomcat, el autor aún no ha encontrado una manera sencilla. Sólo puedes confiar en el poder de un tercero, como el uso de archivos, bases de datos, JMS o cookies de cliente, parámetros de URL o campos ocultos.
Echemos otro vistazo a cómo Weblogic Server maneja las sesiones.
En la captura de pantalla, puede ver que la ruta de cookies establecida por Weblogic Server para todas las aplicaciones es /. ¿Esto significa que puede disfrutar de la sesión de forma predeterminada en Weblogic Server? Sin embargo, un pequeño experimento puede demostrar que incluso si diferentes aplicaciones usan la misma sesión, cada aplicación solo puede acceder a aquellas propiedades que ha establecido. Esto muestra que la estructura de memoria de la sesión en Weblogic Server puede ser la siguiente
Para tal estructura, debería ser imposible resolver el problema de compartir sesiones en el propio mecanismo de sesión. Además de depender del poder de terceros, como el uso de archivos, bases de datos, JMS o cookies de cliente, parámetros de URL o campos ocultos, existe una forma más conveniente de colocar la sesión de una aplicación en el ServletContext. Puede obtener una referencia a la aplicación anterior desde ServletContext. El código de muestra es el siguiente,
Aplicación A
context.setAttribute("appA", session);
Aplicación B
contextA = context.getContext("/appA");
HttpSession sessionA = (HttpSession)contextA.getAttribute("appA");
Vale la pena señalar que este uso no portable, porque según el JavaDoc de ServletContext, el servidor de aplicaciones puede devolver un valor nulo para context.getContext("/appA"); por razones de seguridad, el enfoque anterior se adopta en Weblogic Server 8.1.
Entonces, ¿por qué Weblogic Server establece las rutas de cookies de todas las aplicaciones en /? Resulta que es para SSO. Cualquier aplicación que comparta esta sesión puede compartir la información de autenticación. Un experimento simple puede demostrar esto. Modifique el descriptor weblogic.xml de la aplicación que inicia sesión primero y cambie la ruta de la cookie a /appA. Para acceder a otra aplicación, deberá iniciar sesión nuevamente. Incluso si es al revés, acceda a la cookie. ruta primero. Para la aplicación de /, si accede nuevamente a la ruta modificada, aunque ya no se le solicitará que inicie sesión, la información del usuario que inició sesión también se perderá. Tenga en cuenta que el método de autenticación debe usar FORM al realizar este experimento, porque los navegadores y servidores web tienen otros métodos de procesamiento para la autenticación básica y la autenticación de la segunda solicitud no se implementa a través de la sesión. Consulte la sección [7] 14.8 Autorización para obtener más detalles. Puede modificar el programa de muestra adjunto para realizar estos experimentos.
8. Resumen
El mecanismo de sesión en sí no es complicado, pero su flexibilidad de implementación y configuración hace que la situación específica sea compleja y cambiante. Esto también requiere que no podamos considerar simplemente una determinada experiencia o la experiencia de un determinado navegador o servidor como una experiencia de aplicación universal, sino que siempre debemos analizar la situación específica en detalle.
¿Cuál es el tema del 11º período de sesiones de la UNCTAD traducido al chino?
Debería ser el tema.
La 11ª Conferencia de las Naciones Unidas sobre Comercio y Desarrollo) ¿Cuál es? el tema START en chino?
inicio: ¿inglés? [stɑ?t]; [stɑrt]
significado chino:
inicio;
vi.partir
n. inicio; punto de partida Qué es pointtoyourears en chino
apunta a tus oídos
Señala tu oreja, ¿qué es ASA en chino?
La resina modificada (ASA) es un tipo de resina compuesta de acrilonitrilo (acrilonitrilo), estireno (Estireno) y caucho acrílico (Acrilato). El polímero ternario desarrollado con éxito en la década de 1970 es una resina modificada por impacto. ¿Qué es viernes en chino
viernes
[inglés][?fra?de?][americano][?fra?de?]
n.
p>Viernes, viernes, viernes; sirviente de Robinson en "Robinson Crusoe"; [nombre] [apellido en inglés] Freddy puede ser la traducción al inglés de un nombre alemán o judío; p>
Plural : viernes
Ejemplos bilingües
1
No puedo terminar este trabajo para el viernesamp; esperas demasiado de mí.
Gané; No podré terminar este trabajo antes del viernes y esperas demasiado de mí. ¿Qué son las uvas en chino?
¿Qué son las uvas Kit en chino?
kit[inglés] [kit] pronunciación [US] [k?t] pronunciación
definición del diccionario
n. , Componente coincidente
vt. Para equipar a alguien (para una actividad específica) paraguas ¿Qué es paraguas en chino?
paraguas [?m'brel?]
Básico traducción
n. Paraguas
Definición de Internet
Paraguas: Paraguas|Paraguas, objeto con forma de paraguas|Paraguas
Fondo paraguas: Tal as El plan es fondo paraguas|fondo paraguas|fondo paraguas
paraguas embudo:cubierta de chimenea|cubierta superior de chimenea|tapa de chimenea fallandhurtyourself¿Qué es fallandhurtyourself en chino?
caer y lastimarse
p>Me caí y me lastimé