쿠키 및 세션 요약

쿠키 및 세션 요약
  • Cookie
  • 쿠키 소개
  • 쿠키의 간단한 사용
  • 쿠키 공통 API
  • 쿠키로 중국어 및 공백 보내기
  • 쿠키 공유 범위
  • Session
  • session 소개
  • session과 쿠키의 차이
  • session 단순원리
  • session으로 데이터 공유
  • session생존시간 연장
  • session의 폐기
  • Cookie
    쿠키 소개
    쿠키는'작은 디저트, 작은 과자'로 번역할 수 있다. 쿠키는 인터넷 시스템에 없는 곳이 거의 없다. 우리가 예전에 방문한 사이트를 방문했을 때 홈페이지에'안녕 XXX, 이것은 우리로 하여금 마치 작은 디저트를 먹은 것처럼 친근하게 느끼게 할 것이다.이것은 사실 호스트의 한 파일에 접근해서 이루어진 것이다. 이 파일이 바로 쿠키이다.인터넷에서 쿠키는 실제로 소량의 정보를 가리키며 웹 서버에서 만들어져 사용자 컴퓨터에 저장된 파일을 말한다.일반적으로 인터넷 사용자는 복수 형식의 쿠키를 사용하는데 일부 사이트가 사용자의 신분을 식별하고 Session 추적을 하기 위해 사용자의 로컬 단말기에 저장된 데이터를 가리키며 이러한 데이터는 일반적으로 암호화 처리를 거친다.
    쿠키의 간단한 사용
    servlet을 새로 만들고response를 통해 쿠키를 만듭니다.addCookie는 클라이언트에 전송되며 쿠키를 여러 개 보내려면 아래 두 줄의 코드를 반복할 수 있습니다.
    Cookie cookie = new Cookie("name","tom");
    response.addCookie(cookie);
    

    다른 servlet에서 브라우저의 쿠키를 가져옵니다.
    Cookie[] cs = request.getCookies();
    for (Cookie c : cs) {
          System.out.println(c.getName()+" "+c.getValue());
    }
    

    쿠키 공통 API
    name: 이름은 유일하게 쿠키를 정할 수 없습니다.경로가 다를 수 있습니다.value: 중국어와 빈칸을 저장할 수 없습니다.path: 기본값은 쿠키를 쓰는 프로그램의 접근 경로 maxAge: 쿠키의 캐시 시간입니다.기본값은 마이너스(기본적으로 브라우저의 메모리에 존재), 즉 브라우저가 닫히면 쿠키를 삭제합니다. 단위는 초입니다.0으로 설정하면 이 쿠키를 삭제합니다.양수는 캐시가 디스크에 오래 지속되는 시간을 나타낸다.쿠키 생존 시간을 30일로 설정하려면:
    cookie.setMaxAge(60*60*24*30);
    

    쿠키로 중국어 및 공백 보내기
    쿠키는 중국어를 지원하지 않습니다. 중국어를 보내려면 URL 인코딩을 사용해야 합니다.
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd  HH:mm:ss");
    String str_date = sdf.format(date);
    //  URL  
    str_date = URLEncoder.encode(str_date,"utf-8");
    Cookie cookie = new Cookie("lastTime",str_date);
    cookie.setMaxAge(60*60*24*30);
    response.addCookie(cookie);
    

    브라우저에서 쿠키를 가져오고 URL 디코딩을 사용하여 읽습니다.
    response.setContentType("text/html;charset=utf-8");
    Cookie[] cookies = request.getCookies();
    for (Cookie c : cookies) {
    	if ("lastName".equals(c.getName())) {  //   "lastTime"             
    		String value = c.getValue();
    		//  
    		value = URLDecoder.decode(value,"utf-8");
    		response.getWriter.write("

    , "

    +value+""); } }

    쿠키 공유 범위
    쿠키는 기본적으로 현재 프로젝트에만 공유할 수 있습니다.전체 서버에 공유하려면 Path를 설정합니다.
    cookie.setPath("/");
    

    서로 다른 서버가 쿠키를 공유하려면 setDomain(String path)을 사용하고 1급 도메인 이름을 똑같이 설정하면 여러 서버 간에 쿠키를 공유할 수 있다.
    cookie.setDomain(".baidu.com");  //tieba.baidu.com news.baidu.com cookie     
    

    Session
    세션 소개
    웹 개발 과정에서 서버는 모든 사용자 브라우저에 세션 대상 (session 대상) 을 만들 것입니다.한 브라우저가 하나의session 대상을 독점하기 때문에 사용자 데이터를 저장할 때 서버 프로그램은 사용자 데이터를 사용자 브라우저가 독점하는session에 쓸 수 있다.사용자가 브라우저를 사용하여 다른 프로그램에 접근할 때, 다른 프로그램은 사용자의session에서 사용자의 데이터를 꺼내서 직접 사용할 수 있다.
    session과 쿠키의 차이
    쿠키는 사용자의 데이터를 사용자 브라우저에 쓰는 것입니다.Session 기술은 사용자의 데이터를 사용자가 독점하는session에 기록합니다.Session 대상은 서버에서 만듭니다. 프로그램원은 Request 대상의 getSession () 방법을 호출해서session 대상을 얻을 수 있습니다.쿠키의 안전성이 높지 않다. 왜냐하면 쿠키 정보는 클라이언트에 저장되기 때문에 다른 사람들은 쿠키에 저장하기 쉽고 쿠키 사기를 일으키기 쉽다.세션 정보는 서버에 저장되어 있기 때문에 비교적 안전하다.단일 쿠키가 저장한 데이터는 4k를 넘지 않으며, 브라우저당 사이트당 최대 20개의 쿠키를 저장하도록 제한한다.세션에는 이러한 문제가 없습니다.
    세션 단순 원리
    session의 실현은 쿠키에 의존한다.서버가Session을 만든 후에session의 ID를 쿠키 형식으로 사용자에게 돌려보냅니다.name 속성은 JSESsionid입니다. 사용자 기기의 브라우저가 닫히지 않고 다시 서버에 방문할 때session의 ID 번호를 가지고 가면 서버에서 브라우저가session의 ID 번호를 가지고 있는 것을 발견하고 메모리에 대응하는session 위치 서비스를 사용합니다.
    세션 공유 데이터 사용하기
    세션 가져오기
    HttpSession session = request.getSession();
    session.setAttribute("hello","hello session");
    

    콘솔 출력 세션
    HttpSession session = request.getSession();
    Object hello = session.getAttribute("hello");
    System.out.println(hello);
    

    세션 생존 시간 연장
    클라이언트가 닫힌 후에도 같은session을 사용할 수 있기를 바랍니다.
    HttpSession session = request.getSession();
    Cookie c = new Cookie("JSESSIONID",session.getId());
    c.setMaxAge(60*60*24);
    response.addCookie(c);
    

    서버가 다시 시작된 후, 두 번 얻은session은 같지 않지만, 데이터를 잃어버리지 않기를 바랍니다.세션의 둔화와 활성화: 프로젝트를tomcat 서버에 배치하면(프로젝트의war 패키지를tomcat의 웹 apps 폴더에 넣는다)tomcat은 자동으로 이 과정을 실현하고IDEA는 실현할 수 없습니다.
    session   :
    	         , session         。
    session   :
    	      , session         session  。
    

    세션 제거
    1) 서버가 닫히고session소각2)session의 invalidate() 방법을 호출하여session3)session의 기본 실효시간: 30분 웹에서 사용할 수 있습니다.xml에서session의 기본 실효 시간을 설정합니다
    <session-config>
    	<session-timeout>120session-timeout>
    session-config>
    

    좋은 웹페이지 즐겨찾기