여니의 프로그래밍 study/Spring & Spring Boot

Servlet에 대해 알아보자

여니's 2023. 5. 4. 16:37

 


서블릿은

클라이언트(웹 브라우저)와 서버(웹 어플리케이션 == was) 간의 통신을 처리하고

동적인 웹 페이지 생성, 데이터베이스 연동 등의 기능을 수행함

 

즉 서블릿이란

자바 웹 어플리케이션에서 동적인 처리를 수행하는 자바 클래스이고

HTTP 요청과 응답 프로토콜을 다루기 위한 API를 제공한다.

 

 

WAS 내에 서블릿 컨테이너가 있고

서블릿 객체를 자동으로 생성 및 호출, 생명주기까지 관리해준다. 

 

 

서블릿 컨테이너란 

톰캣처럼 서블릿을 지원하는 WAS 를 의미한다. 

 

 

WAS에서 서블릿 컨테이너를 통해 서블릿을 실행시키고 HTTP 요청을 처리한다.

즉 서블릿 컨테이너가 해당 요청을 처리할 서블릿을 찾아서 실행시킨다.

 

 

요새는 서블릿 대신 스프림 프레임워크를 사용하는데,

스프링 프레임워크는 서블릿을 기반으로 구현되어 있다.

 

내부적으로 서블릿 기술을 활용하여 동작하기 때문에

별도로 서블릿을 선언할 필요 없이 자동으로 서블릿을 생성하고 관리한다.

 


특히 HttpServlet은 Servlet API 중에서 가장 중요한 클래스로

HTTP 요청과 응답을 처리하는 기능을 제공한다.

HttpServlet 클래스를 상속받아서 서블릿을 개발하면 된다. 

 

1. HttpServlet 클래스를 상속받는 클래스를 만든다.

public class MyServlet extends HttpServlet{
	// 서블릿 기능을 구현하는 코드를 작성
}

2. HTTP 요청을 처리하는 메서드인 doGet() 또는 doPost()를 오버라이딩합니다.

 

public class MyServlet extends HttpServlet{
	protected void doGet(HttpServletRequest request, HttpServletResponse, response)	
		throws ServletException, IOException{
		// HTTP GET 요청을 처리하는 코드 작성
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse, response)	
		throws ServletException, IOException{
		// HTTP POST 요청을 처리하는 코드 작성
	}

}

 

3. 필요한 경우, init() 메서드와 destroy() 메서드를 오버라이딩하여

초기화 작업과 마무리 작업을 수행할 수 있습니다.

public class MyServlet extends HttpServlet{
	public void init() throws ServletException {
        // 서블릿 초기화 작업을 수행하는 코드를 작성합니다.
  }
    
  public void destroy() {
      // 서블릿 마무리 작업을 수행하는 코드를 작성합니다.
  }

	protected void doGet(HttpServletRequest request, HttpServletResponse, response)	
		throws ServletException, IOException{
		// HTTP GET 요청을 처리하는 코드 작성
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse, response)	
		throws ServletException, IOException{
		// HTTP POST 요청을 처리하는 코드 작성
	}

}