서블릿 프로그램을 개발할 때 많이 사용하는 객체로는 이전에 살펴봤던 HttpServletRequest와 HttpServletResponse뿐만 아니라 ServletConfig와 ServletContext도 있습니다.
01. ServletConfig 객체
ServletConfig는 특정 서블릿 객체에 대한 설정 정보를 담은 객체입니다.
web.xml 파일에서 <servlet>의 자식 태그로 <init-param>을 추가하면 해당 서블릿에 대한 설정 정보를 담은 ServletConfig에 InitParameter를 설정할 수 있습니다. ServletConfig 객체에 설정된 InitParameter 정보는 그 서블릿에서만 접근할 수 있기 때문에 로컬 파라미터라고 불립니다.
예시
다음은 web.xml 파일에서 LoginServlet에 로컬 파라미터 encoding을 설정한 모습입니다.
외부 설정 파일인 web.xml에서 ServletConfig에 설정한 파라미터 정보를 Servlet에서 어떻게 추출할 수 있을까요? 그 방법으로는 두 가지가 있습니다.
- 첫 번째 방법: ServletConfig 객체를 매개변수로 받을 수 있는 init() 메서드를 오버라이딩한다.
- 두 번째 방법: HttpServlet이 GenericServlet로부터 상속받은 getServletConfig() 메서드를 사용한다.
어떤 방법을 사용하든지 아래의 출력 결과와 같이 Servlet에 encoding에 해당하는 값인 'UTF-8'이 잘 불러와졌습니다.
ServletConfig 객체는 언제 사용할까요? 인코딩 정보, 경로 등 변경될 가능성이 있는 정보를 외부의 설정 파일로 분리하고 싶을 때 사용합니다. ServletConfig 객체는 getInitParameter(String name) 이외에도 다음과 같은 메서드도 제공합니다.
- ServletContext getServletContext(): ServletContext 객체 반환
- String getServletName(): web-xml에서 정의한 서블릿의 이름 반환
02. ServletContext 객체
ServletConfig가 하나의 서블릿에 대한 설정 정보를 담은 객체라면 ServletContext 객체는 여러 서블릿에 대한 설정 정보를 담은 객체입니다. ServletContext는 서블릿 컨테이너와 밀접한 개념입니다.
web.xml 파일에서 <context-param> 태그에 파라미터를 등록하면 ServletContext에 파라미터를 설정할 수 있습니다. 서블릿 컨테이너가 생성되는 순간 <context-param> 태그에 등록된 파라미터는 자동으로 ServletContext 객체에 세팅됩니다. <context-param>은 서블릿 컨테이너가 생성한 모든 객체에서 접근할 수 있기 때문에 글로벌 파라미터라고 불립니다.
예시
다음은 web.xml 파일에서 글로벌 파라미터로 msg를 설정한 모습입니다.
다음은 서블릿에서 ServletContext에 세팅된 글로벌 파라미터 정보를 추출해보는 코드입니다. HttpServlet이 GenericServlet으로부터 상속받은 getServletContext() 메서드를 이용하여 ServletContext 객체를 생성합니다. 그리고 ServletContext의 getInitParameter() 메서드를 호출하여 파라미터 정보를 추출합니다.
아래의 출력 결과를 보면 Servlet에 msg에 해당하는 값인 '안녕'이 잘 불러와졌음을 알 수 있습니다.
ServletContext가 제공하는 메서드에는 이 외에도 다양한 메서드들이 있습니다.
- setAttribute(String name, Object value), getAttribute(String name), removeAttribute(String name): 데이터 등록 / 추출 / 삭제
- getMimeType(String file): 특정 파일에 대한 MIME 타입 반환
- getRealPath(String path): 특정 파일의 실제 경로 반환
- getRequestDispatcher(String path): 특정 path의 실행 결과를 포함시키거나 요청 포워딩을 위한 RequestDispatcher 객체 반환
- getServerInfo(): 서버의 이름과 버전 정보 반환
- getContextPath(): 웹 애플리케이션의 context path를 반환
- getSessionTimeout(): 세션의 기본 유효 시간을 반환
참고 자료
도서
- 채규태, <06장 서블릿 핵심 객체>, <<채쌤의 Servlet&JSP 프로그래밍 핵심>>, 쌤즈, 2022년, 175~185쪽
'Java > Servlet' 카테고리의 다른 글
[Servlet] 04-1 | HttpServletRequest, HttpServletResponse (0) | 2024.06.02 |
---|---|
[Servlet] 03-4 | DAO, VO(또는 DTO) 패턴 적용 (1) | 2024.05.02 |
[Servlet] 03-3 | JDBC 코드 재사용성 높이기 (0) | 2024.05.02 |
[Servlet] 03-2 | JDBC 프로그래밍 5가지 단계 (0) | 2024.05.02 |
[Servlet] 03-1 | JDBC API와 JDBC 드라이버 (0) | 2024.05.02 |