Client가 /save url, post방식으로 username=kim&age=20 이라는 request를 보냈을 때
서블릿이 비즈니스 로직을 제외한 모든 일을 자동으로 해준다.
urlPatterns 가 호출되면 서블릿 코드가 실행됨
HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
HTTP 요청 시
하나의 요청은 하나의 쓰레드
요청이 들어오면 WAS(서블릿 컨테이너, 톰캣)가 하나의 쓰레드를 할당하고 알맞은 서블릿을 호출한다.
다중요청에 쓰레드 하나만 사용한다면
요청1이 들어와서 쓰레드1이 할당되고 서블릿을 호출했는데 처리가 지연된다.
이때 요청2가 들어오면 요청1의 지연때문에 결국 두 요청 다 죽어버린다.
그렇기 때문에 요청마다 쓰레드를 생성해 독립적으로 수행된다.
멀티 쓰레드 단점
대부분의 WAS는 쓰레드 풀을 만들어 일정 수의 쓰레드를 미리 만들어 놓고 요청이 왔을 때 쓰레드를 할당하고 요청이 완료되면 다시 쓰레드 풀에 반납한다.
요청이 들어왔을 때 쓰레드 풀에 놀고 있는 쓰레드가 없으면 대기하거나 거절할 수 있다.
-> 기존요청은 안전하게 처리 할 수 있다.
멀티 쓰레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)은 주의해서 사용해야 한다.