JSP에서 web.xml과 Application 객체를 활용한 MariaDB 연결 방법

JSP에서 web.xml과 Application 객체를 활용한 MariaDB 연결 방법

이번 글에서는 JSP에서 web.xmlapplication 내장 객체를 활용하여 MariaDB에 연결하는 방법에 대해 알아보겠습니다. 이 방법은 데이터베이스 연결 정보를 코드에서 분리하여 관리할 수 있어 유지보수와 확장성에 유리합니다.

1. web.xml에 데이터베이스 접속 정보 설정

먼저, 데이터베이스 접속 정보를 web.xml 파일에 설정합니다. 이렇게 하면 코드에서 직접 DB 접속 정보를 수정하지 않고, web.xml 파일만 수정하여 접속 정보를 변경할 수 있습니다.

<!-- MariaDB 데이터베이스 접속 정보 -->
<context-param>
<param-name>MariaDBDriver</param-name>
<param-value>org.mariadb.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>MariaDBURL</param-name>
<param-value>jdbc:mariadb://localhost:3307/school</param-value>
</context-param>
<context-param>
<param-name>MariaDBId</param-name>
<param-value>blueshare</param-value>
</context-param>
<context-param>
<param-name>MariaDBPwd</param-name>
<param-value>1234</param-value>
</context-param>

위 코드에서 각 param-nameparam-value는 데이터베이스 연결에 필요한 정보를 의미합니다. 이 정보를 application 객체를 통해 JSP에서 접근할 수 있습니다.

2. 데이터베이스 연결 클래스 작성

다음으로, web.xml에 설정한 정보를 활용하여 데이터베이스에 연결하는 클래스를 작성합니다. 이 클래스는 application 객체를 통해 데이터베이스 접속 정보를 가져옵니다.

package common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletContext;

public class JDBConnect {
    public Connection con;
    public Statement stmt;  
    public PreparedStatement psmt;  
    public ResultSet rs;

    // 기본 생성자
    public JDBConnect() {
        try {
            // JDBC 드라이버 로드
            Class.forName("org.mariadb.jdbc.Driver");

            // DB에 연결
            String url = "jdbc:mariadb://localhost:3307/school"; // 데이터베이스 URL (school은 데이터베이스 이름)
            String id = "blueshare"; // 데이터베이스 사용자 ID
            String pwd = "1234"; // 데이터베이스 사용자 암호
            con = DriverManager.getConnection(url, id, pwd); // 데이터베이스에 연결

            System.out.println("DB 연결 성공(기본 생성자)");
        }
        catch (Exception e) {            
            e.printStackTrace();
        }
    }

    // web.xml 활용
    public JDBConnect(ServletContext application) {
	try {
	    // JDBC 드라이버 로드
	    String driver = application.getInitParameter("MariaDBDriver");
	    Class.forName(driver);
	
	    // DB에 연결
	    String url = application.getInitParameter("MariaDBURL");
	    String id = application.getInitParameter("MariaDBId");
	    String pwd = application.getInitParameter("MariaDBPwd");
	    con = DriverManager.getConnection(url, id, pwd);
	
	    System.out.println("DB 연결 성공(인수 생성자)");
	} catch (Exception e) {
	     e.printStackTrace();
	}
    }

    // 연결 해제(자원 반납)
    public void close() { 
        try {            
            if (rs != null) rs.close(); 
            if (stmt != null) stmt.close();
            if (psmt != null) psmt.close();
            if (con != null) con.close(); 

            System.out.println("JDBC 자원 해제");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 클래스에서 생성자는 두 가지입니다. 하나는 데이터베이스 정보를 코드에 직접 입력해 사용하는 방식이고, 다른 하나는 web.xml에 설정된 정보를 활용하여 데이터를 가져오는 방식입니다.

  • Connection : 데이터베이스 연결을 나타내는 객체입니다. 이 객체를 통해 SQL 명령을 실행하고 데이터베이스와의 통신을 관리합니다.
  • Statement : SQL 문을 실행하기 위한 객체입니다. 정적 SQL 쿼리를 실행할 때 사용됩니다.
  • PreparedStatement : 미리 컴파일된 SQL 문을 실행하기 위한 객체입니다. 파라미터가 포함된 동적 SQL 쿼리를 실행할 때 사용됩니다.
  • ResultSet : SQL 쿼리의 결과를 저장하는 객체입니다. SELECT 문을 실행한 후, 결과를 테이블 형식으로 반환받아 이 객체를 통해 처리할 수 있습니다.

3. 연결 테스트 JSP 작성

이제 위에서 작성한 연결 관리 클래스를 사용하여 데이터베이스 연결을 테스트하는 JSP 페이지를 작성합니다. application 객체를 통해 web.xml의 설정 값을 불러와 DB에 연결합니다.

<%@ page import="common.JDBConnect" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head><title>JDBC 테스트 (web.xml 활용)</title></head>
<body>
    <h2>JDBC 테스트 (web.xml 활용)</h2>
    <%
    JDBConnect jdbc = new JDBConnect(application);
    jdbc.close();
    %>
</body>
</html>

위 JSP 페이지를 실행하면, MariaDB와의 연결이 정상적으로 이루어졌는지 확인할 수 있으며, 콘솔에 연결 성공 메시지가 출력됩니다.

web.xml과 Application 객체를 활용한 MariaDB 연결 결과 화면

☞ JDBC를 사용하여 데이터베이스에 연결하는 방식은 학습과 기본적인 개념 이해를 위해 매우 중요합니다. 그러나 실무에서는 웹 애플리케이션의 성능과 확장성을 위해 커넥션 풀을 사용하는 것이 일반적입니다. 이후 단계에서는 Connection Pool과 JNDI(Java Naming and Directory Interface) 등을 사용하는 방법에 대해 알아보겠습니다.

관련 이전 게시글

위로 스크롤