JSP/Servlet-Servlet 개요
16 Feb 2021 | JSPJSP/Servlet - Servlet 개요
-
Servlet Container
- 서블릿과 JSP는 동적 콘텐츠를 생성하는 웹 컴포넌트이다
- 컨테이너는 이런 웹 컴포넌트를 저장하는 저장소 역할, 메모리 로딩, 객체 생성 및 초기화 등 서블릿의 생명주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행한다
- 컨테이너는 웹서버와 서블릿 사이의 통신을 지원한다
- 컨테이너는 새로운 요청이 들어올 때 마다 자바 스레드를 생성하여 사용자의 요청을 처리한다
-
Servlet
-
서블릿은 웹 서버에서 실행되는 자바 프로그램이다
-
클라이언트의 요청을 서버에서 실행 후 결과값을 클라이언트에게 전송
-
HTTP 프로토콜로 통신하는 웹의 특징을 활용할 수 있는 API가 제공된다
-
최초 생성된 서블릿 객체를 재사용하여 처리속도가 빠르다
-
javax.servlet.http.HttpServlet 클래스를 상속받아서 service() 메소드를 재정의하여 서블릿 프로그램을 작성
-
HttpServlet의 부모 클래스는 GenericServlet으로 service() 메소드를 제외한 모든 메소드를 가지고 있다
-
서블릿의 실행 순서
- 클라이언트로부터 처리 요청을 받는다 : 웹 서버에서 요청을 받아 헤더의 URI를 분석, 요청받은 페이지가 서블릿이면 서블릿 컨테이너에 넘긴다
- 서블릿 객체 생성 : 서블릿 컨테이너는 최초 요청 여부를 판단하여 객체를 생성한다. HttpServletRequest, HttpServletResponse 객체를 생성, url을 분석하여 서블릿 객체 생성, 사용자의 요청을 처리하기 위한 스레드 생성
- init() 메소드 실행 : 서블릿 객체 생성 후 init() 호출, 초기화를 담당한다
- service() 메소드 실행 : 클라이언트의 요청에 맞는 처리를 한다.(doGet, doPost)
- 요청 방식에 따른 메소드 실행 후 응답을 클라이언트에게 전송
- destroy() 메소드를 호출하여 자원해제 작업을 실행한다 (서비스,서버 중지 시)
-
-
배포서술자(Deploy Descriptor : DD)
- web.xml 파일
- 배포서술자는 서블릿과 jsp를 어떻게 실행하는지에 대한 환경설정 정보가 들어있다
- 배포서술자는 서블릿과 URL을 매핑시키는 작업을 한다
- 배포 서술자는 URL 매핑 외에 보안 설정, 오류 페이지 설정, 초기화 구성 등의 내용 등도 설정 할 수 있다
-
초기 파라미터
- ServletConfig : 컨테이너가 서블릿을 생성할 때 생성되는 객체
- DD를 읽어 이름/값의 쌍으로 된 초기화 파라미터를 읽어서 저장한다
- ServletConfig 객체는 Servlet 객체당 한 개씩 생성
<servlet> <init-param> <param-name>이름</param-name> <param-value>값</param-value> </init-param> </servlet>
- ServletContext : 웹 애플리케이션 당 하나씩 생성
- 웹 애플리케이션 전역에서 참조할 수 있는 초기화 파라미터를 저장한다
- web.xml의 가장 위쪽에 위치시키는 것이 좋다
<context-param> <param-name>이름</param-name> <param-value>값</param-value> </context-param>
@Override public void init() throws ServletException { String name = getServletContext().getInitParameter("이름 혹은 값"); String name = getServletConfig().getInitParameter("이름 혹은 값"); }
참고 자료
KG 아이티뱅크 강의 자료
처음 해보는 Servlet&JSP 웹 프로그래밍