Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링
- 메이븐
- JSP
- @Controller
- order by
- 뉴렉처
- 프레임워크
- 서브쿼리
- 인텔리제이
- 서블릿
- select
- 자바
- 코딩테스트
- 기술 대비
- MVC2
- toUpperCase
- MVC
- 코테
- 인프런
- STS
- 김영한
- AOP
- Model1
- 세션
- Model2
- @RestController
- DDL
- SQL
- Join
- 프로그래머스
Archives
- Today
- Total
Heestory
세션(Session)과 쿠키(Cookie)의 차이점과 사용 사례 본문
지난 포스팅에 이어 웹 애플리케이션 개발에서 **세션(Session)**과 **쿠키(Cookie)**는 사용자 상태를 관리하는 데 중요한 역할을 합니다. 이번 포스팅에서는 세션과 쿠키의 차이점, 각각의 사용 사례, 그리고 Java Spring Framework를 활용한 대표적인 예제를 통해 개념을 명확히 정리해보겠습니다.
세션(Session)과 쿠키(Cookie)의 차이점
특징 | 세션 (Session) | 쿠키 (Cookie) |
저장 위치 | 서버에서 관리 | 클라이언트(브라우저)에 저장 |
보안 | 상대적으로 안전 (데이터가 서버에 저장됨) | 보안에 취약 (클라이언트에서 접근 가능) |
데이터 크기 | 제한 없음 (서버 메모리나 데이터베이스 의존) | 4KB 제한 |
유지 시간 | 기본적으로 브라우저 종료 시 만료 (설정에 따라 유지 가능) | 만료 시간을 설정하여 브라우저에서 유지 |
사용 사례 | 로그인 상태 관리, 민감한 데이터 저장 | 사용자 설정 저장 (언어, 테마), 방문 기록 관리 |
세션(Session) 사용 예제: 로그인 상태 유지
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping("/user")
public class UserController {
// 로그인 처리
@PostMapping("/login")
public String login(@RequestParam String username, HttpSession session) {
// 세션에 사용자 정보 저장
session.setAttribute("username", username);
return "로그인 성공! 환영합니다, " + username;
}
// 사용자 정보 확인
@GetMapping("/info")
public String userInfo(HttpSession session) {
// 세션에서 사용자 정보 가져오기
String username = (String) session.getAttribute("username");
if (username != null) {
return "현재 로그인한 사용자: " + username;
} else {
return "로그인 상태가 아닙니다.";
}
}
// 로그아웃 처리
@PostMapping("/logout")
public String logout(HttpSession session) {
// 세션 초기화
session.invalidate();
return "로그아웃 완료!";
}
}
[과정]
- 로그인 시 HttpSession을 사용해 서버에 사용자 정보를 저장합니다.
- 로그인 상태 확인 시 세션에 저장된 데이터를 확인해 사용자 정보를 반환합니다.
- 로그아웃 시 session.invalidate()를 호출해 세션을 삭제합니다.
쿠키(Cookie) 사용 예제 : 방문 기록 관리
@PostMapping("/login")
public String loginWithCookie(@RequestParam String username, HttpSession session, HttpServletResponse response) {
// 세션에 로그인 상태 저장
session.setAttribute("username", username);
// 쿠키에 사용자 이름 저장
Cookie userCookie = new Cookie("username", username);
userCookie.setMaxAge(60 * 60 * 24 * 7); // 7일간 유지
userCookie.setPath("/");
response.addCookie(userCookie);
return "로그인 성공! 환영합니다, " + username;
}
- 세션으로 로그인 상태를 관리하면서, 쿠키로 사용자 이름을 저장해 브라우저에서 간단히 확인할 수 있도록 설정합니다.
- 클라이언트와 서버 간 효율적인 상태 관리를 위해 세션과 쿠키를 결합해 사용할 수 있습니다
요약 정리
- 세션은 보안이 중요한 데이터 관리 (로그인 상태, 민감한 정보)에 적합합니다.
- 쿠키는 간단한 사용자 설정 저장 (테마, 언어)이나 방문 기록 관리에 유용합니다.
'개발(0) > Java' 카테고리의 다른 글
파일 다운로드: POST 방식과 location.href의 차이점과 구현 방법 (0) | 2025.01.25 |
---|---|
동일 Host에서 다른 포트의 두 프로젝트 간 POST 요청 시 세션 충돌 문제 해결 방법 도메인 변경 (0) | 2025.01.13 |
[IntellJ]자바 프로젝트 중 빌드가 되지 않을 때 (0) | 2024.05.07 |
[코드 개선]파라미터가 많을 때 (0) | 2023.08.17 |