공부/Spring

Servlet Working Flow

ironk.im 2021. 5. 4. 09:32
반응형

스프링의 전체적인 실행 흐름을 알기 위해서는 Servlet에 대해서 먼저 이해하는게 좋다.

그렇다면 서블릿이란 무엇인가?

이를 알기 위해 과거로 돌아가 보면 과거의 웹 페이지들은 주로 정적인 HTML 페이지로 구성되어있고, 이러한 것은 동적인 컨텐츠를 보여주는데 한계가 있었다.

ex) 로그인하면 OOO님 안녕하세요! 같은 것을 보여주는 것

이러한 동적인 컨텐츠를 만들어 내기위해 자바 진영에 만들어진 웹 기술이 바로 Servlet이다.

Servlet은 HttpServlet 클래스는 클래스를 구현하여 만들 수 있다.

class TestServlet extends HttpServlet {
		// 이런 느낌
}

그리고 사용자의 요청에 맞는 Servlet을 찾아 실행하고 관리하는 역할을 하는 것이 Servlet Container 이고 우리가 알고있는 Tomcat 이고 WAS(Web Application Server)라고 부른다.

그리고 이러한 동적인 웹 컨텐츠를 생성하는 것이 아닌 정적인 컨텐츠 HTML, CSS 등을 제공하는 것이 바로Apache HTTP Server WEB 서버다.

보통 우리가 아파치 톰캣이라고 부르는 것은 이 둘을 말하는 것이다.

 

서블릿 컨테이너 서블릿 실행 흐름( https://lalwr.blogspot.com/2018/03/blog-post_20.html )

 

Servlet의 아래의 과정으로 실행이 된다.

  1. init() : 인스턴스가 생성될 후 최초 한번 수행 하는 메소드
  2. service() → doGet() / doPost() 등 : 요청을 받으면 service 메소드가 실행되고 요청 메소드에 따라 doGet, doPost 중 선택되어 실행 하여 비즈니스 로직 수행 후 결과 반환
  3. destroy() : 서즐릿 종료시 호출되는 메소드

이처럼 서블릿을 이용하면 정해져있는 메소드를 구현 하기만 하면 비즈니스 로직을 수행할 수 있다.

좋은 것 처럼 보인다.

그런데 과연 홈페이지의 기능이 하나가 아니라면? ⇒ 필요한 기능을 구현한 파일이 많아진다.

그리고 구현된 것을 다른 곳에 사용하고 싶다면 과연 어떻게 될까? ⇒ HttpServlet을 extends하고 있어서 다른 곳에서 사용하기는 어려워 보인다.

우리의 java 파일은 점점 많아지게 되고 이를 유지보수 하기 어려워진다.

이러한 문제를 해결하기 위한 시도에 의해 생겨난 것이 Spring 이다.

반응형