Tecnología de sesión JavaWeb

 

Tecnología conversacional

    1.  Sesión: una sesión contiene múltiples solicitudes y respuestas.

           Una sesión: el navegador envía una solicitud al recurso del servidor por primera vez y la sesión se establece hasta que una de las partes se desconecta.

    2.  Función: compartir datos entre varias solicitudes dentro del alcance de una sesión

    3.  Camino:

          1.  Tecnología de sesión del cliente: Cookie

          2.  Tecnología de sesión del lado del servidor: Sesión

Galleta:

1.  Concepto: tecnología de sesión del cliente, guardar datos en el cliente

2.  Inicio rápido:

            1.  Cree un objeto Cookie y vincule datos

                 nueva cookie (nombre de cadena, valor de cadena) 

            2.  Enviar objeto de cookie

                 response.addCookie (cookie de cookies) 

            3.  Obtener cookies, obtener datos

                 Cookie [] request.getCookies ()  

3.  Principio de implementación

             Implementación basada en el conjunto de cookies de encabezado de respuesta y cookie de encabezado de solicitud

4. Asuntos que requieren atención:

              1. Puede enviar varias cookies a la vez. Puede crear varios objetos Cookie y usar la respuesta para llamar al método addCookie varias veces para enviar cookies .

              2. Cuánto tiempo se guarda la cookie en el navegador. Utilice el método setMaxAge (int segundos) para escribir los datos de la cookie en un archivo en el disco duro y especifique el tiempo de supervivencia de la cookie.

              3. De forma predeterminada, se implementan varios proyectos web en un servidor Tomcat, por lo que las cookies no se pueden compartir entre estos proyectos web. Si desea compartir , configure el directorio virtual actual a través de setPath (ruta de cadena) : la ruta se establece en "/"

              4. ¿El problema de compartir cookies entre diferentes servidores tomcat? Utilice el método setDomain (String path) : si el nombre de dominio de primer nivel está configurado para ser el mismo, las cookies se pueden compartir entre varios servidores

5.  Las características y funciones de las cookies

        1. Las  cookies almacenan datos en el navegador del cliente

        2. El  navegador tiene un límite en el tamaño de una sola cookie (4kb) y también tiene un límite en el número total de cookies bajo el mismo nombre de dominio (20)

        a. Las  cookies se utilizan generalmente para almacenar una pequeña cantidad de datos menos sensibles.

        b.  Complete la identificación del cliente del servidor sin iniciar sesión

Código

//记录电脑上次打开网页的时间

@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应体格式与编码
        resp.setContentType("text/html;charset=utf-8");
        //获取cookie
        Cookie[] cookies = req.getCookies();
        boolean flag=false;
        //遍历cookie数据
        if (cookies!=null && cookies.length>0){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                //判断名称中是否有:lastTime
                if ("lastTime".equals(name)){
                    //设置Cookie的value,下一次使用
                    flag=true;
                    Date date=new Date();
                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    //tomcat不支持特殊字符,需要通过URL编码
                    System.out.println("编码前 "+str_date);
                    str_date=URLEncoder.encode(str_date,"utf-8");
                    System.out.println("编码后"+str_date);

                    //新值串回去,设置存活时间
                    cookie.setValue(str_date);
                    cookie.setMaxAge(60*60*24);
                    resp.addCookie(cookie);
                    //有,欢迎光临,上次登录时间
                    String value = cookie.getValue();
                    //URL 解码
                    value=URLDecoder.decode(value,"utf-8");
                    resp.getWriter().write("<h1>欢迎回来,您上一次的访问时间是:"+value+"</h1>");
                    break;
                }
            }
        }
        if (cookies==null || cookies.length==0 || flag==false){
            //第一次访问
            Date date=new Date();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String str_date = sdf.format(date);

            //tomcat不支持特殊字符,需要通过URL编码
            System.out.println("编码前 "+str_date);
            str_date=URLEncoder.encode(str_date,"utf-8");
            System.out.println("编码后"+str_date);

            Cookie cookie=new Cookie("lastTime",str_date);
            //新值串回去,设置存活时间
            cookie.setValue(str_date);
            cookie.setMaxAge(60*60*24);
            resp.addCookie(cookie);

            resp.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
        }

    }
  }

Sesión:

1.  Concepto: tecnología de conversación del lado del servidor, compartir datos entre múltiples solicitudes en una sesión y guardar los datos en objetos del lado del servidor. HttpSession

2.  Inicio rápido:

        1.  Obtenga el objeto HttpSession:

            HttpSession session = request.getSession ();

        2.  Utilice el objeto HttpSession:

            Objeto getAttribute (nombre de cadena)  

            void setAttribute (nombre de la cadena, valor del objeto)

            void removeAttribute (nombre de cadena)  

3.  Principio

           La realización de Sesión depende de Cookie.

4. Detalles:

        1. Cuando se cierra el cliente, el servidor no se cierra, ¿se obtiene la misma sesión dos veces?

                por defecto. No es.

                Si necesita lo mismo, puede crear una cookie, la clave es JSESSIONID, establecer el tiempo máximo de supervivencia y hacer que la cookie sea persistente.

                    Cookie c = nueva Cookie ("JSESSIONID", session.getId ());

                    c.setMaxAge (60 * 60);

                    response.addCookie (c);

        2. El cliente no se cierra, después de que se cierra el servidor, ¿se obtiene la misma sesión dos veces?

            No es lo mismo, pero asegúrate de que los datos no se pierdan. Tomcat completa automáticamente las siguientes tareas

                 Pasivación de la sesión:  antes de que el servidor se apague normalmente, el objeto de la sesión se serializa en el disco duro

                 Activación de la sesión: una  vez iniciado el servidor, el archivo de sesión se puede convertir en un objeto de sesión en la memoria.

        3. ¿Cuándo se destruirá la sesión?

            1. El  servidor está apagado.

            2. El  objeto de sesión llama a invalidate ().

            3. El  tiempo de vencimiento predeterminado de la sesión es de 30 minutos.

5.  Las características de la sesión

           1. La  sesión se usa para almacenar los datos de múltiples solicitudes para una sesión, y se almacena en el lado del servidor.

           2. La  sesión puede almacenar cualquier tipo y tamaño de datos.

Código

@WebServlet("/SessionDemo1")
public class SessionDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //session
        HttpSession session = request.getSession();
        session.setAttribute("msg","hello session");
        //请求转发(这个是在一个URL中)
        request.setAttribute("reqmsg","hello req.session");
        request.getRequestDispatcher("/SessionDemo3").forward(request,response);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
    }
}


@WebServlet("/SessionDemo3")
public class SessionDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //获取数据
        HttpSession session = request.getSession();
        Object msg = session.getAttribute("msg");
        System.out.println(msg);
        //请求转发
        Object reqmsg = request.getAttribute("reqmsg");
        System.out.println(reqmsg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
    }
}

La diferencia entre sesión y cookie:

         1. La sesión almacena datos en el lado del servidor y la cookie en el lado del cliente.

         2. No hay límite de tamaño de datos para la sesión, las cookies tienen

         3. Los datos de la sesión están seguros, las cookies son relativamente inseguras.

         4. La sesión se guardará en el servidor durante un período de tiempo determinado. Cuando aumenta el número de visitas, se reducirá el rendimiento de su servidor. Para reducir el rendimiento del servidor, se deben utilizar cookies.

No es fácil de crear. Si este blog es útil para usted, recuerde dejar un mensaje + me gusta.

    

Supongo que te gusta

Origin blog.csdn.net/promsing/article/details/113729894
Recomendado
Clasificación