4차 산업의 시대, AI 의 시대를 살아가고 있는 우리다.
급격한 변화들이 휙휙 지나가고 있는 와중에도
"Web" 의 세계에선 지금도 모든것이 HTTP 로 시작해 HTTP 로 끝난다.
HTML, Text, Image 등 모든 형태의 Data 들은 결국 HTTP 의 손, HTTP 메세지를 거쳐 주고 받아진다.
Https:// 에 주소를 입력하고 1초도 걸리지않아 나오는 화면.
하지만 그 찰나에 HTTP 메세지가 오고가는 과정은 생각보다 복잡했다.
----------------------
( 소켓을 연결하고, HTTP 요청 메세지를 파싱하고, HTTP body 메세지를 파싱하고, data를 사용할 수 있게끔 파싱하고, 저장프로세스를 실행하고 ... )
드디어 < 비니지스로직을 실행, DB 를 다녀오고 >
client 님이 요청한걸 보내드리기 위해 다시 HTTP의 세계로 들어간다.
( HTTP 응답메세지 생성 블라~~~~~~~~~~~~~~블라 TCP/IP 응답 까지. )
-----------------------
어질어질 하다.
하지만, 매번 이 복잡한 과정을 다 해야하는 건 상당히 귀찮은 일이라고 생각한 선인분들께서
Servlet 을 만들어주셨다.
Servlet은 위의 과정에서 ( http 메세지를 생성, 파싱, data파싱, 소켓연결 tcp/ip 관련 된 복잡한 과정들 )을 다 해주고,
우리가 조금더 < 비지니스로직, DB > 에만 집중할 수 있도록 해준다.
@WebServlet(name = "HelloServlet", urlPatterns = "/home")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response){
//API 로직 작성
}
}
이렇게 되면 꽁짜로 HTTP 스펙을 편리하게 사용할 수 있다.
HTTP 형식으로 요상하게 메세지가 들어와도, Servlet이 자동으로 파싱해서 넘겨주기 때문에
request.getusername(); 같이 request 객체를 그대로 써먹을 수 있다.
response 도 마찬가지로 Servlet 이 자동으로 HTTP 메세지로 파싱해주기 때문에
내가 작성한 코드가 편리하게 Client 에게 HTTP 형태로 전달될 수 있다.
-
이 귀하디 귀한 Servlet 을 제공해 주는건 바로 WAS, Tomcat 과 같은 서버 형님들이다.
WAS 서버들은 Servlet Container 를 만들어 그 안에 Servlet 을 생성할 수 있게 해주었다.
여기서 Servlet 객체는 싱글톤으로 관리 - 오직 유일한 하나의 객체로만 생성해서 공유해서 사용, 재사용 된다.
그리고 Servlet Container 는 (즉 WAS 는)
가장 중요한 기술인 멀티쓰레드 처리 기술을 지원해준다고 한다.
(정리)
WAS 가 제공해주는 최고의 기능 두 가지
1. Servlet 제공 = > <비지니스 로직 / DB > 를 제외한 ( HTTP 메세지 파싱과정 및 관련 기능들 전반 ) 을 자동으로 처리해준다.
( HTTP 는 프로그래밍 기저에 깔려있는 중요한 개념. 깊게 공부할 필요가 있다. )
2. Servlet Container = > (Servlet 관리) + 멀티쓰레드 기능 지원
멀티쓰레드 기능은 서버를 관리하는데 핵심 기능. 중요.
'Back to the Spring' 카테고리의 다른 글
변수 { id } 를 품은 URL (0) | 2022.06.15 |
---|---|
세션 VS JWT(토큰) .Feat 쿠키 (1) | 2022.06.12 |
MultiThread - 몇 명이든 내가 처리한다. (0) | 2022.06.11 |
Lombok 롬복이 누구니? (0) | 2022.06.10 |
한글 깨짐 Tomcat? Java11? mustache! (0) | 2022.06.07 |