본문 바로가기

스프링

[WAS] 서블렛이란?

스프링 MVC 강의를 다시 복습해보며, 정리시작...

서블릿?

  • WAS에서 들어오는 요청에 대해 적절한 로직을 실행 후, 응답해주는 작은 프로그램(클래스)
  • 서블릿들은 서블릿 컨테이너에서 서블릿의 생성 + 호출 + 생명주기 관리가 된다.
  • 서블릿 객체들은 싱글톤으로 관리 (하나의 객체로 계속 재사용)
    • 공유 변수 사용 주의! (생성 후, 모든 요청에 대해 계속 재사용하니까...)
  • 동시 요청을 위한 멀티 쓰레드 처리를 지원 (서블렛 컨테이너에서 지원)
  •  

서블릿 컨테이너? 

  • 서블릿 컨테이너에서 서블릿의 생성 + 호출 + 생명주기 관리.
  • 요청이 오면, 쓰레드가 적합한 서블릿을 연결시켜준다. 

WAS의 동작 예시

  1. 웹 브라우저 ➡️ localhost:8080/req... 로 요청
  2. 요청에서 온 데이터로 request 객체 생성 후, 서블렛에 request 객체 전달 
  3. 서블렛은 받은 request 객체의 데이터를 가지고, 로직 수행
  4. 로직 수행 결과로 response 객체 생성 ➡️ 웹 브라우저에 전달

즉, request 와 response 객체는 요청이 올때마다 새로 생성되지만(요청과 함께 오는 데이터들은 계속 바뀌니까), 서블렛은 싱글톤 패턴으로 하나의 객체를 계속 사용함.

서블렛 코드 예시

@WebServlet(name = "testServlet", urlPatterns = "/test")
public class testServlet extends HttpServlet {
	
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) {
    	//1. req 데이터 꺼냄
        //2. 필요한 기능 수행
        //3. 필요 시, 결과를 res에 담아 브라우저에 전달
    }
}

강의 출처

https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1