<< 학습 목표 >>
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 에서는 만나게 되니 태그명을 잘 기억해두자
'Servlet + JSP > Serlvet-Chapter04' 카테고리의 다른 글
| Chapter04. 자바에서 쿼리 보내고 결과 받기 / INSERT, UPDATE, DELETE (0) | 2023.03.06 |
|---|---|
| Chapter04. 자바와 DB 연동 (0) | 2023.03.04 |
| Chapter04. ServletContext (0) | 2023.03.03 |
| Chapter04. 포워딩을 할 때 값을 전달하는 방법 (0) | 2023.03.03 |
| Chapter04. 포워딩(Forwarding) / 클라이언트 몰래 요청 넘기기 (2) | 2023.03.03 |