본문 바로가기

web../servlet/jsp

서블릿의 생명주기 & 멱등

" 서블릿의 생명주기 " 

컨테이너는 서블릿 인스턴스를 생성한 다음 init()메소드를 호출한다. 그리고 나서 요청이 들어오면 새로운 스레드를 만들거나 할달해서 service()를 호출한다.

서블릿의 일생은 컨테이너가 서블릿 파일을 찾아서 로딩할 때부터 이다.

서블릿 생성자를 호출하는것은 단지 객체를 만드는 것이지 서블릿을 만드는것이 아니다.

 웹컨테이너는 서블릿클래스로딩 -> 서블릿 인스턴스화(생성자 실행) -> init() -> service() -> destroy()

init() : 서블릿 일생중에 한번만 실행됨. service()전에 호출되어야함.초기화 할 메소드정의(데이터베이스접속,다른객체에 서블릿 등    록)

service() : doGet() 이나 doPost()호출함.

destroy() : 자원해제함.init()메서드처럼 한번만 호출됨.


[중요] 컨테이너는 서블릿 인스턴스를 생성한 다음 init()메소드를 호출한다. 그리고 나서 요청이 들어오면 새로운 스레드를 만들거나 할달해서 service()를 호출한다.

[중요] 컨테이너는 서블릿 하나에 다수의 요청을 처리하기 위하여 다수의 스레드를 생성한다. 다수의 인스턴스를 만들지 않는다.

[중요] 클라이언트 요청을 처리하려고 요청마다 새로운 Request, Response객체를 생성한다.





" 멱등이란? "


멱등은 동일한 작업을 한 번이고 두 분이고 계속해서 할 수 있다. 어떤 부작용도 없이..

GET -> 멱등, POST -> 멱등아님.

HTTP GET은 말그대로 서버로부터 무엇인가를 가져오는 것이지 서버에 수정을 가하기 위한것이 아니다.GET은 HTTP 스펙에 따르면 멱등메소드이다.

POST는 반대로 멱등 메소드가 아니다. POST로 전송된 몸체의 정보는 트랜잭션을 위한 것이면, 이는 되돌릴수 있는 성질의 것이 아니다.이런 이유때문에 doPost()를 구현할 때

유의 하여야 한다. POST가 한번 이사 들어오는 경우 웹 애플리케이션에서 이런 상황을 제대로 처리할 수 있도록 하는 것은 개발자의 몫 이다.


[참고]GET을 멱등 메소드가 아닌걸로 쓸 수 있지만 그러지말자.



'web.. > servlet/jsp' 카테고리의 다른 글

ServletContextListener 란?  (0) 2013.01.09
ServletConfig & ServletContext  (0) 2013.01.09
HttpServletRequest 객체 & HttpServletResponse 객체  (0) 2013.01.09
HTML과 HTTP  (0) 2013.01.09
J2EE 란?? 컨테이너??  (0) 2013.01.08