- 관련 글
- 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, 엄진영)
댓글