스프링 세션, 쿠키

Kim Jin Hyeok·2020년 11월 25일
0

코딩테스트 연습

목록 보기
8/8

세션(Session)과 쿠키(Cookie)


웹 서비스는 HTTP를 기반으로 하는데 HTTP는 클라이언트와 서버의 관계를 유지하지 않는 Connectionless Protocol이다.
서버의 부하를 줄일 수 있으나, 요청마다 새로운 연결이 생성되기 때문에 로그인 유지나, 장바구니 등을 구현하기 힘들다.

이러한 불편함을 해결하기 위해 세션과 쿠키를 이용한다.
세션은 서버에서 연결 정보를 관리하는 반면
쿠키는 클라이언트에서 연결 정보를 관리한다는 차이가 있다.

그렇기에 세션이 보안이 더 강하다.

HttpServletRequest를 이용한 세션 사용


스프링 MVC에서 HttpServletRequest를 이용해서 세션을 이용하려면 컨트롤러의 메서드에서 파라미터로 HttpServletRequest를 받으면 된다.

사용 예시

HttpSession session = request.getSession();
session.setAtttibute("member", member);

HttpSession을 이용한 세션 사용


HttpSession과 HttpServletRequest의 차이점은 거의 없으며 세션 객체를 얻는 방법의 차이만 있다.

세션 삭제

세션 속성이 필요 없을 때 세션을 삭제할 수 있다. 예를 들면 로그아웃이나 회원 탈퇴와 같은 과정

session.invalidate();

세션 주요 메서드

쿠키(Cookie)

컨트롤러에서 HttpServletResponse 객체를 받아서 추가한다.

쿠키 생성 예시

Cookie cookie = new Cookie("gender", "male");
response.addCookie(cookie);

생성된 쿠키 사용 예시

메서드 파라미터에 @CookieValue를 사용한다.
애너테이션의 value 속성은 쿠키 이름을 나타내는데, 해당 쿠기가 없을 경우 익셉션이 발생한다. 그것을 방지하기 위해 required=false 속성을 사용할 수 있다.

@RequestMapping("/memberInfo")
public String memberInfo (Member member, 
@CookieValue(value="gender", required=false) Cookie cookie) {
	if(cookie != null) {
    	member.setGender(cookie,getValue());
    }
    return "/member/memberInfo";

주요 메서드

0개의 댓글