서블릿을 보면 굉장히 도움이 되는 무언가라고 많이 들었고 실제로도 많이 사용된다고 배웠는데...
솔직히 저는 그게 뭔지 잘 모르겠네요.

Servlet을 공부하다보니 웹과 클라이언트간의 송수신에 대한 개념이 주용하더라구요.

- 웹 서버는 데이터를 전송하기 위해 HTTP 프로토콜을 사용합니다.
- 일반적인 상황에서 사용자는 브라우저에 URL(https://velog.io/@genie-99)을 입력합니다.
- 그리고 사용자는 웹페이지를 얻게 됩니다.
- 웹서버가 하는 일은 웹페이지를 사용자에게 전송하는 것입니다.

DispatcherServlet를 해석해보면 Spring MVC에서 모든 요청을 가장 먼저 받아서, 적절한 Controller에게 넘겨주는 중앙 Servlet이라고 한다. 라고 나와있는데요...
여기서 Controller, Spring MVC, Servlet이라는 생소한 단어가 나오는데 우선 가장 기본이 되는 Servlet에 대해서 알아봅시다.

Specification(명세서)를 보면 container로 관리되는 Jakarta 기술이 사용된 웹 구성품이라고 나와있다.
즉, Servlet은 다음과 같은 특징을 가집니다.
- Web Programming에서 Client의 요청을 처리
- 그 결과를 다시 Client에게 전송하는 자바 프로그래밍 기술
- Servlet 클래스의 구현 규칙을 따른다.
서블릿은 서블릿 컨테이너 속에서 관리가 되며 init, service, destory 메서드를 통해서 만들어지고 실행되며 지워집니다.

- 서블릿의 라이프 사이클을 위한 세가지 필수적인 메소드를 정의
- init()
- service()
- destroy()
- 서블릿 생명 주기 중 초기화 단계에 호출된다.
- javax.servlet.ServletConfig 인터페이스를 구현하는 오브젝트가 전달된다.
- 이를 통해 서블릿이 웹 애플리케이션에서 초기화 매개변수(parameter)에 접근할 수 있도록 한다.
- 서블릿이 호출되면 이 service()메서드가 실행
- 각각의 요청들은 별도로 나누어진 스레드에서 처리된다.
- 웹 컨테이너는 모든 요청에 대해 서블릿의 service() 메소드를 요청한다.
- service() 메소드는 요청의 종류를 판별하고 요청을 처리할 적절한 메소드로 전달한다.
- 서블릿 객체가 파괴되어야 할 때 호출된다.
- 해당 서블릿이 가지고 있던 자원을 release 해준다.
- HTTP 요청(request)을 받아서 처리.
- 요청에 대한 응답(response)
- Client의 요청에 동적으로 작동
- Java Thread를 이용해 동작
- HTML 변경시 재컴파일 필요
- Java코드에 HTML이 들어가 있음
- HTML을 사용해서 응답
@WebServlet(name = "helloServlet", urlPatterns ="/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException {
}
}