servlet

김형민·2021년 10월 11일
0

클라이언트가 요청을하면 서블릿컨테이너(톰캣)이 요청을 받는다.

최초 요청일 시 객체를 생성 아니면 이미 생성한 객체를 재사용

클라이언트에게 요청을 받는다
=> 정적인 파일이면 아파치가 받고 톰캣은 일은 안한다.
=> 자바스크립트, 자바같은 파일을 요청을 받으면 톰캣이 일한다.

하지만 스프링은 이러한 파일을 요청할 수가 없다..
왜냐면

URL - 자원에 접근할때 사용하는 방식
ex) http://naver.com/a.png
URI - 식별자를 통해 접근하는 방식
ex) http://naver.com/picture/a

스프링은 URL방식을 막아놨다.
URI를 통해 요청을 해야하는데 특정한 파일요청을 할 수 없다.

요청 시에는 부조건 자바를 거쳐야한다..!

즉, 아파치는 톰캣에 작업을 넘겨야한다

요청이 왔을때 서블릿컨테이너가 객체를 생성하는 방식

클라이언트가 요청(자바관련)을 하면

Sevlet이 만들어져야한다.

서블릿이란 - 자바코드로 웹을 할 수 있는 것
서블릿컨테이너 - 서블릿을 모아놓은 것

  1. 요청을 받으면 스레드를 하나 생성한다.
  2. 이 스레드가 서블릿 객체를 생성
  3. 서블릿 객체에서 db커넥션, 필요한 데이터 가져오기 등등...을 하고 html로 바꿔서 응답하고 수 많은 일을한다.

스레드를 만드는 이유는 동시에 여러 요청이 올 수 있어 요청마다 스레드를 생성한다.
만들지 않으면 뒤의 요청들은 계속 뒤로 밀린다(동시접근 허용)

다른 요청이 오면 스레드2 생성 서블릿 객체 생성....
이렇게 스레드를 계속만들고 서블릿 객체를 생성한다.

스레드 개수는 제한해 놓을 수 있다
ex) 20개로 제한하고 앞의 20개의 요청이 끝나지 않은 채 21번째 요청이 들어온다? => 대기상태로 들어간다..

1번째 쓰레드가 응답을 완료하면 21번째 요청작업 시작하는데 이때 1번 쓰레드가 사라지는 것이 아닌 재사용 되며 21번째 작업에 착수한다.

그래서 속도가 빠르다고 한다..!
만들고 삭제하는 연산 => 스레드 갯수를 정해놓고 재사용한다(속도 향상)

최종적으로 만들어 지는게 HttpServletRequest & HttpServletResponse가 만들어지며 이것들은 톰캣이 가지고 있는 객체..

출처 https://getinthere.tistory.com/11

profile
항해 중인 개발자

0개의 댓글