목차
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 웹 프로그래밍 (오정임 지음, 루비페이퍼)
'WEB > Servlet, JSP' 카테고리의 다른 글
[JSP] JSP 기본 문법 - JSP 스크립팅 요소, 내장 객체 (0) | 2022.07.16 |
---|---|
[Servlet] 필터 (Filter) (0) | 2022.07.10 |
[Servlet] 요청 재지정 - sendRedirect(), forward(), include() (0) | 2022.07.10 |
[Servlet] 상태 정보 유지 기술 (0) | 2022.07.10 |
[Servlet] 서블릿 기본 개념과 요청/응답 처리 (0) | 2022.07.09 |
댓글