Servlet 그리고 Spring Web MVC

Panda·2022년 1월 28일
0

Spring

목록 보기
3/42

CGI

Servlet을 설명하기 전에
오래 전으로 거슬러 가서

CGI 규약을 살펴보자.
위키에 따르면
공통 게이트웨이 인터페이스(Common Gateway Interface)의 약어로, 웹서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약들을 말한다.
그리고 동적 웹페이지를 처리하기 위해 나타났다고 되어있는데
약간 WAS 서버 개념이랑 비슷한것 같았다.

CGI을 보면 알겠지만 Request 마다 Process를 생성해 작업을 하고
각각 Process가 새로운 CGI 구현체를 생성해 작업을 해서...
많은 사용자들의 Request를 감당할수 없는 상황이 생기게 된다.

Servlet

이제 Servlet 살펴보자.

일단 사용자의 Request를 받고나서 Process가 아닌 Thread를 생성해 작업을 하는것을 볼 수가 있고
하나의 Servlet 구현체(싱글톤)에 접근을 하는 것을 알 수가 있다.

하지만 Servlet도 단점이 존재하였는데 그것은 바로
URL마다 Servlet 객체를 생성해야하고 그것을 Web.xml에 일일이 추가해야된다는 점이였다.

이것은 매우 귀찮은 작업이고 효율적인 자원의 사용이 아닌것 같다...

그러면 우리가 쓰고 있는 Spring Web MVC에서는 어떻게 처리를 해줄까?

Spring Web MVC

Spring Web MVC에서는 바로 Dispatcher Servlet을 사용한다.

사용자의 Request가 들어왔을때 Dispatcher Servlet이 핸들러 매핑을 통해서
URL 각각의 맞는 컨트롤러로 처리를 해줄수 있게 한다.

여기서 핸들러 매핑은 여러가지 방법이 존재하는데
우리가 쉽게 쓰고있는 @RequestMapping, @GetMappping, @PostMapping 등등
어노테이션으로 매핑하는 방법이 있습니다.

MVC 개념에서는 View를 반환해서 HTML응답을 하지만

요즘은 프론트, 백엔드 분리가 된 상황이고 따라서 API를 구현하는데
View라는 개념이 필요할지는 의문이다.

그래서 @RestController 와 같은 어노테이션을 활용해서
작업하면 될것같다.

profile
실력있는 개발자가 되보자!

0개의 댓글