Session (세션)

브라우저 상에서 CRUD를 누구나 수행할 수 있게되면 악의적인 실행을 통해 서버 데이터 유지가 어려워질 수 있다.

Servlet 입장에서 요청한 브라우저의 상태 정보를 매 번 확인할 수 있어야한다.

관련해서 정책이 필요한데, 예를 들면 로그인 된 상태에서, 작성자가 일치하면 UPDATE나 DELETE를 할 수 있는 정책이다.


Session

1
2
/* HttpServletRequest request */
HttpSession session = request.getSession();

getSession() 이 호출되면 key, value를 저장할 메모리가 할당된다.

요청한 브라우저와 매핑된 세션을 서버 메모리에서 찾아주며, 브라우저가 종료되면 해당 세션이 삭제된다.

  • 브라우저 1개당, 서버 메모리 1개

getAttribute()

Session을 통해 userID의 값이 저장(로그인) 돼었을 때만 service 단에 접근할 수 있도록 만들 수 있다.

1
2
3
4
5
if (session.getAttribute("userID") == null) {
response.sendRedirect("login.html");
} else {
/* ... */
}

getAttribute() 메서드를 사용할 때는 Object 타입으로 해주기 떄문에 형변환

1
String userRole = (String)session.getAttribute("userRole");

swetAttribute(), removeAttribute()

각 속성 값을 아래와 같이 설정할 수 있으며, Key 값이 중복되면 value 값이 update 된다.

removeAttribute() 메서드를 통해 Key, value 쌍을 삭제할 수 있다.

1
2
3
4
5
session.setAttribute("userID", user.getId());
session.setAttribute("userName", user.getName());
session.setAttribute("userRole", user.getRole());
session.setAttribute("userID", user.getId());
session.removeAttribute("userID");

세션의 timealive

메모리가 낭비될 수 있기 때문에 tomcat 서버의 default 값은 30분이다.

Interaction(서버에 요청)이 없는 순간을 기준으로 한다.

1
session.setMaxInactiveInterval(10); 

invalidate()

Logout을 할 때 session을 강제로 삭제시킬 때 주로 사용된다.

1
2
HttpSession session = request.getSession();
session.invalidate();
Author

Inwoo Jeong

Posted on

2021-11-03

Updated on

2021-11-03

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

댓글