Notas de estudio de sesiones y cookies de [JavaWeb]

Tabla de contenido

Principio de ejecución:

Métodos relacionados:

Características de las cookies:

sesión

Uso básico:

Principio de ejecución:

Ciclo de vida de la sesión:

Cookie y resumen de sesión:


      El blog anterior compartió el aprendizaje sobre solicitud y respuesta, y hoy presentaré el aprendizaje sobre cookies y sesión.

      La cookie y la sesión son un tipo de tecnología de conversación, entonces, ¿qué es la tecnología de conversación? En la vida diaria, el proceso de hacer y responder preguntas, desde hacer una llamada hasta colgar, es una conversación. En la arquitectura B / S, La sesión se establece desde la primera vez que el navegador envía una solicitud al servidor hasta que una de las partes se desconecta y la sesión finaliza. Una vez más, la sesión contiene múltiples solicitudes. 

      cookie: tecnología de sesión del lado del navegador (los datos se guardan en el navegador)

      sesión: tecnología de sesión del lado del servidor (los datos se almacenan en el servidor)

Galleta

    La cookie guarda los datos generados en el navegador y los crea en el servidor. Es un formato de clave / valor. Se escribe en el navegador a través de la respuesta. La siguiente solicitud se utiliza para llevar la cookie al servidor de acuerdo con una regla.

Principio de ejecución:

Métodos relacionados:

Constructor:

nueva cookie (nombre de cadena, valor de cadena)

Escriba de nuevo al método del navegador:

response.addCookie (Cookie c)

Obtener cookies:

request.getCookies ()

método de cookies:

-----> getName (): Obtiene el nombre de la cookie

-----> getValue (): Obtiene el valor de la cookie

Nota:

        1) La cookie de respuesta se devuelve al navegador a través del encabezado de respuesta de set-cookie

        2) La cookie solicitada se envía al servidor a través del encabezado de solicitud de cookies

Caso de código:

public class OneServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //有数据产生 需要被保存
        Cookie cookie = new Cookie("ds" , "James");

        //保存数据 将cookie交给响应对象 响应给了浏览器
        response.addCookie( cookie );
    }
}
public class TwoServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //根据请求获得cookie数据
        Cookie[] cookies = request.getCookies();
        //判断cookie
        if(cookies != null){
            //遍历
            for (Cookie cookie : cookies) {
                //获得cookie的名称 和 cookie值部分
                System.out.println(cookie.getName() +"====" + cookie.getValue());
            }
        }else{
            System.out.println("暂时还没有获取到cookie的信息");
        }
    }
}

       Cookie de nivel de sesión: cuando el navegador abre el servidor al navegador se cierra, los datos durante la sesión se guardan al final de la sesión y la cookie desaparece

    API

Nombre del método efecto
setMaxAge (int segundos) Establecer la vida útil de la cookie en el navegador, establecer el nivel de persistencia de la cookie
setPath ("Ruta") Establezca la ruta de la cookie, especifique qué cookies llevar cuando visite la página setPath ("/")

setMaxAge (int segundos)

  • Si es un número entero positivo, establezca el tiempo de supervivencia especificado
  • Si es negativo, la cookie se destruirá cuando se cierre el navegador.
  • Si es 0, destruya esta cookie inmediatamente (la ruta es consistente)
public class OneAPIServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //有数据产生 需要被保存
        Cookie cookie = new Cookie("dzd" , "小强3333");

        //设置cookie的存活时间(1天)
        cookie.setMaxAge(60 * 60 * 24 * 7);//单位秒
    }
}

    Establecer problema de ruta:

     1. La ruta predeterminada de la cookie es: la ruta del servlet accedido, comenzando desde la ruta de la aplicación del proyecto y terminando con la última "/".

Por ejemplo: la ruta de acceso es: "/ day08_cookie / demo01", la ruta predeterminada de la cookie es / day08_cookie       

La ruta de acceso es "/ day08_cookie / a / demo1", la ruta predeterminada de la cookie es / day08_cookie / a

    2.Cuando visitamos la URL que contiene esta ruta de cookies, llevaremos esta cookie, si no la contiene, no la llevaremos.

Por ejemplo, {las siguientes tres rutas}:

  • La ruta de cookie1: / day08_cookie / a / b

  • La ruta de cookie2: / day08_cookie / a

  • La ruta de cookie3: / day08_cookie

