Las cookies y la sesión están destinadas a mantener el estado de acceso al usuario. Por un lado, es para facilitar la implementación comercial y, por otro lado, es simplificar la programación del servidor y mejorar el rendimiento de acceso. Las cookies son tecnología del cliente (es decir, navegador). Después de configurar cookies, cada vez que visite el servidor, las cookies se traerán a la solicitud; La sesión es la tecnología del servidor, que almacena información de acceso de usuario en el servidor.
Use cookies para entregar información. A medida que aumenta el número de cookies y aumenta el número de visitas, el ancho de banda que consume se volverá cada vez más grande; Al usar Session para guardar información, la mayor debilidad es que no es fácil compartir entre múltiples servidores.
1 galletas
En términos de Layman, cuando un usuario accede al servidor que usa HTTP, el servidor devolverá alguna información de par de valores clave al navegador del cliente y agregará algunas restricciones a estos datos. Cuando el usuario cumple con las restricciones, la próxima vez que el usuario acceda al servidor, traerá el conjunto de información del par de valores clave de cookies previamente. Cuando el usuario ingresa a una URL, el navegador busca las cookies asociadas con la URL en el disco duro local. Si la cookie existe, el navegador envía la cookie a su sitio junto con la solicitud de página.
Las cookies están asociadas con sitios web, no con páginas específicas. Por lo tanto, independientemente de qué página del sitio el navegador y el servidor intercambiarán información de cookies. Cuando un usuario visita diferentes sitios, cada sitio puede enviar una cookie al navegador del usuario; El navegador almacenará todas las galletas por separado.
Artículo de atributo de cookies
Actualmente hay 2 versiones de Cookies, Versión 0 y Versión 1. Tienen 2 tipos de identificadores de encabezado de respuesta, a saber, "Set-Cookie" y "Set-Cookie2".
Valor de atributo de cookie 0
Valor de atributo de cookie 1
Ejemplo del uso de cookies en Java
@OverridePublic Void doget (httpservletRequest solicitud, httpServletResponse Respuesta) lanza ioexception {respuesta.setContentType ("text/html; charset = UTF-8"); printWriter out = respuesta.getwriter (); Cookie [] Cookies = request.getCookies (); String name = getCoOdie (nombre "); nombre"); nombre "). == null) {Response.addcookie (new Cookie ("Name", "Luoxn28"));} else {System.out.println (name);} out.println ("Hello World");} public static String getCoodie (Cookie [] Cookies, String Key) {if (Cookies! (cookie.getName (). Equals (Key)) {return cookie.getValue ();}}} return null;}Algunas precauciones para usar cookies (tomar el uso de Java como ejemplo)
• El nombre y el valor de la cookie creada no pueden ser caracteres no assic. Si es chino, se puede codificar a través de rrlencoder, de lo contrario, se lanzará una excepción java.lang.illegalargumentException.
• Cuando aparecen múltiples nombres y valores de valor, en realidad están en el mismo encabezado de "cookie".
• El valor de las cookies puede ahorrar signos de puntuación distintos de ";". Pero los caracteres chinos no se pueden salvar. La basura aparecerá al ahorrar caracteres chinos.
Algunas restricciones a las cookies
Una cookie es un campo en el encabezado HTTP. HTTP en sí no tiene restricciones en este campo, pero las cookies finalmente se almacenan en el navegador. Diferentes navegadores tienen algunas restricciones en el almacenamiento de cookies, como se muestra en la siguiente tabla:
Si intenta almacenar más galletas, las galletas más antiguas se descartarán.
2 sesión
La sesión resuelve el problema de que cuando aumenta el número de cookies, aumenta la cantidad de transmisión de datos entre el cliente y el servidor. Cuando el mismo cliente interactúa con el servidor, no necesita dejar de vuelta todos los valores de cookies cada vez, pero solo se devuelve un valor de ID. Esta ID se genera cuando el cliente accede al servidor por primera vez, y cada cliente es único. Esta identificación suele ser una cookie cuyo nombre es JSesionid.
¿Cómo funciona la sesión en función de las cookies? Puede basarse en el parámetro de ruta de URL; También se puede basar en cookies. Si el logotipo de las cookies en el contenedor de contexto no se modifica, también se admite de forma predeterminada. Cuando el navegador no admite la función de cookie, el navegador reescribirá el SessionCookiename del usuario al parámetro URL solicitado por el usuario. Su método de entrega es como /rath /servlet; name = xxx; name2 = xxx2? Name3 = xxx3. Sessioncookiename Si el elemento de configuración de la configuración de session está configurado en Web.xml, el atributo de nombre debajo del cookie-config es el valor de este sessioncookiename. Si no se configura el elemento de configuración de ConfiG de sesión, el sessioncookienamejiushi predeterminado "JSesionID". Tenga en cuenta que las cookies asociadas con la sesión no son diferentes de otras cookies. Si el cliente también admite cookies, Tomcat aún analizará la ID de sesión en la cookie y sobrescribirá la ID de sesión en la URL.
Cómo funciona la sesión
Con la ID de sesión, el servidor puede crear un objeto HTTPSSIONSIT. La primera vez que llama al método request.getSession (). Si no hay un objeto Httpsession correspondiente, se creará un nuevo objeto y se agregará al contenedor de sesiones de org.apache.catalina.manager se guardará. Administrar Guardar todos los ciclos de vida de la sesión, la sesión expira y se recicla, el servidor está cerrado y la sesión se está serializada en el disco. Tenga en cuenta que un cliente corresponde a un objeto de sesión, que guarda el valor de la sesión que creamos.
El método de estándares llamado por el método request.getSession () siempre existirá, incluso si la sesión asociada con este cliente ha expirado. Si expira, se creará uno nuevo, pero el valor de sesión establecido previamente se perderá.
3 Comparación de cookies y seguridad de la sesión
Las cookies pasan los datos guardados del cliente al servidor a través del encabezado HTTP y luego del servidor al cliente. Todos los datos se guardan en el navegador del cliente. Se puede acceder a estos datos e incluso se pueden agregar y modificar cookies a través de complementos. La seguridad de todas las cookies es relativamente pobre. En comparación, la sesión guarda datos en el lado del servidor, que es mucho más seguro. Solo requiere una cookie para devolver una identificación de cookie, por lo que la sesión es más adecuada para guardar la privacidad del usuario y los datos importantes.
Marco de sesión distribuido
No es factible el uso de aplicaciones de Internet, el uso de cookies y sesiones no es factible, porque el uso de cookies puede resolver bien el problema de implementación distribuido de las aplicaciones. Un gran sistema de aplicación de Internet tiene cientos de máquinas, y muchos sistemas de aplicaciones diferentes funcionan juntos. Dado que las cookies almacenan datos en el navegador del usuario, cada vez que el usuario visita, los datos se traerán de vuelta al servidor, que resuelve el problema de la inconsistencia de las cookies causadas por las mismas solicitudes del usuario que se procesan en diferentes servidores.
Dado que la aplicación es un clúster, la sesión no se puede guardar en la memoria de cada servidor. Si cada servidor tiene cientos de miles de usuarios de acceso, la memoria del servidor no puede ser acomodada. Incluso si se puede acomodar, no puede garantizar que la sesión se sincronice con otros servidores. Por lo tanto, compartir estas sesiones requiere guardarlas en un caché distribuido especial, que se puede leer y escribir en cualquier momento. El rendimiento debe ser lo suficientemente bueno como para cumplir con los requisitos, como Memcache/Redis o el Tair de marco distribuido de código abierto de Taobao.
Pregunta de envío de formulario repetido
Hay muchos lugares en el sitio web que tienen presentaciones repetidas. Para evitar los envíos repetidos de formularios, es necesario identificar cada solicitud de acceso del usuario, de modo que cada solicitud de acceso sea exclusiva del servidor. Para identificar cada solicitud del usuario, se puede agregar un elemento de formulario oculto al campo de formulario solicitado por el usuario, y su valor es un token único, como:
<Form ID = "Form" Method = "Post"> ... <input type = Hidden name = "token" value = "xxx"/> </form>
Se genera un token único cuando el usuario solicita el formulario y lo establece en la sesión del usuario. Cuando el usuario envía, verifica si el token es consistente con el token guardado en la sesión. Si es consistente, significa que no hay sumisión repetida. Al mismo tiempo, el token en la sesión se actualiza a un nuevo valor token; De lo contrario, el token enviado por el usuario ya no es el token legal de la solicitud actual, y la presentación falla.
Lo anterior son las cosas sobre las cookies y las sesiones en Java que el editor le presentó. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!