HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🛁
공부기록
/
🕜
면접준비
/
스프링 면접질문

스프링 면접질문

태그
서블릿이 뭐죠?서블리의 특징이 뭐에요그럼?서블릿의 생명주기를 말씀하실 수 있나요?서블릿 컨테이너가 뭔가요?필터는 뭐에요?MVC 패턴에 대해서 설명해보세요그래서 어떻게 발전했죠? - JSP

서블릿이 뭐죠?

  • 서블릿은 동적인 웹 페이지에서 사용되는 요청과 응답에 대한 자바 규격입니다.
  • HTTP 요청과 응답의 흐름을 간단한 메서드 호출만으로 정의할 수 있도록 도와줍니다.
    • 서블릿이 정의되어 있지 않다면 서비스 로직이 돌아가기 전, 항상 네트워크 연결에 대한 구현을 해줘야하기에 개발자에게 편의성을 제공해주는 장점이 존재합니다.

서블리의 특징이 뭐에요그럼?

  • 기본적으로 HTML을 사용하여 응답하게 되며
  • MVC 패턴에서의 컨트롤러 역할을 합니다.
  • 상속 순서는 Servlet > GenericServlet > HttpServlet 구성되어 있습니다.
  • 스레드 단위로 동작합니다.
 

서블릿의 생명주기를 말씀하실 수 있나요?

notion image
  1. 클래스 로더가 서블릿 클래스를 먼저 로드합니다.
  1. 요청이 들어오면 필요한 서블릿 클래스 인스턴스를 생성합니다.
  1. 생성된 서블릿 객체를 init() 메서드로 초기화합니다.
    1. 한번 생성된 서블릿 객체는 싱글톤으로 계속 메모리에 남아있게 되지만 GC의 대상이 되긴 합니다.
    2. 초기화 작업에 비용이 많이 들기 때문에 재사용을 하는 것입니다.
  1. service() 메서드 호출하여 서비스 로직을 실행하게 됩니다.
  1. 서블릿 컨테이너가 종료되면 destory() 메서드를 호출하게 됩니다.
 

서블릿 컨테이너가 뭔가요?

  • 서블릿 객체를 관리하는 컨테이너로써 서블릿 객체의 생명주기를 관리합니다.
  • 특징으로 소켓을 구현하여 스트림을 생성해 클라이언트와 통신을 책임집니다.
    • 요청이 들어오면 HttpServletRequest와 HttpServletResponse 객체를 생성합니다.
  • 컨테이너 로드시 스레드풀에 스레드를 만들어 놓고 요청시 스레드를 할당합니다.
    • 스레드는 필요한 서블릿을 호출하여 요청을 수행합니다.
    • 원래는 요청이 들어올 때 자동으로 스레드를 만들지만, 한계가 없기에 너무 많은 스레드를 생성하게 되면 서버가 다운될 수 있어 스레드 풀을 사용합니다.
 

필터는 뭐에요?

  • 요청이 서블릿을 들어갈때와 나갈때 거치는 필터가 존재합니다.
  • 생명주기는 서블릿과 유사합니다.
    • 요청이 들어오면 init()으로 초기화 후 doFilter()로 작업을 수행하며 체인형태로 필터가 연쇄적으로 연결되어있어 필터를 모두 거칩니다.
    • 서블릿 컨테이너가 종료되면 destory() 메서드를 호출합니다.
  • 마지막 필터에는 서블릿 service()를 호출하고 호출이 끝나면 추가 작업을 정의할 수 있습니다.
 

 

MVC 패턴에 대해서 설명해보세요

  • Model, View, Controller 세가지 구성요소로 이루어진 디자인 패턴입니다.
    • Model : 표현하고자 하는 데이터
    • View : Html과 같은 UI 요소
    • Controller : Model과 View를 연결하는 인터페이스 역할을 합니다.
 
notion image
 
  • 위 예시 코드를 보면 하나의 서블릿이 요청을 받고 서비스 로직을 처리 후 html에 바인딩 하는 것을 보실 수 있습니다. 모델 뷰 컨트롤러의 책임을 하나의 서블릿을 모두 맡아 처리한느 것이죠
  • 누가봐도 복잡하고 유지보수하기 힘들어져 MVC 패턴이 발전하게 됩니다.
 

그래서 어떻게 발전했죠? - JSP

  • 그래서 Java Server Page 즉 JSP가 나오게 됩니다. HTML에 자바 코드를 넣어 동적인 웹 페이지를 만드는 기술입니다.
  • 오래된 기술이라고 생각할 수 있지만 사실 많은 역사가 있는 기술로 알고 있습니다.
  • JSP의 초기 모델 MVC1은 다음과 같습니다.
notion image
  • 자바 코드와 페이지 문법이 혼재되어 있는 형태로 보통 자바 코드블록에서 자바빈으로 등록된 모델을 불러와 사용할 수 있습니다.
    • 즉 JSP의 파일 하나가 컨트롤러와 뷰의 책임을 맡는 것입니다.
    • notion image