Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
生徒
「Jakarta EEのJSPで、データベースの中身を画面に表示したいんですが、難しそうで不安です。」
先生
「JSPでは、JSTLというタグライブラリを使うことで、Javaコードを書かずにデータベースへアクセスできます。」
生徒
「SQLを書くだけでデータを取得できるんですか?」
先生
「JSTLのSQLタグを使えば、簡単なデータ取得や一覧表示を体験できます。まずは仕組みから順番に見ていきましょう。」
1. Jakarta EEとJSPの役割を整理しよう
Jakarta EEは、エンタープライズ向けのJavaアプリケーションを開発するための標準仕様です。 Webアプリケーション開発では、ServletやJSPを使ってリクエスト処理や画面表示を行います。 JSPはHTMLに近い書き方で画面を作れるため、初心者でも理解しやすい技術です。 Jakarta EEの中でJSPは表示担当として使われ、Servletが処理担当になるという役割分担が基本になります。
今回扱うJSTLは、JSPをより安全で読みやすくするためのタグライブラリです。 条件分岐や繰り返し、文字列操作などをタグで書けるため、Javaコードの混在を減らせます。 その中に含まれているのが、簡易的にデータベースへアクセスできるSQLタグです。
2. JSTL SQLタグとは何か
JSTL SQLタグは、JSP上で直接SQL文を実行するための機能を提供します。 データベース接続の設定、SELECT文の実行、結果の取得までをタグで記述できます。 学習用途や小規模な検証では便利ですが、大規模開発では推奨されない点も理解しておくことが重要です。
初心者にとっては、データベースとWeb画面がどのようにつながるのかを体感できる良い教材になります。 Jakarta EE、JSP、JSTL、SQLというキーワードをまとめて理解できるのが大きなメリットです。
3. JSTLとSQLタグの準備
JSTLを使うためには、ライブラリをプロジェクトに追加し、JSPでタグライブラリを宣言します。 Jakarta EE対応のアプリケーションサーバーでは、標準でJSTLが利用できる場合もあります。 JSPファイルの先頭でタグライブラリを指定することで、SQLタグや制御タグが使用可能になります。
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ taglib prefix="sql" uri="jakarta.tags.sql" %>
この宣言によって、JSP内でcタグやsqlタグを使えるようになります。 prefixは任意ですが、慣例としてよく使われる名前を選ぶと読みやすくなります。
4. データベース接続を設定する
JSTL SQLタグでは、データベースへの接続情報をJSP内で設定できます。 接続先のURL、ユーザー名、パスワードを指定することで、簡単に接続できます。 ここでは学習用として、JSP内に直接設定する例を示します。
<sql:setDataSource
var="ds"
driver="org.h2.Driver"
url="jdbc:h2:mem:testdb"
user="sa"
password="" />
この設定で、データソースがdsという名前で利用できるようになります。 実際の業務では、サーバー側でデータソースを管理する方法が一般的ですが、 まずは仕組みを理解することを優先しましょう。
5. SELECT文でデータを取得する
データベースに接続できたら、次はSQL文を実行します。 JSTLのqueryタグを使うことで、SELECT文を発行し、その結果を変数に格納できます。 取得したデータは、後続のJSP処理で画面表示に利用します。
<sql:query dataSource="${ds}" var="result">
SELECT id, name FROM users
</sql:query>
この例では、usersテーブルからIDと名前を取得しています。 実行結果はresultという変数に格納され、複数行のデータとして扱えます。 SQL文がそのまま書けるため、データベース学習とも相性が良い構文です。
6. 取得したデータをJSPで表示する
データを取得しただけでは、画面には何も表示されません。 JSTLの繰り返しタグを使って、取得結果をHTMLとして出力します。 ここでは表形式でデータを表示する基本的な例を見てみましょう。
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>名前</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td>${row.id}</td>
<td>${row.name}</td>
</tr>
</c:forEach>
</table>
このように、SQLの結果をそのまま画面表示に利用できます。 JSP、JSTL、ELが連携して動いている点を意識すると理解が深まります。 初心者のうちは、データが画面に表示される流れを丁寧に追うことが大切です。
7. JSTL SQLタグを使うときの注意点
JSTL SQLタグは便利ですが、本格的な業務システムでは推奨されないケースが多いです。 理由としては、セキュリティ対策や保守性、役割分担の観点があります。 データベース処理はServletや専用クラスに任せ、JSPは表示に専念する設計が一般的です。
ただし、Jakarta EEやJSPの学習段階では、SQLタグは非常に分かりやすい教材になります。 JSPからデータベースへアクセスし、結果を表示する一連の流れを体験することで、 Webアプリケーションの全体像をつかみやすくなります。