WEB Cookie & Session

장준휴·2023년 11월 2일
1

WEB

목록 보기
2/4

Cookie

브라우저를 사용하다보면 한번쯤 '쿠키 삭제' 라는 말을 들어본 적이 있을 것이다. '고클린'과 비슷한 컴퓨터 속도 향상 프로그램에서도 이러한 기능이 있다.

그렇다면 쿠키란 무엇인가?

우리가 네이버에 로그인을 한다고 하자, 아이디와 비밀번호를 입력하고 메인 페이지에 로그인 성공 되었다는 표시가 뜰 것이다. 그런데 네이버에서 지식인 페이지에 접속해도, 메일 페이지에 접속해도 로그인이 풀리지 않는다.

현재까지는 너무 당연하게 생각했지만 다른 페이지를 새로 요청하고 요청 받는 웹 통신 방식에서 어떻게 로그인이 해제되지 않고 계속 로그인된 상태로 사용할 수 있는 것일까.

서버에 저장이 되어있나?
하지만 사용자가 매우 많은 서버에 로그인 성공 데이터를 저장하기엔 부담이 될 것이다.

이때 사용되는 개념이 '쿠키'이다.

서버가 클라이언트로부터 아이디와 패스워드를 전달받고 DB와 연동하여 다시 클라이언트에게 데이터를 보내줄 때 서버는 쿠키를 함께 보낸다.
클라이언트 컴퓨터는 이러한 쿠키를 서버와 연결이 끊겨도 계속 기억할 수 있도록 하드디스크에 저장을 해둔다. 이렇게 하면 클라이언트가 다시 서버에게 요청을 보낼때 하드디스크에 저장된 쿠키도 함께 보내어 서버에서 인식을 하고 그에 맞는 응답을 보내게 된다.

  1. Client의 요청(Request)
  2. 쿠키를 HTTP Response Header(Set-Cookie)에 담아서 응답
  3. 쿠키를 Client의 하드디스크에 저장
  4. Client가 다시 요청(Request)할 때 쿠키를 포함하여 요청
  5. 응답(쿠키 업데이트 시 다시 쿠키 전달)

쿠키 객체 생성

Cookie cookie = new Cookie("쿠키이름", "쿠키 값");

쿠키 객체 : javax.servlet.http.Cookie
쿠키 이름 : String
쿠키 값 : String, 영어만 가능(한글 보낼 시 인코딩 진행)

쿠키 기한 지정하기

cookie.setMaxAge(60*60);

쿠키 전송 전에 쿠키가 저장될 기한을 지정해줘야한다. () 내부에 작성하는 숫자는 초 단위로 지정된다.
만약 0으로 한다면 쿠키가 제거된다.

response.addCookie(cookie);

쿠키 조회하기

Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++){
	out.print("쿠키이름 : "+cookies[i].getNaver()+"<br>");
    out.print("쿠키값 : "+cookies[i].getValue()+"<br>");
}

쿠키는 여러개를 받을 수 있기 때문에 리턴 타입은 배열이다. 기본값은 영어이기 때문에 한글값은 디코딩을 진행해야한다.

Session

Session은 쿠키와 기능이 매우 비슷하다. 하지만 쿠키와 다르게 클라이언트의 하드디스크에 정보를 저장하는 것이 아닌, 서버에서 정보를 저장한다.

이러한 정보를 클라이언트마다 구분해서 저장해야하기 때문에 서버에서 클라이언트에게 session id를 부여한다.

Session 객체 생성

HTTPSession session = request.getSession();

Session에 데이터 저장

session.setAttribute("아이디","박수현");

Session 이름은 고유한 값이기 때문에
기존에 존재하는 Session이름을 사용하면 값이 덮어쓰기 된다.

Session 유효기간 설정

session.metMaxInactiveInterval(60*60)

쿠키와 동일하게 () 내부 단위는 초 단위 이다.

Session 조회

String id = (String) session.getAttribute("아이디");

Session은 object 형태이기 때문에 강제 형변환을 통해서 값을 받아와야한다.

Session 삭제

session.removeAttribute("삭제할 이름");
// 특정 session 삭제

session.invalidate();
// 전체 session종료

Cookie와 Session 차이점

쿠키는 삭제, 조작, 강탈이 되어도 괜찮은 정보들이 되어야하고
세션은 서비스 제공자가 직접 관리해야할 정보들이 되어야한다.

profile
나는야 토마토

0개의 댓글

관련 채용 정보