예제로 배우는 JSP

준비중..

예제로 배우는 JSP

자바 웹 프로그래밍의 세계로!

08 쿠키와 세션

# 쿠키와 세션 상태유지를 위한 쿠키(cookie)와 세션(session)에 대해 알아봅시다. --- <a name="cookie"></a> ### 쿠키 **쿠키**는 클라이언트의 상태유지를 위한 기술입니다. **상태유지**란 다른 페이지 이동시에도 그전 페이지의 정보가 유지되는 것을 말합니다. 쿠키는 클라이언트의 정보를 클라이언트 측 컴퓨터에 저장하는 하여 이를 실현합니다. 쿠키는 사용용도는 장바구니에 담긴 쇼핑목록, 저장해놓은 아이디와 비밀번호, 방문했던 사이트 기록 등이 있습니다. 쿠키는 서버의 부하를 줄여준다는 장점이 있습니다. 웹서비스는 클라인트와 서버로 구성되어있는데, 클라이언트는 다수인것에 비해 서버는 소수입니다. 다수의 클라이언트 정보를 서버가 감당하기엔 부담이 큽니다. 떄문에 정보들은 각각의 클라이언트 저장소에 기록되었고 필요시 서버에서 사용하게하여 서버측 부담을 줄이게 되었습니다. 쿠키는 저장용량 제한(개당 4KB이하, 최대 300개)이 있으며 보안에 취약합니다. --- <a name="cookie-usage"></a> ### 쿠키 사용하기 쿠키정보는 request객체를 사용하여 얻어올 수 있습니다. ```java Cookie[] cookies = request.getCookies(); ``` 쿠키는 키(key)와 값(value)의 쌍으로 이루어져 있습니다. ```java for (int i = 0; i < cookies.length; i++) { String name = cookies[i].getName(); String value = cookies[i].getValue(); } ``` 쿠키의 생성과 추가는 아래와 같이 작성합니다. ```java // 쿠키 생성 Cookie info = new Cookie("test", "the first cookie test"); // 쿠키 추가 response.addCookie(info); ``` --- <a name="session"></a> ### 세션 **세션**은 쿠키의 한계를 보완한 상태유지 기술입니다. 세션은 쿠키와 달리 저장 정보를 서버측에서 저장하여 **보안**을 강화하였으며, 저장용량 제한이 없습니다. 세션은 서버에 존재하는 객체로서 웹브라우저마당 하나 씩 자동 생성됩니다. 세션은 브라우저를 닫기전까지 클라이언트의 정보를 유지합니다. 한번 로그인한 사이트에서 다른 사이트로 이동 후, 다시 방문하여도 로그인이 유지되는 것은 세션의 사용 예가 되겠습니다. --- <a name="session-usage"></a> ### 세션객체 사용하기 세션에 정보를 등록하는 방법은 아래와 같습니다. ```java String name = "닌자"; int age = 31; session.setAttribute("testName", name); session.setAttribute("testAge", age); ``` 세션에 등록된 정보는 다음과 같이 얻어올 수 있습니다. ```java String userName = (String)session.getAttribute("testName"); int userAge = (Integer)session.getAttribute("testAge"); ``` 등록된 세션 정보의 삭제는 다음과 같이 합니다. ```java session.removeAttribute("testAge"); ``` 사용중인 세션의 완전 삭제는 invalidate() 메쏘드를 호출하여 수행합니다. ```java session.invalidate(); ``` --- ### 핵심 키워드 + [쿠키](#cookie) + [쿠키 활용 메쏘드](#cookie-usage) + [세션](#session) + [세션 활용 메쏘드](#session-usage) --- ### Next.. 세션객체를 이용한 보안강화 로그인/로그아웃 페이지 만들기