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 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 비트 #바이트 #이진수
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축
- 썸네일 #이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 Spring Master 3강 쿠키와 세션이란 본문
쿠키란
클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일이다.
구성요소
- Name(이름) : 쿠키를 구별할 때 사용되는 키( 중복x)
- Value(값) : 쿠키의 값
- Domain(도메인): 쿠키가 저장된 도메인
- Path(경로) : 쿠키가 사용되는 경로
- Expires(만료기한 ) : 쿠키의 만료기한(만료기한 지나면 삭제된다)
세션이란
서버에서 일정시간 동안 클라이언트 상태를 유지하기위해 사용된다.
서버에서 클라이언트 별 유일무이한 세션 ID를 부여하고
클라이언트 별로 필요한 정보를 서버에 저장한다.
서버에서 생성한 세션ID는
클라이언트의 쿠키값(세션쿠키)으로 저장되어
클라이언트 식별에 사용된다.
세션 동작 방식(서버는 세션ID를 사용하여 세션을 유지)
- 클라이언트가 서버에 1번요청을하면
- 서버가 세션ID를 생성하고 쿠키에 담아서 응답 헤더에 전달한다 EX) 형태는 SESSIONID = 12A345
- 클라이언트가 쿠키에 세션ID를 저장한다(세션쿠키 안에 속해있다)
- 클라이언트가 서버에 2번을 요청하면 (쿠키와 세션ID포함해서 요청)
- 서버가 세션 ID를 확인하여 1번요청과 같은 클라이언트임을 인지할 수 있다.(쿠키의 세션ID 역할)
쿠키 생성 코드
public static void addCookie(String cookieValue, HttpServletResponse res) {
try {
// Cookie Value 에는 공백이 불가능해서 encoding 진행
cookieValue = URLEncoder.encode(cookieValue, "utf-8").replaceAll("\\+", "%20");
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, cookieValue); // Name-Value
cookie.setPath("/");
//만료기한
cookie.setMaxAge(30 * 60);
// Response 객체에 Cookie 추가
res.addCookie(cookie);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage());
}
}
Cookie에 저장될 Name과 Value를 생성자로 받는 Cookie객체 생성 코드
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, cookieValue);
Path와 만료시간 지정하는 코드
cookie.setPath("/");
//만료기한
cookie.setMaxAge(30 * 60);
- HttpServletResponse객체에 생성한 Cookie객체를 추가하여 브라우저로 반환한다.
- 반환된 Cookie는 브라우저의 Cookie저장소에 저장된다.
- Cookie생성은 범용적으로 사용될 수 있어 static (공용) 메서드로 선언
쿠키 읽는 코드
@GetMapping("/get-cookie")
public String getCookie(@CookieValue(AUTHORIZATION_HEADER) String value) {
System.out.println("value = " + value);
return "getCookie : " + value;
}
@CookieValue(Cookie의 이름)
위와 같이 어노테이션을 사용하고 인풋에있는 이름을 전달해주면
입력된 정보를 토대로 Cookie의 Value를 가져온다.
Servlet에서는
유일무이한 세션 ID를 간편하게 만들 수 있는
HttpSession을 제공한다.
HttpSession 생성 코드
@GetMapping("/create-session")
public String createSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 새로운 세션을 생성한 후 반환
HttpSession session = req.getSession(true);
// 세션에 저장될 정보 Name - Value 를 추가합니다.
session.setAttribute(AUTHORIZATION_HEADER, "Robbie Auth");
return "createSession";
}
- HttpServletRequest 를 사용하여 세션을 생성 및 반환 할 수 있다.
- req.getSession(true)
- 세션이 존재할 경우 세션을 반환하고 없다면 새로운 세션을 생성한다.
- 세션에 저장할 정보를 Name-Value형식으로 추가하고
위와같이 Cookie저장소에
JESSEIONID라는 Name으로 Value에 저장된다.
HttpSession읽는 코드
@GetMapping("/get-session")
public String getSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 null 반환
HttpSession session = req.getSession(false);
String value = (String) session.getAttribute(AUTHORIZATION_HEADER); // 가져온 세션에 저장된 Value 를 Name 을 사용하여 가져옵니다.
System.out.println("value = " + value);
return "getSession : " + value;
}
- req.getSession(false)
- 세션이 존재하다면 세션을 반환하고 없다면 Null을 반환한다.
- session.getAttribute(세션에 저장될 Name)
- Name을 상요하여 세션에 저장된 Value를 가져온다.
반응형
'Spring' 카테고리의 다른 글
스파르타 부트캠프 Spring Master 3강 필터(Filter) (0) | 2024.05.26 |
---|---|
스파르타 부트캠프 Spring Master 3강 패스워드 암호화 이해하기 (0) | 2024.05.25 |
스파르타 부트캠프 Spring Master 3강 인증과 인가란 (0) | 2024.05.24 |
스파르타 부트캠프 Spring Master 3강 같은 타입의 Bean이 2개일 경우 (0) | 2024.05.24 |
스파르타 부트캠프 Spring Master 3강 Bean을 수동등록 하는 방법 (0) | 2024.05.24 |