안녕하세요. 미더덕입니다. 이번 시간엔 Spring MVC 프로젝트에서 WebClient를 사용 시 내부 동작이 어떻게 이루어지는 지에 대해 알아보도록 하겠습니다. 1. Spring MVC (톰캣 -서블릿 - 동기 멀티스레드) VS Spring WebFlux (네티 - 이벤트루프-비동기 단일/멀티스레드)우선 해당 상황을 이해하기 위해 Spring MVC의 기술적 바탕과 WebClient를 사용하기 위한 Spring WebFlux의 기술적 바탕이 다르다는 사실을 인지하고 있어야합니다. 2. Spring MVC - 톰캣 & 서블릿 기반의 동기 멀티스레드 기술 우리에게 익숙한 Spring MVC는 톰캣 서블릿 기반의 동기 멀티스레드 기술입니다. 톰캣 컨테이너는 스레드 풀에 미리 스레드를 생성시켜두고 HT..
안녕하세요. 이름을 바꿨습니다. 이제 미더덕이예요. 토이프로젝트에 적용해두었던 Lucy-XSS-Servlet-Filter가 Jakarta패키지를 지원하지 않음에 따라 XSS 방지 기능을 리팩토링하는 시간을 갖게 되었습니다. 이번 기간에 제가 부족한 부분을 많이 느껴 경험했던 이슈를 기초부터 자세히 정리하고 넘어가고자 합니다. 사실 이번 게시글은 XSS 방지에 대한 글이라기 보단 XSS 방지를 해결하기 위해 알아야할 선수 지식들에 대한 정리입니다. [이번 주제에서 다룰 내용들]1. HTTP - Method & Content-Type2. Spring Web Annotations3. HttpServletRequestWrapper 4. HttpMessageConverter 이번 게시글에선 가장 기초가 되는 ..
안녕하세요! 이번 게시글에선 일반적인 애플리케이션에서 Http 응답에 대한 방식을 어떻게 설정할지에 대해 알아보겠습니다. 스프링 프로젝트인 경우 보통 @ResponseBody 어노테이션, ResponseEntity 클래스, 커스텀 응답 클래스를 사용하는데요. 각각에 대해 설명해보겠습니다. @ResponseBody - HTTP 규격에 body만 지정할 수 있다. 스프링에서 제공해주는 @ResponseBody 어노테이션입니다. HTTP 규격에 맞춰 컨트롤러의 리턴 값을 Boby에 담아주는 역할을 합니다. 특히 API 서버로 구성된 프로젝트인 경우 컨트롤러에 @RestController 어노테이션을 설정하는 경우가 대부분인데@RestController 에 @ResponseBody가 부착되어 있으므로 해..
안녕하세요. 이번 게시글에서는 클라이언트가 요청을 보냈을 때 WAS에서 일어나는 작업에 대해 알아보도록 하겠습니다. 특히 디버거를 사용해서 직접 코드를 살펴보며 자세히 알아볼게요~! 먼저 클라이언트에 요청이 일어난 후 내부적으로 진행되는 순서를 아래와 같이 그려보았습니다.. 저번 게시글에 그렸던 그림과 약간 차이가 있죠? 저번 게시글이 틀렸었습니다.. Connector와 ThreadPool을 별도의 모듈로 표현했었는데, Connector내부에 ThreadPool이 존재하는 것이었습니다.. (이전글 수정은 나중에...) - 각 모듈의 사양을 구분하기 위해서 Connector(Coyote) 모듈은 노란색, ServletContainer(Catailna)는 파란색, Spring은 초록색으로 표현했습니다. - ..
이번 게시글에선 WAS가 어떻게 실행되고, 요청을 처리하는지 알아보겠습니다. 또한, 그 과정에서 WAS에 배포된 Spring 프로젝트를 어떻게 구동시키는지도 함께 알아보시죠,, WAS가 뭐야? - Tomcat… 우리는 면접 단골 문제로 web server와 web application server의 차이점에 대해서 외운 적이 분명히 있습니다.. web server는 정적 컨텐츠를 다루고, web application server는 동적 컨텐츠를 다룬다고 말이죠.. 그 후, 실무에서 WAS를 접할 땐 종종 이런식으로 접하게 됩니다. WAS 그거 스프링 서버 아냐? 톰캣? 아~ 그 고양이 그림~? 톰캣이 스프링 아니야? 응 아냐… 톰캣과 스프링은 분명 다른데 어디까지고 톰캣이고 스프링인지, 또한 각자의 구분..