티스토리 뷰

책/톰캣 최종분석

2장

IT공부블로그 2019. 3. 22. 21:07
728x90
반응형

모든 서블릿은 javax.servlet.servlet의 인터페이스를 구현한다

 

javax.servlet.servlet 안에는 5개의메소드가 있는데  getServletlnfo,  getServletConfig  그중 init, service, destroy는 생명주기와 연관있다

 

init 은 최초요청이 들어와서 서블릿 클래스를 인스턴스화하고 init을 실행한다

init은 요청이 들어오기전에 성공적으로 끝내야한다

init안의 내용은 초기값 관련내용으로 채워지며 오직1번만 실행되는것만 작성할수있다.

보통은 init안을 비워둔다

 

service  request객체와 response객체를 받고 그것들을 가지고 일을 처리한다

 

destroy 톰켓이 종료되었거나 메모리정리가 필요한시점 service에서 모든 스레드가 빠져나간뒤 제한시간후에 호출된다

 

 

완전한 기능을 갖춘 서블릿 컨테이너는 서블릿의 HTTP 요청을 다음과 같이 처리해야 한다.

어떤 서블릿을 처음으로 요청받았을 때, 해당 서블릿 클래스를 로드하고 서블릿의 init

소드를 (딱 한 번) 호출한다.

각 요청에서 javax. servlet. ServletRequest javax. servlet. ServletResponse 인스턴스를 생성한다.

 

ServletRequest ServletResponse 객체를 전달해 서블릿의 service 메소드를 호

출한다.

서블릿 클래스를 종료하면서 서블릿의 destroy 메소드를 호출하고 서블릿 클래스를 언로

드해야 한다

 

1장의 await과는 다르게 정적자원만 처리하는게 아닌 서블릿에대한 처리도할수있다

 

serVletRequest를 구현한 request를 사용하기때문에 serVletRequest의 모든 메소드를 구현해야한다

지금은 필요한거만 구현하고 차후에 다 구현

 

serVletResponse를 구현한 response를 사용하기때문에 serVletRequest의 모든 메소드를 구현해야한다 지금은 필요한거만 구현하고 차후에 다 구현

 

autoflush(printwriter에 데이터가 들어오면 바로 그걸 전송) true println일경우 바로 보내지만 print는 보내지않는다

 

 

서블릿 요청 처리방법

1. uri를 가져온다 /servlet/어쩌구servlet

 

2. 서블릿 이름을 추출한다 어쩌구servlet

 

3. URI클래스로더를 생성한다

 

4. URI클래스로더에게 로드할 클래스들이 있는곳을 알려준다

 

5. 로드할 클래스들이 있는곳으로 가서 서블릿이름에 맞는 클래스를 로드한다

 

6. 그 로드한 서블릿클래스를 인스턴스화한다

 

7. 인스턴스화된 서블릿의 service를 호출하여 인자로받은 servletRequest, servletResponse service의 인자로 넘겨준다

 

 

 

URI클래스로더는 클래스로더의 자식클래스이며        3가지 생성자를이용하여 만들수있다

그중 간단한 urls 인자만 주면 생성할수있는데         urls는 검색할위치가 담긴 배열을 주면된다

 

서블릿 컨테이너에서 클래스로더가 로드할 클래스들이 있는곳을 레파지토리라고한다

 

 

init이 최초1번만 실행되는이유는 서블릿 인스턴스가 만들어지면 그것의 스레드를 만들어서 사용한다 앞으로 이거에대한 요청이 들어올시 인스턴스가 만들어지게아니라 스레드가 만들어지기때문에 init  최초1번만 호출된다

 

2장의 첫번째 어플리케이션에서 request service에 인자로주는데 servletRequest로 업캐스트되서 넘겨주기때문에 다른사용자가 다운캐스팅해서 막 쓰게되면 보안이 위험해질수있기 때문에

 

2번째 어플리케이션에서는 퍼사드패턴을 이용한 퍼사드 리퀘스트객체를 만들어서 request객체를 퍼사드 리퀘스트객체의 인자로 주게되면 servlet리퀘스트로 들어가기때문에 다운캐스팅을 하더라도 servletRequest이기때문에 request가 가지고있던 parse, parseuri는 조금 안전해질수있다


728x90
반응형

' > 톰캣 최종분석' 카테고리의 다른 글

1장  (0) 2019.03.21
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함