<< 학습 목표 >>

1. ServletConfig 타입 객체에 대해서 설명할 수 있다.

2. load-on-startup 태그에 대해서 설명할 수 있다.


서블릿으로 개발하다 보면 ServletContext와 ServletConfig 타입 객체를 사용해야하는 경우가 종종 생김

여기서는 ServletConfig 타입 객체가 무엇이고 이 객체들을 통해서 어떤것들을 할 수 있는지 알아보자

 

이전 글에서 보았던 ServletContext 타입 객체의 그림을 다시 보자

 

ServletContext는 서블릿 컨테이너(Servlet Container)가 생성해 관리함

ServletConfig는 서블릿이 생성해 관리함

 

이와 같이 ServletConfig는 서블릿 마다 생성됨

ServletConfig는 서블릿과 관련된 정보를 가지고 있음

서블릿의 이름은 무엇이고 서블릿을 호출하기 위한 경로는 어떻게 되고 등

그리고 ServletConfig 객체를 사용해서 ServletContext 를 꺼낼 수도 있음

 

우리가 직접 ServletConfig를 사용할 일은 없으므로 ServletConfig를 사용해서 ServletContext를 꺼내는 코드를 보고만 넘어가자

package chapter04;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ServletInfo")
public class ServletInfo extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ServletConfig servletConfig = getServletConfig();
		
//		ServletContext servletContext = getServletContext();
		ServletContext servletContext = servletConfig.getServletContext();
	}

}

 

먼저 서블릿에서 ServletConfig를 꺼낼 때는 getServletConfig 메서드를 사용함

ServletConfig 타입 객체를 사용해서 ServletContext 를 꺼낼 때는 getServletContext 메서드를 사용함

위 코드에서 주석 처리한 것처럼 ServletContext 를 꺼낼 때 또 다른 방법이 있으니 두 방법 중 상황에 맞는 방법을 사용하면 됨

ServletConfig 타입 객체는 ServletContext 보다 더 사용할 일이 없을 것임


여기서 알아야할 더 중요한 점은 web.xml에 서블릿 관련 설정하는 방법임

web.xml에 적어둔 서블릿 관련 설정 정보가 ServletConfig 타입 객체에 들어감

서블릿으로 개발하면서 ServletConfig 타입 객체를 사용할 일은 거의 없지만

web.xml에 서블릿 관련 설정은 서블릿으로 개발하면서 또는 Spring을 배울 때 사용되므로 알야함

서블릿 관련 설정을 하나 하나 다 이해할 필요는 없고 각 태그만 잘 외우고 있으면 됨

 

사실 web.xml에 서블릿 관련 설정을 이번에 처음 배우는게 아님

앞서 https://codingaja.tistory.com/18 이 글에서 web.xml에 서블릿 관련 설정을 해봤음

 

이제 web.xml에 서블릿 관련 설정하는 방법을 다시 보자

 

web.xml에 이와 같이 servlet, servlet-mapping 태그를 사용해 서블릿 관련 설정을 할 수 있음

servlet 태그는 프로젝트가 서블릿을 인식하게 해주는 태그이고 servlet-mapping 태그는 클라이언트가 서블릿에 접근할 수 있게 해주는 태그임

 

서버가 실행(Start)되면 서블릿도 함께 실행된다고 했음

( 서블릿 실행과 서블릿 호출은 전혀 다름 혹시 ? 라는 생각이 들면 https://codingaja.tistory.com/18 이 글을 읽고 오자 )

서블릿이 실행될 때 실행 순서를 지정해줘야하는 경우가 있음

그때는 servlet 태그 내 load-on-startup 태그(1)를 넣어서 실행 순서를 지정해줌

 

load-on-startup 태그가 없다면 실행 순서를 지정해주지 않았으므로 서버 임의대로 서블릿을 실행시킴

그러나 간혹 서블릿이 순서대로 실행되야하는 경우가 생김

이때 load-on-startup 태그를 사용해 순서를 명시함

 

load-on-startup 태그 내 1부터 기입하면 되고 숫자가 작은 서블릿이 먼저 실행됨

 

load-on-startup 태그는 아무리 늦어도 Spring 에서는 만나게 되니 태그명을 잘 기억해두자

728x90
LIST