HTTP 요청에 대한 결과로 다양한 응답을 보낼 수 있다. 응답을 보낼 때는 여러 형태의 데이터를 보낼 수 있는데, 이 데이터들에 대해 간략히 살펴보고자 한다. 백엔드 개발자는 정적 리소스, 동적 HTML 페이지, HTTP API(REST API)를 어떻게 제공할 것인지에 대한 고민을 해야한다. 정적 리소스 주로 고정된 HTML, 이미지, CSS, 영상 등을 제공한다. 주로 클라이언트가 요청하면, '웹 서버'에서 해당 데이터를 내려준다. 동적 HTML 페이지 주로 요청에 대한 결과로 '동적'으로 HTML 파일을 생성해서 전달한다. 예를 들면 주문을 했을 때, WAS가 주문 내역을 조회한 다음에 동적으로 HTML을 'THYMELEAF'로 생성한다. 그리고 생성한 HTML을 웹 브라우저에 응답해준다. HTT..
들어가면서 먼저 HTML Form 형태로 입력받은 데이터를 서버에 전송해야하는 상황을 가정해보자. 이 때, HTML Form 코드와 여기 들어온 입력이 HTTP 요청 메세지로 바뀐 것을 확인하자. 이 때 HTML FORM에서 HTTP 요청 메세지로 바꿔주는 것은 웹 브라우저가 해준다. HTTP 요청 메세지는 서버에 전달된다. 서버는 이 HTTP 요청 메세지를 받고 어떤 일을 해야할까? HTTP 요청 메세지를 서버에서 처리하기 위해서는 서버는 기본적으로 오른쪽에 있는 일들을 모두 해야한다. TCP/IP 연결시켜주고, 요청 메세지를 파싱해서 읽고, Content-Type도 확인해야한다. 그리고 비즈니스 로직을 실행하고 응답 메세지를 만들어서 클라이언트에 전달해줘야한다. 현실적으로 서버가 해야하는 모든 과정들..
클라이언트의 요청 클라이언트가 서버로 요청을 하면 WAS는 응답을 한다. TCP/IP 커넥션이 연결되고 서블릿이 호출된다. → 이 때 서블릿은 '쓰레드'가 호출해준다. 쓰레드 쓰레드는 서블릿을 호출해주는 역할을 한다. 쓰레드는 어플리케이션 코드를 순차적으로 실행해준다. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행된다. 쓰레드가 없다면 자바 어플리케이션은 실행이 불가능하다. 왜냐하면 실행시켜주는 애가 없기 때문이다. 쓰레드는 한번에 하나의 코드 라인만 실행한다. 따라서 동시 처리가 필요하면 여러 쓰레드가 필요하다. 단일 요청 - 쓰레드 하나만 있을 때 클라이언트에서 서버로 요청이 온다. WAS는 이 요청에 놀고 있는 쓰레드를 할당해준다. 쓰레드는 이 요청에 대한 서블릿을 호출한다...
웹, HTTP 기반으로 통신 현재 대부분의 웹은 통신할 때, HTTP 프로토콜을 사용해 통신한다. HTTP 프로토콜로 필요한 데이터를 송신하는데, 이 때 자료는 간단한 JSON 파일 뿐만 아니라 이미지, 음성 등 다양한 형태의 파일을 보낼 수 있다. 웹 브라우저에 URL을 치면 클라이언트는 서버에 HTTP 형식으로 요청을 보내고, 서버는 클라이언트에게 HTTP 형식으로 응답을 보낸다. 즉, 클라이언트 → 서버, 서버 → 클라이언트는 모두 HTTP 기반으로 동작한다는 것으로 이해를 할 수 있다. 웹 서버의 종류 웹 서버 웹 서버는 HTTP 프로토콜을 기반으로 동작함. 웹 서버는 정적 리소스(Static Resource), 기타 부가 기능을 제공한다. 정적 리소스는 항상 동일한 형태를 제공해주는 리소스로 이..