JSTL(JavaServer Pages Standard Tag Library)에서 데이터베이스 작업을 수행하려면 먼저 데이터 소스를 설정해야 합니다. 이 역할을 담당하는 것이 바로 <sql:setDataSource> 태그입니다. 이 태그는 데이터 소스 구성 변수를 직접 설정하거나, 다른 JSTL 데이터베이스 액션(sql:query, sql:update 등)의 입력값으로 사용할 수 있도록 데이터 소스 정보를 스코프 변수(scope variable)에 저장합니다.
sql:setDataSource 태그의 주요 속성
<sql:setDataSource> 태그는 다음과 같은 속성들을 지원합니다. 모든 속성은 필수가 아니며, 필요에 따라 선택적으로 사용할 수 있습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| driver | 등록할 JDBC 드라이버 클래스의 이름 | No | 없음 |
| url | 데이터베이스 연결을 위한 JDBC URL | No | 없음 |
| user | 데이터베이스 사용자 이름(ID) | No | 없음 |
| password | 데이터베이스 접속 비밀번호 | No | 없음 |
| dataSource | 미리 준비된 데이터베이스 객체 | No | 없음 |
| var | 데이터베이스를 나타낼 변수의 이름 | No | 기본 데이터 소스로 설정됨 |
| scope | 데이터베이스를 나타내는 변수의 적용 범위(scope) | No | Page |
실전 예제: MySQL 데이터베이스 연결
예제를 통해 실제 사용 방법을 살펴보겠습니다. 다음과 같은 MySQL 데이터베이스 환경을 가정합니다.
JDBC MySQL 드라이버(com.mysql.jdbc.Driver)를 사용합니다.
로컬 머신(local machine)에 존재하는 TEST 데이터베이스에 연결합니다.
user_id 계정과 비밀번호를 사용하여 TEST 데이터베이스에 접근합니다.
위 매개변수들은 여러분의 MySQL 또는 기타 데이터베이스 환경 설정에 따라 달라질 수 있습니다. 위 조건을 바탕으로 setDataSource 태그를 사용하는 예제는 다음과 같습니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/sql" prefix = "sql"%>
<html>
<head>
<title>JSTL sql:setDataSource Tag</title>
</head>
<body>
<sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver" url = "jdbc:mysql://localhost/TEST" user = "user_id" password = "mypassword"/>
<sql:query dataSource = "${snapshot}" sql = "..." var = "result" />
</body>
</html>
코드를 살펴보면 sql:setDataSource 태그가 생성한 데이터 소스를 snapshot이라는 변수에 저장하고, 이후 sql:query 태그에서 ${snapshot} 표현식을 통해 해당 데이터 소스를 참조하여 SQL 쿼리를 실행합니다. 이처럼 <sql:setDataSource> 태그는 이후에 사용되는 모든 SQL 관련 태그들의 기반이 되는 핵심 요소입니다.