본문 바로가기
카테고리 없음

Context Parameter(컨텍스트 매개변수)로 web.xml에 DB 연결 정보 관리하기

by Leica 2020. 2. 11.
반응형
  • 관련 글

- Servlet Init Parameter(서블릿 초기화 매개변수)로 web.xml에 DB 연결 정보 관리하기

- Tomcat 서버 DataSource 설정 방법 (+JNDI)


Context Parameter(컨텍스트 매개변수)로 web.xml에 DB 연결 정보 관리하기

Servlet init parameter는 그 매개변수가 선언된 서블릿에서만 사용할 수 있고 다른 서블릿은 참조할 수 없다. 여러 서블릿이 공통의 환경 정보를 사용한다면 context parameter를 사용하는게 좋다. Context parameter는 같은 웹 어플리케이션의 서블릿들이 같이 공유할 수 있는 매개변수이다.

 

다음은 MySQL DB 연결 정보를 context parameter로 선언해서 DB 연결이 필요한 서블릿에서 사용하는 방법이다.

 

1. Context Init Parameter 선언

 

web.xml에 다음과 같이 context parameter를 선언한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<context-param>
    <param-name>driver</param-name>
    <param-value>com.mysql.cj.jdbc.Driver</param-value>
</context-param>
<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3307/knou</param-value>
</context-param>
<context-param>
    <param-name>username</param-name>
    <param-value>user</param-value>
</context-param>
<context-param>
    <param-name>password</param-name>
    <param-value>****</param-value>
</context-param>
cs

 

<param-name>에 매개변수 이름을, <param-value>에 매개변수 값을 설정한다.

위와 같이 <context-param>을 네개 작성해서 JDBC 드라이버 클래스, JDBC URL, 사용자 정보를 설정한다.

user와 ****에는 실제 사용자 정보를 작성해야 한다.

 

2. Context Parameter 사용

1
2
3
4
5
6
7
8
ServletContext sc = this.getServletContext();
Class.forName(sc.getInitParameter("driver"));
conn = DriverManager.getConnection(
        sc.getInitParameter("url"),
        sc.getInitParameter("username"),
        sc.getInitParameter("password")
);
stmt = conn.createStatement();
cs

Context parameter의 값을 얻으려면 ServletContext 인스턴스가 필요하다. getServletContext()로 해당 인스턴스를 반환받는다.

 

ServletContext 인스턴스를 통해 getInitParameter()를 호출하면 web.xml에 선언된 context parameter의 값을 얻을 수 있다.

 

이렇게 여러 서블릿에서 공통으로 참조하는 값이 있을 경우 context parameter로 정의하면 유지보수하기 좋은 코드를 작성할 수 있다.


  • 관련 글

- Servlet Init Parameter(서블릿 초기화 매개변수)로 web.xml에 DB 연결 정보 관리하기

- Tomcat 서버 DataSource 설정 방법 (+JNDI)

 

References

열혈강의 자바 웹 개발 워크북(프리렉, 2016, 엄진영)

반응형

댓글