yeon's blog

[Spring MVC 1편] 1. 웹 애플리케이션 이해 - 서블릿 본문

Spring/Spring MVC

[Spring MVC 1편] 1. 웹 애플리케이션 이해 - 서블릿

yeonii 2024. 1. 1. 18:41
본 내용은 인프런 사이트에서
김영한 선생님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의 내용을 정리한 것입니다.

 

 

🌱 서블릿

💡 서블릿(Servlet) 이란?

클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술

 

ex.

사용자가 아이디와 비밀번호를 입력하고 로그인 버튼을 눌렀을 때, 서버가 아이디와 비밀번호를 확인한 후 다음 페이지를 띄워 줘야 한다. 이러한 역할을 수행하는 것이 바로 서블릿(Servlet)이다!!

 

 

💡 HTML Form 데이터 전송 (POST 전송)

 

클라이언트가 웹 페이지에서 username, age를 입력하고 전송 버튼을 누르면, 위와 같이 웹 브라우저가 요청 HTTP 메시지를 생성해 서버로 전송한다.

 

WAS를 직접 구현할 경우 왼쪽의 로직을 전부 구현해야 한다. (매우 비효율적)

 

→ 서블릿을 지원하는 WAS을 사용하여 개발자는 의미있는 비즈니스 로직만 구현하면 된다.

* 초록색 부분을 제외한 모든 구현을 지원해 줌

 

 

💡 서블릿(Servlet) 특징

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
	
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) {
    	// 애플리케이션 로직
    }
}
  • urlPatterns의 URL이 호출되면 서블릿 코드가 실행된다.
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
  • 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있다.

 

💡 HTTP 요청, 응답 흐름

 

  1. HTTP 요청시, WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체를 호출한다.
  2. 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용한다.
  3. 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력한다.
  4. WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.

 

💡 서블릿 컨테이너

 

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
  • 서블릿 객체는 싱글톤으로 관리된다.
    • 고객의 요청이 올 때마다 계속 객체를 생성하는 것은 비효율적이므로 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다. 따라서 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.
    • 공유 변수 사용 주의
    • 서블릿 컨테이너 종료시 함께 종료
  • JSP도 서블릿으로 변환되어 사용한다.
  • 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.