티스토리 뷰
서블릿의 실행 과정
1. init() 호출
-컨테이너에서 서블릿 객체를 생성한 다음에 호출한다. service() 이전에 실행
-서블릿 객체를 초기화
-초기화할 내용(DB 접속 등)이 있는 경우 재정의
2. service() 호출
-클라이언트의 요청 후 컨테이너에서 쓰레드를 이용하여 호출
-요청의 HTTP 메소드(GET, POST)를 참조하여 해당 메소드(doGet(), doPost()) 호출 판단
-거의 재정의 하지않음
3. doGet() / doPost() 호출
-service() 메소드에서 HTTP 메소드(GET, POST)를 참조하여 호출
-비즈니스 로직을 구현 또는 호출
-두 메소드 중 하나는 반드시 재정의하여 구현해야한다.
4. destroy() 호출
-컨테이너에서 서블릿 객체를 제거할 때 호출한다. 거의 웹 애플리케이션을 종료할 때
-서블릿 객체 초기화 및 실행 도중에 할당한 자원을 제거
-init() 메소드를 재정의하였거나 제거할 자원이 있는 경우 재정의
서블릿 로딩 & 초기화
컨테이너 시작 시 배포된 웹 애플리케이션 및 서블릿을 확인
로딩 : 컨테이너 시작 시 로딩 또는 최초 클라이언트 요청 시 로딩
초기화 : 서블릿 로딩 후 init() 호출하여 서블릿을 초기화 함.
service() 메소드는 서블릿 초기화 완료 후에 실행 가능함.
서블릿 객체는 초기화 과정을 통해 컨테이너로부터 서블릿 자격을 부여 받음
init() / destroy() 메소드 재정의
서블릿 일생에서 한번만 실행되어야 할 코드는 서블릿 클래스 안에 init()메서드와 destroy()메서드를 선언하고 그 안에 쓴다.
컨테이너는 서블릿 클래스를 로딩한 후에 서블릿 클래스의 init(ServletConfig config) 메서드를 호출하여 초기화한다.
init(ServletConfig config) 메서드에서 init() 메서드를 호출한다.
service() 메서드 실행
컨테이너의 클라이언트 요청 실행 과정
HttpServletRequest
-요청 유형, 쿠키, 세션 등 HTTP 요청에 대한 인터페이스를 추상화한 것으로 HTTP 요청 접근 관련 메소드 포함
멱등 - 아무 부작용 없이 동일한 작업을 한번 이상 계속 할 수 있다는 것을 의미
HttpServletResponse
-서블릿에서 클라이언트에 응답 데이터를 보내기 위해 HttpServletResponse 객체를 사용
HTTP 요청 리다이렉트 & 디스패치
클라이언트 요청을 받은 서블릿(또는 JSP)가 직접 처리하지 않고 클라이언트 요청을 다른 사이트로 넘기는 것
Redirect
클라이언트 요청에 대해 완전히 다른 URL로 방향을 바꾸어 처리하는 동작, 서블릿 리다이렉트는 웹 브라우저가 처리
Dispatch
URL이 바뀌지않고 서버의 다른 컴포넌트(Servlet or JSP)에게 넘겨 처리하도록 동작
출처 : http://www.hanbit.co.kr/store/books/look.php?p_code=B5476653696
'Back-end > Servlet & JSP' 카테고리의 다른 글
다시 하자 기초! 쿠키와 세션 (0) | 2019.05.15 |
---|---|
다시 하자 기초! JSP와 서블릿에 대하여 (0) | 2019.05.13 |
MyBatis 동적쿼리문 짜기 (0) | 2019.02.17 |
Naver smtp를 이용해 이메일로 인증번호 보내고 패스워드 변경하기 (5) | 2019.01.15 |
웹 사이트 아이디 저장 (0) | 2019.01.10 |