Servlet

1. 동작 원리



1) 브라우저에서 서블릿 요청
2) 웹 서버가 서블릿 요청 인식, 서블릿 컨테이너에게 서블릿을 수행하도록 넘겨준다.
3) 서블릿은 스레드를 가동하여 서블릿 객체를 생성하여 작업을 수행한다.
4) 서블릿 객체의 작업이 종료되면 가동되었던 스레드가 종료된다.
5) 서블릿 수행 결과가 웹 서버에 전송되고, 이는 클라이언트에게 전송된다.

2. 생명주기


1.  init() : 객체가 생성되면 단 한번 호출된다.
2. doGet() / doPost() : 클라이언트 요청 처리(Get방식 / Post방식)
    - 여러 클라이언트가 동시에 요청을 하더라도 스레드가 생성되어 실행되기때문에 속도빠름
3. destroy() : (1)서블릿 컨테이너 종료시(톰캣 재가동) (2) 서블릿 내용 변경시 호출된다.

서블릿은 다른 웹기술보다 수행 속도가 빠르다.
왜냐하면, 두 번째 이상의 요청은 첫 번째 요청과 다르게 처리되기 때문이다.
서블릿을 처음 요청한 경우, 서블릿 클래스를 찾아 메모리에 로딩하여 서블릿 객체 생성한다. 
이때! 생성된 서블릿 객체는 요청이 끝난 후 에도 계속 메모리에 남아있게된다. 따라서, 이후의 호출부터는 서블릿을 생성하지 않고 이미 로딩된 서블릿으로부터 서비스만 받는다. 그렇기 때문에 수행 속도가 빠르다.




Jsp

1. 동작 구조
서블릿 컨테이너는 JSP를 직접 해석하지 못하고 JSP(.jsp)를 서블릿(.java)으로 변환한 후 서블릿만 해석한다.
ex) helloWorld.jsp 파일을 요청시, 웹 서버는 helloWorld_jsp.class를 달라는 걸로 안다.

(1) 브라우저에서 웹서버로 JSP페이지요청 (helloWorld.jsp)
(2) 웹서버는 JSP에 대한 요청을 서블릿 컨테이너에 넘긴다.
(3) 서블릿 컨테이너는 해당 JSP를 찾아 서블릿 파일 생성(helloWorld_jsp.java)
(4) 서블릿 파일은 컴파일 되어 서블릿 클래스 파일을 생성(helloWorld_jsp.class)
(5) 컴파일된 서블릿 클래스 파일을 웹 서버로 보낸다.
(6) 사용자는 서블릿의 출력 결과인 HTML형태로 응답결과를 보게된다.


(jsp페이지에서 오류가 발생하면 에러 메시지가 서블릿으로 변환된 코드로 알려준다.) - 그래서 서블릿을 알아야한다~!


JSP를 서블릿으로 변환되는 것을 최초 요청시 한번뿐이고, 이미 요청되었던 페이지가 다시 요청되면 이미 변환된 서블릿 파일로 서비스가 처리된다.


'WEB' 카테고리의 다른 글

[JSP] Servlet과 JSP  (0) 2018.07.09
JWT  (0) 2018.01.08

+ Recent posts