회화 COOKIE?오래 지속 되 는 쿠키?

코 키 와 세 션 의 관계 에 대해 서 는 잘 모 르 고 있다.인터넷 에서 COOKIE 를 검색 하면 보편적으로 회화 COOKIE 와 지속 적 인 COOKIE 라 는 개념 이 있다.
ruby eye 블 로그 에 이런 해석 이 있 습 니 다. 제 가 부분 을 붙 여 드 리 겠 습 니 다.(
http://rubyeye.iteye.com/blog/196117
인용 하 다.
브 라 우 저가 이 sessionid 를 받 으 면 자신의 프로 세 스 메모리 에 넣 습 니 다. 이 브 라 우 저 는 다 를 것 입 니 다. IE 프로 세 스 간 에 이 sessionid 를 공유 할 수 없습니다. 즉, IE 를 새로 열 면 이 sessionid 를 공유 할 수 없습니다.Firefox 프로 세 스 간 에 공유 할 수 있 습 니 다. 그리고 이 사이트 에 계속 요청 을 보 낼 때 브 라 우 저 는 이 sessionid 를 요청 머리 에 넣 고 서버 에 보 냅 니 다. 그러면 서버 가 sessionid 를 받 은 후에 자신의 메모리 에 저 장 된 sessionid 와 비교 하여 클 라 이언 트 를 잠 그 고 서로 다른 클 라 이언 트 를 구분 하여 세 션 을 완성 합 니 다.
   이러한 방식 으로 사용자 가 세 션 을 하 는 과정 에서 브 라 우 저 를 닫 고 프로 세 스 를 종료 하면 이 sessionid 는 사라 집 니 다. 사용자 가 브 라 우 저 를 열 어 이 세 션 을 계속 하려 고 할 때 보 낸 요청 에 이 sessionid 가 없어 서 서버 에서 그 session 정 보 를 식별 할 수 없습니다. 주의 하 세 요.(이 때 서버 쪽 의 sessionid 와 sessionid 가 가리 키 는 session 이 존재 합 니 다. 정확 한 sessionid 가 일치 하지 않 아 서버 메모 리 를 사용 합 니 다. session 이 만 료 되 거나 서버 가 다시 시작 되 어야 메모 리 를 사용 합 니 다).
   위 에 이런 식 으로...
세 션 쿠키, 쿠키 를 브 라 우 저 메모리 에 넣 으 면 이 브 라 우 저의 메모리 범위 에서 만 세 션 을 완성 할 수 있 습 니 다. 오래 가지 못 하 는 방식 입 니 다. 세 션 을 오래 하기 위해 서 입 니 다.
지속 적 인 쿠키, 쿠키 를 사용자 의 컴퓨터 에 경화 시 킵 니 다. 현재 의 쿠키 는 sessionid 만 저장 할 수 있 는 것 이 아니 라 사용자 정보, 스타일 시트 정보 등 도 넣 을 수 있 습 니 다.
   만약 사용자 가 모든 쿠키 의 사용 을 금지한다 면,
세 션 쿠키 와 지구 화 쿠키 를 사용 할 수 없습니다. 문 제 를 해결 할 수 있 는 방안 이 있 습 니 다. 바로 URL 재 작성 입 니 다. 여기 서 말씀 드 리 고 싶 은 것 은 URL 재 작성 은 세 션 쿠키 의 효과 만 실현 할 수 있 고 지속 적 인 세 션 은 실현 할 수 없습니다.
처음 이 해 를 시 작 했 을 때, 나 도 지속 과 회화 라 는 두 가지 COOKIE 가 있 을 것 이 라 고 생각 했다. 나 는
세 션 COOKIE 는 SESSIONID 를 저장 하고 브 라 우 저 메모리 에 만 존재 하 며 브 라 우 저가 닫 히 면 세 션 COOKIE 가 삭 제 됩 니 다.
영구적 인 COOKIE 는 다른 정 보 를 저장 하고 로 컬 하 드 디스크 에서 볼 수 있 는 COOKIE 입 니 다.
그리고 제 가 SERVLET 를 써 봤 어 요.
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
	
	Cookie cookie = null;
	
	PrintWriter out = response.getWriter();
	out.println("<html><body>");
	
	Cookie[] cookies = request.getCookies();
	
	//     COOKIE,    COOKIE
	if (cookies == null) {
		
		out.println("<b>cookies is null.</b></br>");
		
		cookie = new Cookie("new", "1");
		
		response.addCookie(cookie);
		
	} else {
		
		out.println("<b>cookies is not null.</b></br>");
		
		for (int i = 0; i < cookies.length; i++) {
			
			cookie = cookies[i];
			
			out.println("cookie" + i + " name: " + cookie.getName() + "</br>");
		}
	}
	
	HttpSession session = request.getSession();
	
	if (session == null) {
		out.println("<b>session is null.</b></br>");
		
	} else {
		out.println("<b>session is not null.</b></br>");
		out.println("session id: " + session.getId() + "</br>");
	}
	
	out.println("</body></html>");
}

