본문 바로가기
개발/JSP

(JSP) JSP에서 세션(Session), 쿠키(Cookie) 사용법

by kakk789 2022. 5. 22.

세션(Session)

  • 내장 객체가 존재 ( session . ~~ )
  • 세션 자료형 Object 형
  • 세션은 웹 브라우저마다 할당 받음

쿠키(Cookie)

  • 직접 객체 생성 필요 ( new Cookie() )
  • 쿠키 자료형 String

세션 내장객체 이용 방법

세션 값 저장 (setAttribute)

  • 세션에 값을 저장
session.setAttribute(String name, Object value)

"title"이라는 세션 ID에 "JSP Programming" 이라는 값을 저장

	session.setAttribute("title", "JSP Programming");

세션 가져오기 (getAttribute)

  • 세션 명을 통하여 값을 가져옴
  • object형으로 반환 받기 때문에 String or Integer 로 타입캐스팅 하여 받아와야함.
session.getAttribute(String name)

모든 세션 이름 반환(session.getAttributeNames())

session.getAttributeNames();
	Enumeration enums = session.getAttributeNames();

세션 이름을 next하는 함수 ( nextElement() )

enums.nextElement()
	String name = (String)enums.nextElement();

데이터 유무 판단 메소드 ( hasMoreElements() )

  • 읽어 올 요소가 남아있는지 판단 
  • 있으면 true, 없으면 false 반환
enums.hasMoreElements()
	while(enums.hasMoreElements()){
	     .....
	     .....
	}

예 시

	Enumeration enums = session.getAttributeNames();

	while(enums.hasMoreElements()){
		String name = (String)enums.nextElement();
		out.print(name+"<br>");
		out.print(session.getAttribute(name));
		out.print("<hr>");
	}

현재 세션에 저장되어 있는 값

세션 유효시간

  • default = 30분
유효시간 설정 
session.setMaxInactiveInterval(int seconds)

session.setMaxInactiveInterval(60*5)

유효시간 불러오기
session.getMaxInactiveInterval()

int s_time = session.getMaxInactiveInterval()

세션 당 유지시간 확인 (밀리 세컨즈로 반환)

getId() - 세션 ID 확인(동일 브라우저는 같은 세션 ID 할당)
getLastAccessedTime() - 마지막에 접속했던 시간
getCreationTime() - 최초 생성했던 시간

세션 유지 시간 구하는 방법
getLastAccessedTime() - getCreationTime()
	String session_id = session.getId();
	long last_time = session.getLastAccessedTime();
	long start_time = session.getCreationTime();
	long keeping_time = (last_time - start_time) / 1000;
		
	out.print("1. 세션 아이디: " + session_id +"<br>");
	out.print("2. 세션 유지된 " + keeping_time+" 초" +"<br>");

세션에 설정된 '값' '삭제' 하는 방법

  • invalidate() 함수는 세션을 파기하는 것이기 때문에 파기 후 session 객체에 접근을 못함
  • 그래서 isRequestedSessionInvalid() 로 추가로 유효성 검사해야함
단일 세션 삭제
removeAttribute
("세션명");

세션 값 삭제
invalidate()
	// 단일 세션 삭제
	session.removeAttribute("세션명");
    
	// 모든 세션 삭제
	session.invalidate();

invalidate()로 세션을 전부 파기 후 getAttribute 하면 아래와 같은 에러 발생

세션의 유효성을 판단하는 함수 (isRequestedSessionInvalid)

reqeust.isRequestedSessionInvalid()
	if(request.isRequestedSessionIdValid() == true){
		out.print("세션이 유효합니다");
	}
	else{
		out.print("세션이 유효하지 않아요");
	}

쿠키(Cookie)

  • 웹 사이트에서 사용 될 4KB 이하 크기의 임시 파일
  • 네트워크 환경에서 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하지 위해 사용
  • 클라이언트의 응답을 통하여 쿠키를 기록할 수 있음 (response 객체)
  • 쿠키를 삭제하는 명령은 없음 (삭제하려면 유효기간 'setMaxAge'를 0을 설정)

쿠키 생성

new Cookie("쿠키이름", "쿠키 값")

쿠키 기록 (클라이언트 측에 )

response.addCookie(쿠키이름);

쿠키 정보 반환

request.getCookies() - 모든 쿠키 정보 반환, 배열을 반환
Cookie[] cookies = request.getCookie();

request.getName()  - 쿠키 이름 반환

request.getValue() - 쿠키에 설정된 값을 반환
	Cookie [] cooks = request.getCookies();

	if(cooks !=null){ //쿠키가 있을경우만 동작
		out.print("쿠키의 개수 : " + cooks.length+"<br>");
		out.print("<hr>");
		for(Cookie coo:cooks){
			out.print("쿠키이름: " + coo.getName() +"<br>");
			out.print("쿠키값: " + coo.getValue() +"<br>");
			out.print("<hr>");
		}
	}

쿠키 유효기간 설정 ( setMaxAge )

cookie.setMaxAge(시간)

- 시간을 0으로 설정하면 쿠키 삭제 가능.

쿠키에 값 설정 ( setValue )

request.setValue()

다른 페이지로 이동 ( sendRedirect )

response.sendRedirect("이동할 페이지");
반응형

'개발 > JSP' 카테고리의 다른 글

(JSP) MVC 패턴  (0) 2022.05.23
(JSP) 액션 태그 (Action Tag)  (0) 2022.05.22
(JSP) href로 파라미터 전달하기  (0) 2022.05.21
(JSP) ResultSet  (0) 2022.05.19
(Java) JSP 에러페이지 만들기 (예외처리)  (0) 2022.05.18

댓글