쿠키 및 세션 요약
쿠키 소개
쿠키는'작은 디저트, 작은 과자'로 번역할 수 있다. 쿠키는 인터넷 시스템에 없는 곳이 거의 없다. 우리가 예전에 방문한 사이트를 방문했을 때 홈페이지에'안녕 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>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
지식 정리 자바 의 쿠키 조작더 읽 기 쿠키 만 들 기 Cookie 를 읽 고 Cookie 를 읽 으 면 request 에서 모든 Cookie 만 가 져 오고 교체 할 수 있 습 니 다. Cookie 도 키 값 이 맞 지만 Map 처럼 Key ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.