이 SERVLET 에 처음 방문 하 였 습 니 다. 페이지 표시
인용 하 다.
cookies is null.
session is not null.
session id: 0D0AABB6F911362FEE87BEEB2953C33F
두 번 째 접근, 페이지 표시
인용 하 다.
cookies is not null.
cookie0 name: new
cookie1 name: JSESSIONID
session is not null.
session id: 0D0AABB6F911362FEE87BEEB2953C33F
두 번 째 방문 때 클 라 이언 트 에서 두 개의 COOKIE 가 왔 습 니 다. 'new' 라 는 COOKIE 는 제 가 만 들 었 습 니 다. 'JSESSIONID' 라 는 COOKIE 는 서버 TOMCAT 에서 만 들 었 을 것 입 니 다. 그러나 이 때 로 컬 하 드 디스크 에서 두 개의 COOKIE 파일 을 찾 을 수 없습니다.
SERVLET 를 바 꾸 고 'new' 라 는 COOKIE 를 만 들 때 한 마디 추가 합 니 다.
cookie.setMaxAge(1000);

그리고 로 컬 하 드 디스크 에 'new' 라 는 COOKIE 가 있 습 니 다.
COOKIE 생존 기간 이 설정 되 어 있 지 않 을 때 자신 이 만 든 SESSION 이 로 컬 하 드 디스크 에 저장 되 지 않 을 지 의문 입 니 다. TOMCAT 가 만 든 이른바 세 션 COOKIE 도 생존 기간 이 설정 되 어 있 지 않 을까요?
그리고 zddava 의 블 로그 (
http://zddava.iteye.com/blog/311053 TOMCAT 에서 세 션 COOKIE 를 만 드 는 코드 를 찾 았 습 니 다.
... 에 있다
org. apache. catalina. connector. Request. 자바 리,
protected void configureSessionCookie(Cookie cookie) {
    cookie.setMaxAge(-1);
    String contextPath = null;
    if (!connector.getEmptySessionPath() && (getContext() != null)) {
        contextPath = getContext().getEncodedPath();
    }
    if ((contextPath != null) && (contextPath.length() > 0)) {
        cookie.setPath(contextPath);
    } else {
        cookie.setPath("/");
    }
    if (isSecure()) {
        cookie.setSecure(true);
    }
}

cookie. setMaxAge (- 1); COOKIE 가 브 라 우 저 를 닫 을 때 삭 제 됩 니 다. 또한 이 쿠키 와 위 SERVLET 의 쿠키 는 모두 javax. servlet. http. Cookie 입 니 다.
이 를 통 해 알 수 있 듯 이 처음에 제 가 잘못 이 해 했 을 수도 있 습 니 다. COOKIE 는 세 션 COOKIE 와 영구적 인 COOKIE 의 구분 이 없 었 습 니 다. 저희 가 로 컬 에서 만 든 '영구적 인 COOKIE' 와 WEB 용기 가 만 든 '세 션 COOKIE' 는 모두 COOKIE 입 니 다. 바로 javax. servlet. http. Cookie 입 니 다. WEB 용 기 는 브 라 우 저 를 닫 을 때 삭제 하도록 생존 기간 을 설 정 했 을 뿐 입 니 다 (TOMCAT).

좋은 웹페이지 즐겨찾기