728x90
쿠키클라이언트에 저장되는 작은 데이터 조각 1. 서버가 Set-Cookie 헤더를 통해 클라이언트에게 전달2. 클라이언트는 쿠키 저장소에 해당 쿠키를 저장한 후, 요청마다 자동으로 포함하여 서버로 전달 사용처- 사용자 로그인 세션 관리- 사용자 설정 저장- 광고 정보 트래킹 특징- 네트워크 트래픽 추가 유발- 최소한의 정보만 사용 (세션 id, 인증 토큰)- 보안에 민감한 데이터는 저장하면 안 됨 > 참고 - 민감한 데이터는 세션 저장소 또는 토큰(JWT 등)을 사용한다.종류- `세션 쿠키` :생명주기 설정 없고 브라우저 종료 시 쿠키 삭제- `영속 쿠키` : 생명주기 설정까지 유지되고 쿠키 삭제 생명주기 설정- `max-age` : 0 이나 음수를 지정하면 쿠키 삭제- `expires` : 만료일이 되..
HTTP 헤더표현 헤더- `Content-Type` : 표현 데이터의 형식- `Content-Encoding` : 표현 데이터의 압축 방식- `Content-Language` : 표현 데이터의 자연 언어- `Content-Length` : 표현 데이터의 길이 (byte 단위) 표현 헤더는 `요청`/`응답`에 둘 다 사용 > 참고 Transfer-Encoding(전송 코딩)을 사용하면 Content-Length 를 사용하면 안 된다. 협상 헤더(콘텐츠 네고시에이션)클라이언트가 선호하는 표현 요청 - `Accept` : 클라이언트가 선호하는 미디어 타입 전달- `Accept-Charset` : 클라이언트가 선호하는 문자 인코딩- `Accept-Encoding` : 클라이언트가 선호하는 압축 인코딩- `Ac..
상태 코드클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 - `1xx (Informational)` : 요청이 수신되어 처리 중- `2xx (Successful)` : 요청 정상 처리- `3xx (Redirection)` : 요청을 완료하려면 추가 행동이 필요- `4xx (Client Error)` : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가- `5xx (Server Error)` : 서버 오류, 서버가 정상 요청 처리 불가 2xx (Successful)- 200 OK : 요청 성공- 201 Created : 요청 성공해서 새로운 리소스 생성- 202 Accepted : 요청 접수되었으나 처리가 완료되지 않음- 204 No Content : 서버가 요청을 성공적으로 수행했..
클라이언트에서 서버로 데이터 전송 1. `쿼리 파라미터`- GET 요청에서 주로 사용- 검색, 필터링, 정렬과 같은 조회용 데이터를 서버에 보낼 때 적합- URL 길이 제한으로 대량의 데이터 전송하기 어려움- 보안상 데이터 노출 위험2. `메시지 바디`- POST / PUT / PATCH / DELETE 요청에서 사용- 리소스 생성, 수정, 삭제 등에 사용- API 요청에서 JSON 형식을 사용하는 경우가 많음- 대량의 데이터를 효율적으로 전송할 수 있으며, 보안성도 높음 상황별 데이터 전송 방식1. `정적 데이터 조회` : 이미지, 정적 문서 단순 조회 > `GET` (쿼리 파라미터 X)GET /static/star.jpg HTTP/1.1 2. `동적 데이터 조회` : 검색, 필터링, 정렬 시 사..
HTTP 란 ? - HyperText Transfer Protocol - `HTML`, `TEXT`, `IMAGE`, `음성`, `영상`, `파일`, `JSON`, `XML` 등을 HTTP 메시지로 전송: 거의 모든 형태의 데이터 전송 가능하다.: 서버 간의 데이터 주고받을 때도 사용한다. HTTP 역사HTTP/1.1 : 가장 많이 사용하는 버전 (RFC 9110 ~ 9112 개정 버전)(HTTP/2, HTTP/3 은 성능 개선에 초점) 특징- 클라이언트 서버 구조로 동작- 무상태 프로토콜 지향, 비연결성- HTTP 메시지 구조로 통신- 단순함, 확장 가능 클라이언트 서버 구조- Request Response 구조- 클라이언트와 서버가 분리 1. 클라이언트는 서버에 요청을 보내고, 응답을 대기2. 서버가..
빈 스코프 스코프란 빈이 존재할 수 있는 범위를 뜻하며,스프링은 기본적으로 싱글톤 스코프로 생성되며 그 외에 다양한 스코프도 지원한다. 종류- `싱글톤` 스코프- `프로토타입` 스코프- `웹` 스코프 빈 스코프 지정 방법// 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpublic class HelloBean {}// 수동 등록@Scope("prototype")@BeanPrototypeBean HelloBean() { return new HelloBean();} 싱글톤 스코프- 싱글톤의 빈을 요청하면 스프링 컨테이너는 `항상 같은 인스턴스`를 반환한다.- 같은 객체가 사용되어 성능 최적화를 이룬다.- 컨테이너가 빈의 생명주기를 관리한다. (@PreDestory 호출 O) ..
빈 생명주기 콜백 스프링이 기본적으로 생성하는 `싱글톤 스코프`로 설명을 이어나가겠다. 스프링 빈은 생성된 후 바로 사용할 수 없고, 특정 빈은 초기화 과정이 필요하다.(ex: DB 연결, 네트워크 연결 등)또한 스프링 빈은 컨테이너가 종료되기 전 자원을 안전하게 해제하는 소멸 과정이 필요하다. 초기화 콜백, 소멸 콜백초기화 콜백 : 스프링이 의존관계 주입을 완료하면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려준다.소멸 콜백 : 스프링 컨테이너가 종료되기 직전에 알려준다. 스프링 빈의 이벤트 라이프 사이클스프링 컨테이너 생성 > 스프링 빈 생성 > 의존관계 주입 > 초기화 콜백 > 사용 > 소멸 콜백 > 스프링 종료 > 참고 - 객체의 생성과 초기화는 분리하는 것이 좋다.(단순한 경우 X, 외부..
특정 타입의 빈을 동적으로 가져오는 방법class DiscountService { private final Map policyMap; private final List policies; public DiscountService(Map policyMap, List policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } /** policyMap = {rateDiscountPolicy=RateDiscountPolicy@xxxx, fixDiscoun..