본문 바로가기
WEB/Servlet, JSP

[Servlet] 서블릿 파라미터 init-param, context-param 태그

by Amy IT 2022. 7. 10.

 

목차

     

     

    web.xml

    서버에서 서블릿 실행에 관한 정보를 설정할 때는 web.xml에 <servlet> 태그로 설정합니다. web.xml 파일은 서버가 시작할 때 웹 서버가 사용하는 파일로서, 웹 애플리케이션 서비스 실행에 관한 전반적인 내용을 정의하는 환경설정 파일입니다.

     

     

     

    서블릿 파라미터

    web.xml 파일의 <init-param>, <context-param> 태그는 서블릿에 변수를 전달할 때 사용하는 태그로서, 서블릿의 초기 설정값을 동적으로 할당할 때 유용합니다. 이 태그를 이용하면 서블릿을 실행하며 필요한 값을 외부에서 전달받아 사용할 수 있게 됩니다. 이렇게 서블릿 소스에 직접 값을 지정하지 않고 외부에서 전달받을 경우, 실행환경에 맞게 동적으로 값을 할당할 수 있게 되고 객체지향적인 측면에서 유지 보수성이 높아진다는 장점이 있습니다. 예를 들어 DB 연동을 위한 드라이버 로딩에 필요한 정보들을 web.xml 파일에서 설정해서 서블릿에서 사용할 수 있습니다.

     

    <init-param>

    <init-param> 태그로 설정해 준 파라미터 값은 해당 서블릿에서만 사용 가능합니다. 특정 서블릿에서만 필요한 변수가 있는 경우 유용하게 사용할 수 있습니다. web.xml 파일에서 key와 value로 값을 저장한 후, 해당 서블릿에서 getInitParameter(String name) 메소드로 value값을 꺼내옵니다.

    <!-- web.xml -->
    <servlet>
    	<servlet-name>InitParamServlet</servlet-name>
    	<servlet-class>com.controller.InitParamServlet</servlet-class>
    	<init-param>
    		<param-name>driver</param-name>
    		<param-value>oracle.jdbc.driver.OracleDriver</param-value>
    	</init-param>
    	<init-param>
    		<param-name>url</param-name>
    		<param-value>jdbc:oracle:thin:@localhost:1521:xe</param-value>
    	</init-param>
    </servlet>
    <servlet-mapping>
    	<servlet-name>InitParamServlet</servlet-name>
    	<url-pattern>/xxx</url-pattern>
    </servlet-mapping>
    @WebServlet("/InitParamServlet")
    public class InitParamServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String driver = getInitParameter("driver");
    		String url = getInitParameter("url");
    		System.out.println(driver);
    		System.out.println(url);
    	}
    }

     

    서블릿 객체 생성시 자동으로 생성되는 ServletConfig 객체를 이용해서 값을 꺼내올 수도 있습니다.

    @WebServlet("/InitParamServlet")
    public class InitParamServlet extends HttpServlet {
    	String driver;
    	String url;
        
    	public void init(ServletConfig config) throws ServletException {
    		System.out.println("init 메소드 호출");
    		driver = config.getInitParameter("driver");
    		url = config.getInitParameter("url");
    		System.out.println(driver);
    		System.out.println(url);
    	}
    }

     

    <context-param>

    <context-param> 태그로 설정한 파라미터 값은 모든 서블릿에서 사용할 수 있습니다. 모든 서블릿이 사용 가능한 공유변수라고 할 수 있습니다. web.xml 파일에서 key와 value로 값을 저장하는데, 이 데이터는 ServletContext라는 객체에 저장됩니다. 따라서 서블릿에서 데이터를 꺼내올 때는 getServletContext() 메소드로 ServletContext 객체를 생성한 후, 참조변수를 이용한 getInitParameter(String name) 메소드로 value 값을 꺼내옵니다.

    <context-param>
    	<param-name>driver</param-name>
    	<param-value>oracle.jdbc.driver.OracleDriver</param-value>
    </context-param>
    <context-param>
    	<param-name>url</param-name>
    	<param-value>jdbc:oracle:thin:@localhost:1521:xe</param-value>
    </context-param>
    @WebServlet("/xxx")
    public class ContextParamServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("ContextParamServlet.doGet()");
    		ServletContext ctx = getServletContext();
    		String driver = ctx.getInitParameter("driver");
    		String url = ctx.getInitParameter("url");
    		System.out.println(driver);
    		System.out.println(url);
    	}
    }

     

     

     

    참고

    처음 해보는 Servlet&JSP 웹 프로그래밍 (오정임 지음, 루비페이퍼)

    https://erjuer.tistory.com/20

     

     

     

    댓글