03-쿠키、세션

쿠키, 세션

대화

세션: 사용자가 브라우저를 열고 많은 하이퍼링크를 클릭하고 여러 웹 리소스를 방문하고 브라우저를 닫는 과정을 세션이라고 합니다.

상태 저장 대화: 동급생이 교실에 가봤고 다음에 교실에 올 때 그가 거기에 있었다는 것을 압니다.

세션 저장을 위한 두 가지 기술

쿠키

클라이언트 기술(응답, 요청)

세션

서버 기술은 이 기술을 사용하여 사용자의 세션 정보를 저장할 수 있으며 정보나 데이터를 세션에 저장할 수 있습니다.

쿠키

여기에 이미지 설명 삽입

  1. 요청에서 쿠키 정보 가져오기
  2. 서버는 클라이언트 쿠키에 응답합니다.

여기에 이미지 설명 삽입

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        Cookie[] cookies = req.getCookies();
        int flag=-1;
        for (int i = 0; i < cookies.length; i++) {
    
    
            if (cookies[i].getName().equals("loginTime")){
    
    
                flag=i;
                break;
            }
        }
        if (flag!=-1){
    
    
            long loginTime = Long.parseLong(cookies[flag].getValue());
            Date date = new Date(loginTime);
            System.out.println(date.toLocaleString());
        }else {
    
    
            System.out.println("欢迎您首次到来!");
        }
        //每次登录网站都会更新时间
        Cookie loginTime = new Cookie("loginTime", System.currentTimeMillis() + "");
        //给cookie设置一个有效期
        loginTime.setMaxAge(24*60*60);
        resp.addCookie(loginTime);
    }

쿠키에는 상한선이 있습니다

  • 쿠키는 하나의 정보만 보유할 수 있습니다.
  • 웹 사이트는 브라우저에 여러 개의 쿠키를 보낼 수 있으며 최대 20개의 쿠키를 저장할 수 있습니다.
  • 쿠키 사이트의 크기 제한은 4kb입니다.
  • 브라우저 제한은 쿠키 300개입니다.

쿠키 삭제

만료 날짜를 설정하지 않고 브라우저를 닫으면 자동으로 만료됩니다.

유효기간을 0으로 설정

인코딩하다 디코딩하다

URLEncoder.encode("中文","utf-8");
URLDecoder.decode(cookies[0].getValue(),"utf-8");

세션

여기에 이미지 설명 삽입

소개하다

  • 서버는 각 사용자(브라우저)에 대한 세션 객체를 생성합니다.
  • 세션은 브라우저를 독점하며 브라우저가 닫히지 않는 한 세션은 존재합니다.
  • 사용자 로그인 후 전체 웹사이트 접근 가능 --> 사용자 정보 저장
@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //解决乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //得到session
        HttpSession session = req.getSession();
        //得到sessionId
        String id = session.getId();
        //在session中存储属性
        session.setAttribute("name","小黑子");
        if (session.isNew()){
    
    
            resp.getWriter().write(id+"创建成功!");
        }else{
    
    
            resp.getWriter().write(session.getAttribute("name")+"属性设置成功!");
        }
        //手动注销session
        session.invalidate();
    }

세션 유효 날짜 설정

<session-config>
<!--        以分钟为单位-->
     <session-timeout>15</session-timeout>
 </session-config>

세션과 쿠키의 차이점

  • 쿠키는 이용자의 데이터를 이용자의 브라우저에 기록하고, 브라우저는 이를 저장합니다(복수 저장 가능)
  • 세션은 사용자의 데이터를 사용자의 전용 세션에 쓰고 서버 측에 저장하는 것입니다. (중요 자원을 저장하고 서버 자원의 낭비를 줄입니다.)

Supongo que te gusta

Origin blog.csdn.net/qq_52117201/article/details/129401159
Recomendado
Clasificación