0. 세션(Session)이란?
일정시간동안 클라이언트로부터 들어오는 요청을 하나의 상태를 보고 그 상태를 일정시간 유지시키는 기술. 사용자가 웹사이트에 접속해있는 상태를 하나의 단위로 보고 '세션'이라고 부른다.
1. 세션 객체
JSP의 경우 session 내장 객체가 있으며 서버측의 경우 HttpServletRequest의 getSession() 메서드를 통해 세션 객체를 얻을 수 있다.
<!-- JSP의 경우 -->
<% session.setAttribute("data", data); %>
<% Object obj = session.getAttribute("data"); %>
// 자바 서블릿의 경우
prviate void getSession (HttpServletRequest request, HttpServletResponse)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("data", data);
session.getAttribute("data");
}
Session 객체를 사용해 다양하게 사용할 수 있지만 웹 어플리케이션에서는 데이터를 서버에 저장할 때 자주 사용한다. 비슷하게 데이터를 저장할 수 있는 Cookie의 경우 그 크기에 제한이 있고 데이터를 클라이언트(웹 브라우저)에 저장한다는 점에서 보안에 취약하다.
하지만 Session의 경우 크기 제한이 Cookie에 비하면 넉넉하고 (서버 JVM의 메모리 크기와 같다고 한다.) 데이터를 서버에 저장하기 때문에 비교적 안전하다. 그런 점에서 회원의 로그인 정보같은 민감한 정보를 저장할 때는 Session을 사용하는 것이 좋다.
2. 세션에 값 저장하기
세션에 값을 저장하기 위해서는 setAttribute("이름", 값) 메서드를 사용하면 된다. 첫번째 파라미터로 값을 식별할 '이름'을 지정하고 두번째 파라미터로는 저장할 값를 지정하면 된다. 값의 파라미터 타입은 Object이므로 타입과 상관없이 다양하게 저장할 수 있다.
세션에 저장하는 값의 이름은 중복될 수 없으므로 이미 같은 이름의 값이 있을 경우 값이 덮어씌워지게 된다.
String data = "Good Data";
request.getSession().setAttribute("data", data);
3. 세션에서 값 불러오기
세션에서 값을 불러오기 위해서는 getAttribute("이름") 메서드를 사용하면 된다. 파라미터로 setAttribute() 메서드에서 값과 함께 지정한 '이름'을 넣어주면 해당 이름을 가진 값을 꺼내올 수 있다.
반환값은 Object 타입으로 필요에 따라 형변환하면 된다.
Object obj = request.getSession().getAttribute("data");
String data = (String) obj;
4. 세션에서 값 삭제하기
세션에 저장된 값을 삭제하기 위해서는 removeAttribute("이름") 메서드를 사용한다. 값을 저장할 때 사용했던 이름을 파라미터로 지정하면 해당 이름을 가진 값을 삭제할 수 있다.
request.getSession().removeAttribute("data");
5. 세션에서 값을 모두 삭제하기 (초기화)
세션에 저장된 모든 값을 삭제하기 위해서는 invalidate() 메서드를 사용한다. 세션에 저장된 모든 데이터를 삭제하는데 보통 회원이 로그아웃했을 때 세션에 저장된 회원정보를 삭제하기 위해 사용한다.
request.getSession().invalidate();
'웹 개발 > 웹 개발' 카테고리의 다른 글
WHOIS OpenAPI를 활용한 클라이언트 접속 국가 확인 (0) | 2023.01.24 |
---|---|
쿠키(Cookie) (0) | 2023.01.18 |
JSON 데이터를 자바 서블릿에서 Map으로 변환하기 (0) | 2023.01.17 |
필터를 사용한 로그 파일 생성 (0) | 2023.01.17 |
HttpServletRequest getServletPath() 와 getPathInfo() 의 차이 (0) | 2023.01.17 |