분류 전체보기 56

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 02. 서블릿

1. 서블릿 세팅@ServletComponentScan //서블릿 자동 등록@SpringBootApplicationpublic class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); }}- 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.@WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void ser..

Spring 2025.02.06

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 01. 웹 애플리케이션 이해

1. 웹 서버, 웹 애플리케이션 서버웹 서버- 정적 리소스 제공, 기타 부가기능- 정적(파일) HTML, CSS, JS, 이미지, 영상- ex) NGINX, APACHE 웹 애플리케이션 서버 (WAS - Web Application Server)- 웹 서버 기능 포함- 프로그램 코드를 실행해서 애플리케이션 로직 수행- 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC...- ex) 톰캣(Tomcat) Jetty, Undertow 웹 시스템 구성- 정적 리소스는 웹 서버가 처리- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임- WAS는 중요한 애플리케이션 로직 처리 전담- 정적 리소스가 많이 사용되면 Web 서버 증설, 애플리케이션 리소스가 많이 사..

Spring 2025.02.05

[HTTP 웹 기본 지식] 06. 캐시와 조건부 요청

1. 캐시와 쿠키쿠키와 캐시는 둘 다 데이터를 임시로 저장해두어 필요할 때 사용하는 개념이지만, 그 동작 방식과 사용 용도에서 차이가 있음 캐시(Cache)쿠키(Cookie)동작 방식브라우저나 네트워크 장치에 저장되는 복사본클라이언트에 저장되는 작은 텍스트 파일 저장 내용웹 페이지의 리소스를 저장웹페이지의 사용자 상태나 동작에 대한 정보목적매번 서버에서 다운로드하지 않고 웹 페이지가 빠르게 렌더링 할 수 있도록 도와준다. 사용자를 식별하고 서버에서 필요한 정보를 제공한다.예오디오, 비디오 파일유저의 선호도(로그인 정보, 방문기록, 방문횟수) 2. 캐시 적용- 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.- 비싼 네트워크 사용량을 줄일 수 있다.- 브라우저 로딩 속도가 매우 빠르다.- ..

HTTP 2025.02.04

[HTTP 웹 기본 지식] 05. HTTP 헤더

1. 헤더 분류General 헤더: 메시지 전체에 적용되는 정보ex) Connection: close Request 헤더: 요청 정보ex) User-Agent: Mozilla/5.0 (Macintosh; ..) Response 헤더: 응답 정보ex) Server: Apache Representation 헤더: 바디 정보ex) Content-Type: text/html, Content-Length: 3423 2. 표현 (Representation)- 표현은 요청이나 응답에서 전달할 실제 데이터- 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공- 표현 헤더는 전송, 응답 둘다 사용 Content-Type: 표현 데이터의 형식Content-Encoding: 표현 데이터의 압축 방식- 데이터를 전달하는 곳..

HTTP 2025.02.04

[HTTP 웹 기본 지식] 04. HTTP 상태 코드

1. 상태 코드클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능- 1xx (Informational): 요청이 수신되어 처리중- 2xx (Successful): 요청 정상 처리- 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요- 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음- 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 2. 2xx클라이언트의 요청을 성공적으로 처리- 200 OK: 요청 성공- 201 Created: 요청 성공해서 새로운 리소스가 생성됨- 202 Accepted: 요청이 접수되었으나 처리가 완료되지 않았음  ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 ..

HTTP 2025.02.04

[HTTP 웹 기본 지식] 03. HTTP 메서드

1. GET- 리소스 조회- 서버에 전달하고 싶은 데이터는 query를 통해서 전달- 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음 2. POST- 요청 데이터 처리- 메시지 바디를 통해 서버로 요청 데이터 전달- 서버는 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행- 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용 3. PUT, PATCH, DELETEPUT- 리소스가 있으면 대체- 리소스가 없으면 생성- 클라이언트가 리소스 위치를 알고 URI 지정 (POST와의 차이점) PATCH- 존재하는 리소스 부분 변경 DELETE- 리소스 제거 4. HTTP 메서드의 속성안전- 호출해도 리소스를 변경하지 않는다. 멱등- 한 번 호출하..

HTTP 2025.02.04

[HTTP 웹 기본 지식] 02. HTTP 기본

1. HTTP 역사- HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X- HTTP/1.0 1996년: 메서드, 헤더 추가- HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전- HTTP/2 2015년: 성능 개선- HTTP/3 진행중: TCP 대신에 UDP 사용, 성능 개선- TCP에서 HTTP/1.1, HTTP/2, UDP에서 HTTP/3 사용 2. HTTP 특징클라이언트 서버 구조- 클라이언트는 서버에 요청을 보내고, 응답을 대기- 서버가 요청에 대한 결과를 만들어서 응답 무상태 프로토콜- 서버가 클라이언트의 상태를 보존X- 응답 서버를 쉽게 바꿀 수 있음 > 서버 확장성이 높음- 상태 유지는 최소한만 사용 (쿠키, 세션...) 비연결성- 통신 후 연결을 유지하..

HTTP 2025.02.04

[HTTP 웹 기본 지식] 01. 인터넷 네트워크

1. 인터넷 프로토콜 스택의 4계층2. IP 프로토콜- 지정한 IP주소에 데이터 전달- 패킷이라는 통신 단위로 데이터 전달IP 프로토콜의 한계- 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송- 비신뢰성: 중간에 패킷이 사라지거나 순서가 바뀔 수 있다.- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 수 있다. 3. TCP, UDPTCP- 연결 지향: 3 way handshake- 데이터 전달 보증- 데이터 순서 보장- 신뢰할 수 있는 프로토콜 UDP- TCP의 기능 없이 IP와 거의 같다.- IP + PORT + 체크섬 정도만 추가4. PORT- 한번에 둘 이상 연결해야 할 때 같은 IP 내에서 프로세스 구분- 0 ~ 65535: 할당 가능- 0 ..

HTTP 2025.02.03

[스프링 핵심 원리] 08. 빈 스코프

1. 빈 스코프란스코프는 스프링 컨테이너의 시작과 종료 사이에 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.- 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.- 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.- 웹 관련 스코프 (5번에서 자세히) 2. 프로토타입 스코프싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환한다.반면에 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다.여기서 핵심은 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 ..

Spring 2025.01.23

[스프링 핵심 원리] 07. 빈 생명주기 콜백

1. 빈 생명주기 콜백- 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.- 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클: 스프링 컨테이너 생성 > 스프링 빈 생성 > 의존관계 주입 > 초기화 콜백 > 사용 > 소멸전 콜백 > 스프링 종료 public class NetworkClient { private String url; public NetworkClient() { ..

Spring 2025.01.22