Cuando visitamos la siguiente ruta, el número de cookies transportadas es diferente:

 

  1. Cuando la ruta de acceso sea http: //localhost/day08_cookie/a/b/1.html , se llevarán 3 cookies
  2. Cuando la ruta de acceso sea http: //localhost/day08_cookie/a/1.html , se llevarán las cookies 2 y 3
  3. La ruta de acceso es http: //localhost/day08_cookie/1.html time, llevará las tres primeras Cooki E

Características de las cookies:

  • El siguiente nombre y ruta de un navegador solo puede determinar una cookie. Si la cookie con el mismo nombre se vuelve a escribir, la cookie anterior se sobrescribirá.
  • Si el nombre o la ruta no son razonables, la cookie puede existir al mismo tiempo
  • Las cookies no pueden ser entre navegadores
  • El valor de la cookie se puede almacenar en chino (tomcat8), pero los espacios "," y ";" no se pueden almacenar
  1. Si existen estos símbolos especiales, primero debemos codificar el valor y luego decodificar la codificación especificada después de obtener el valor.
  2. Se recomienda utilizar URLEncode.encode ("cadena a codificar", "utf-8") al codificar
  3. Se recomienda utilizar URLDecode.decode ("cadena a decodificar", "UTF-8") al decodificar
public class TeShu_Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String s = "我爱你,中 国;";
        //编码
        String s_8 = URLEncoder.encode(s, "utf-8");
        Cookie cookie = new Cookie("demo1", s_8);
        response.addCookie(cookie);

        //第一次获取不到此cookie的,但是第一次之后再访问就可以获取了
        Cookie[] cookies = request.getCookies();
        if (cookies!=null&&cookies.length>0) {
            for (Cookie c : cookies) {
                if ("demo1".equals(c.getName())) {
                    String value = c.getValue();
                    //解码
                    value = URLDecoder.decode(value,"utf-8");
                    System.out.println(value);
                }
            }
        }
    }
}

sesión

    Tecnología de sesión del lado del servidor: comparta datos entre varias solicitudes en una sesión y guarde los datos en el lado del servidor

    Proceso de trabajo:

    Cuando el navegador accede al servidor, el servidor verificará si el navegador lleva la identificación (JSESSIONID)

     De lo contrario, el servidor creará un espacio en el servidor y luego manipulará los datos, el servidor devolverá la identificación (JSESSIONID) de este control al navegador en respuesta

     Si se lleva, el servidor obtiene este id y utiliza el id para averiguar si existe este espacio en la memoria (si existe, los datos se almacenarán directamente en este control. Si no se encuentra, el servidor creará un espacio en el servidor, manipulará los datos y el servidor La identificación de este espacio (JSESSIONID) se devolverá al navegador en respuesta)

Uso básico:

Métodos comunes:

setAttribute (clave de cadena, valor de objeto) Establecer valor de atributo

getAttribute (clave de cadena) Obtiene el valor del atributo

removeAttribute (clave de cadena) eliminar valor de atributo

Principio de ejecución:

Caso de código:

public class SessionOneServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得session(第一次调用会创建session对象)
        HttpSession session = request.getSession();

        System.out.println(session);
        System.out.println(session.getId());//手动获得session的id
        System.out.println(session.isNew());//是不是新创建的

        session.setAttribute("ds","James");
    }
}
public class SessionTwoServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得session(第一次调用会创建session对象)
        HttpSession session = request.getSession();

        System.out.println(session);
        System.out.println(session.getId());//手动获得session的id
        System.out.println(session.isNew());//是不是新创建的
        System.out.println( session.getAttribute("ds")  );
    }
}

Ciclo de vida de la sesión:

Creación: de forma predeterminada, el primer acceso a reqeust.getSession () crea

destruir:

  • En el servidor Tomcat predeterminado, se destruirá en más de 30 minutos (una sesión se destruirá automáticamente si no se realiza ninguna operación en 30 minutos)
  • Llame manualmente al método invalidar para destruir
  • Destruya el servidor si se apaga de forma anormal (bloqueo, pantalla azul)

     El servidor se apaga normalmente: los datos de la sesión en la memoria se serializan en el disco local (en el archivo de sesiones en trabajo), el servidor se inicia nuevamente para cargar el archivo de sesión en la memoria, y los datos se cargan de nuevo y los datos no desaparecen

Cookie y resumen de sesión:

  • Cookie: el almacenamiento de datos vuelve al navegador, los datos almacenados en la cookie tienen prioridad y la cookie no es segura
  • Sesión: los datos se almacenan en el servidor y la sesión almacena datos ilimitados (dependiendo del tamaño del servidor, la sesión es relativamente segura)

Supongo que te gusta

Origin blog.csdn.net/weixin_43267344/article/details/108652969
Recomendado
Clasificación