본문 바로가기
개발일지_development diary/YSit

YSit [10] - 세션 사용하여 쿠키 대체하기

by YES_developNewbie 2022. 12. 28.

홈화면에 유저 아이디를 띄우려고 했는데 왜인지 쿠키값이 홈화면에는 안 들어오는 오류가 생겼다.

로그인 전과 로그인 후를 기준으로 HTML을 나눠보기도 하고, 코드에 잘못된 부분이 있나 세세히 살펴보기도 했는데 고쳐지지 않고 아무리 구글링을 해도 이 오류에 대한 정보가 안 나와서 세션을 사용해보기로 했다.

세션은 쿠키보다 무겁긴 하지만, 보안성이 높아서 나중에 사용해보려 했는데 그 나중이 지금인 것 같다.

 

[ 세션 생성 ]

 

세션도 쿠키를 기반으로 하기 때문에 사용 방법이 그다지 다르지 않다. 먼저 HttpServletRequest를 파라미터로 받아준다. 

HttpServletRequest.getSession()은 이미 생성된 세션이 있다면 세션을 반환, 없다면 새로운 세션을 생성하여 반환한다. 이 메서드를 이용해 세션을 받고, 키값으로 객체를 저장하는 메서드인 setAttribute를 사용하여 세션값을 저장한다.

HttpSession session = request.getSession();
session.setAttribute("Id", user.getId());

나는 유저Id값을 세션에 저장했다. 

 

[ 세션 읽기 ]

 

HttpServletRequest를 파라미터로 받아서 getSession() 메서드로 세션을 받아주고, getAttribute("name") 메서드를 이용해 값을 받아준다.

HttpSession session = request.getSession();
Long id = (Long) session.getAttribute("Id");

 

[ 세션 삭제 ]

 

getSession()으로 세션을 받은 후, invalidate()로 초기화를 해준다.

 

후기

세션이 쿠키와 비슷한 면이 많아 배우고 이해하는데 그리 오래 걸리지 않았다. 나중에는 쿠키와 세션을 모두 사용하는 방법이 있다는데 그것도 한 번 사용해보고 싶다.