Servlet
Servlet
Servlet
- HTTP 요청에 동적인 처리가 가능한 서버 측의 자바 프로그램 및 그 기술
- MVC 패턴에서 controller의 역할으로, HTML을 통해 응답을 보냄
- javax.servlet.http.HttpServlet 클래스를 상속받음
- Java 코드 안에 HTML 코드가 있는 형식
Servlet container
Web container라고도 하는 servlet을 담고 관리하는 컨테이너. 다음과 같은 역할을 수행
- Servlet의 생명 주기 관리
- 소켓을 통해 web server와 통신
- 여러 스레드를 만들고 관리
- 보안 지원
동작 과정
- Web server가 HTTP 요청을 servlet container에 넘겨 줌
- Servlet container가
HttpServletRequest
,HttpServletResponse
객체를 생성 - 요청받은 URL과 설정 파일을 확인해 해당되는 servlet을 찾음
- 해당 servlet이 존재하지 않는다면
init
메소드를 실행해서 생성 후 메모리에 올림 - Servlet에서
service
메소드를 호출한 후 동적인 정보를 담은 컨텐츠 생성 - 동적 정보를 담은 HTML을
HttpServletResponse
객체에 담아 web server에 응답으로 보냄 - 이 과정이 끝나면
destory
메소드를 통해 2번에서 만든 객체들 삭제
Servlet 생명 주기
init
- Servlet이 메모리에 없는 경우 메모리에 올리고 초기화하는 메소드
- Servlet은 싱글톤으로 관리됨
service
- 요청을 받고 응답을 반환할 때 실행되는 메소드
- Get/Post 요청에 따라
doPost
혹은doGet
등을 호출 - 각각의 요청에 따라 개별 스레드에서 실행됨
destory
- Servlet container가 servlet에 종료 요청을 하면 실행되는 메소드
- Servlet 인스턴스를 메모리에서 제거
References
- https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
- https://gmlwjd9405.github.io/2018/10/28/servlet.html
- https://coding-factory.tistory.com/742
- https://mangkyu.tistory.com/14