はじめに
Java の Web 開発で JSP を書き始めると、
必ず出てくるのが JSTL です。
ですが、多くの人がここで混乱します。
- JSP に Java コードを書いていいのか分からない
- JSTL を使う理由がいまいち分からない
- scriptlet が増えてしまう
実はこれ、
Servlet・JSP・JSTL の役割分担を理解できていない
ことが原因です。
この記事では、
JSP と JSTL を正しく連携させる実践例 を通して、
「現場で評価される JSP の書き方」を解説します。
JSPとは何か
JSP は、
画面表示を担当するための技術 です。
ポイントは、
「処理を書く場所ではない」
という点です。
JSP の本来の役割は、
- 画面を表示する
- データを埋め込む
この二つだけです。
なぜ scriptlet が問題になるのか
JSP には、Java コードを直接書く方法があります。
<%
if(user != null){
%>
これを scriptlet と呼びます。
一見便利ですが、
実務ではほぼ使われません。
理由は、
- 読みにくい
- 保守しづらい
- デザインとロジックが混ざる
からです。
JSTLとは何か
JSTL は、
JSP 用の標準タグライブラリ です。
目的は一つ。
JSP から Java コードを消すこと。
- 繰り返し
- 条件分岐
- 値の表示
を、タグで書けるようにします。
JSPとJSTLを連携させる理由
JSP と JSTL を組み合わせることで、
- 表示に集中できる
- Java ロジックが消える
- チーム開発に強くなる
というメリットがあります。
これは、
業務システムで Java が選ばれ続ける理由
にもつながっています。
Servlet・JSP・JSTLの役割分担
ここが一番重要です。
- Servlet:処理担当
- JSP:表示担当
- JSTL:表示用の制御
この分担ができていると、
コードが驚くほど読みやすくなります。
実践例:一覧画面を作る
ここからは、
実際によくある構成 を例に見ていきます。
作りたい画面
- ユーザー一覧を表示する
- データは Servlet で準備
- JSP + JSTL で表示
Servlet側の実装例
Servlet では、
データの準備だけ を行います。
List<String> users = new ArrayList<>();
users.add("Alice");
users.add("Bob");
users.add("Charlie");
request.setAttribute("userList", users);
request.getRequestDispatcher("userList.jsp").forward(request, response);
ポイントは、
- 処理は Servlet
- JSP に渡すのはデータだけ
という点です。
JSP側の準備
JSP では、
まず JSTL を使う宣言を書きます。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
これで JSTL が使えるようになります。
JSTLで一覧を表示する
Servlet から渡されたデータを
c:forEach で表示します。
<ul>
<c:forEach var="user" items="${userList}">
<li>${user}</li>
</c:forEach>
</ul>
ここに Java コードは一切ありません。
これが、
正しい JSP の姿 です。
条件分岐も JSTL で書く
条件分岐は c:if を使います。
<c:if test="${empty userList}">
<p>ユーザーが存在しません</p>
</c:if>
scriptlet を使う必要はありません。
EL式とは何か
${userList} のような書き方を
EL式 と呼びます。
EL式は、
- request
- session
に入っている値を
簡単に取り出す仕組みです。
JSP をシンプルに保つための重要な要素です。
JSTLを使うと何が良いのか
Javaコードが消える
JSP が
「画面テンプレート」
として使えるようになります。
デザインとロジックが分離される
デザイナーとエンジニアが
役割分担しやすくなります。
保守性が上がる
修正点が
どこにあるか分かりやすくなります。
初心者がやりがちなNG例
scriptlet と JSTL を混ぜる
これは最悪のパターンです。
JSP が一気に読めなくなります。
JSPにロジックを書きすぎる
ループや条件が増えすぎたら、
Servlet 側に戻す
のが正解です。
実務で評価されるJSP設計
現場では、
- JSP は表示だけ
- 判断は Servlet
という設計が好まれます。
これは MVC の考え方そのものです。
Javaプログラマーを目指す人へ
JSP と JSTL を正しく使える人は、
- Web の仕組みを理解している
- フレームワーク理解が早い
と評価されます。
Spring を学ぶ前に、
この基礎を押さえることがとても重要です。
まずは自己学習で理解を深めよう
Java Web の考え方を
体系的に学びたい人は、
まず
絶対にJavaプログラマーになりたい人へ。
👉 https://amzn.asia/d/3E1CYbv
で、土台を固めるのがおすすめです。
実務や転職を考えているなら
- JSP の書き方に自信がない
- 設計の良し悪しが分からない
- Java Web を武器にしたい
そんな人には
サイゼントアカデミー がおすすめです。
👉 https://academy.cyzennt.co.jp
コードレビューで
「なぜそう書くのか」を学べます。
まとめ
JSP と JSTL を正しく連携させると、
- コードが読みやすくなる
- 保守しやすくなる
- 実務で評価される
というメリットがあります。
JSP は「処理を書く場所」ではなく、
表示に専念させる のが正解です。
ぜひ、
scriptlet を卒業し、
正しい JSP の書き方を身につけてください。


コメント