[자바]쿠키, 세션

Nux·2022년 6월 23일
0

쿠키와 세션

  • 쿠키과 세션은 HTTP(Hyper Text Transfer Protocol)의 약점을 보완하기 위해 사용됨

프로토콜
컴퓨터 간 데이터 통신을 위해 사용하는 규약.

HTTP의 약점
비연결성, 무상태
1. HTTP는 요청에 대한 응답을 보내면 연결을 끊음
2. 서버 통신이 끝나면 상태정보를 유지하지 않음

쿠키

  • 사용자의 정보를 기록해 둔 파일. 문자열로 이루어짐
  • 사용자의 로컬(컴퓨터)에 저장됨
  • 브라우저를 종료해도 정보가 유지됨
  • 도메인당 최대 20개, 클라이언트는 총 300개의 쿠키만 저장 가능

쿠키의 사용

생성

new Cookie(“이름”, “값”)

Cookie cookie = new Cookie(“test”, “1234”);
  • 이름과 값을 가진 새로운 쿠키를 생성함

response.addCookie(Object)

  • 새로운 쿠키를 추가

.getValue()

  • 쿠키에 저장된 값을 가져옴

.getCookies()

Cookie cookies[] = request.getCookies();
  • 모든 쿠키를 배열로 리턴

이름으로 쿠키찾기

Cookie cookies[] = request.getCookies();
if(cookies!=null){
	for(Cookie c: cookies){
    	String name=c.getName();
        if(name.equals("찾으려는이름"){
        	조건문 입력
        }
    }
}

.setMaxAge(int)

  • 쿠키의 수명을 초단위로 설정
    • 0이면 바로 삭제, -1이면 웹 브라우저가 끝날 때 삭제

모든쿠키제거

Cookie[] cookies = request.getCookies();
if(cookies!=null){
	for(int i=0;i<cookies.length;i++){
    	cookies[i].setMaxAge(0);
        response.addCookie(cookies[i]);
    }
}
  • 유효시간을 0으로 설정 후 response에 추가하여 만료시킴

세션

  • 사용자가 웹서버에 접속해 있는 동안 상태를 유지시키는 것
  • 웹서버에 세션쿠키를 저장했다가, 만료시(브라우저가 닫혔을 때, 타임아웃 됐을 때) 삭제됨
    • 세션 타임아웃은 사용자가 조작을 멈췄을 때부터 카운트 되기 시작
  • 보안면에서 우수
  • 서버 자원을 활용하므로 처리 속도가 늦어질 수 있음

세션의 사용

.setAttribute(“이름”,”값”)

  • 세션에 속성 지정

.getAttribute(“이름”)

  • 이름을 이용해 저장된 값을 가져옴

.getAttributeNames()

  • 저장된 키를 Enumeration타입으로 리턴

.removeAttribute(“이름”)

  • 이름에 해당하는 속성 삭제

.invalidate()

  • 세션의 모든 속성을 제거(초기화)
  • 로그아웃 기능 구현 시 주로 사용

참고
https://dev-coco.tistory.com/61
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=simjunbo&logNo=120213000980
https://blog.naver.com/PostView.nhn?blogId=adamdoha&logNo=222081530284

0개의 댓글