JSPで使えるJavaコードの書き方を徹底解説!初心者向けルールと制限ポイント
生徒
「JSPってJavaで動くページなんですよね?Javaのコードをそのまま書けるんですか?」
先生
「その通りです。でも、JSPではJavaコードを書く際にいくつか決まりや制限があるんです。」
生徒
「えっ、制限があるんですか?普通のJavaと何が違うんですか?」
先生
「それでは、JSPにおけるJavaコードの書き方や記述ルール、注意点などを詳しく見ていきましょう。」
1. JSPファイルでJavaコードを書く基本構文
JSPではHTMLの中にJavaコードを直接埋め込むことができます。ただし、専用のスクリプトレットタグを使う必要があります。基本となるJavaコードの書き方は以下のとおりです。
- <% Javaコード %>:処理用のスクリプトレット。条件分岐やループなどを記述できます。
- <%= 式 %>:値を出力する式。計算結果や変数の値をHTMLに表示できます。
- <%@ %>:ディレクティブ。ページ全体の設定やライブラリの読み込みに使用します。
- <%! %>:宣言。メソッドや変数をクラスレベルで定義し、スクリプトレット内から呼び出すことができます。
例えば、現在の日時を表示する簡単な例を見てみましょう。JSPタグ内でJavaコードを直接書くことで、動的に値を生成できます。
<html>
<body>
<p>現在の日時:<%= new java.util.Date() %></p>
<%
// 簡単な計算例
int sum = 5 + 3;
%>
<p>5 + 3 の結果:<%= sum %></p>
</body>
</html>
このサンプルでは、JavaのDateクラスで現在日時を取得し表示しています。また、簡単な計算結果を変数sumに格納して出力しています。初心者の方も、このようなサンプルでスクリプトレットと式タグの使い方を理解すると、JSP内でのJavaコードの基本がつかめます。
2. JSPのスクリプトレットでJava処理を記述する方法
JSPでは、<% %>の中にJavaの制御構文(if文、for文、while文など)を記述することができます。これはHTMLとJavaを組み合わせて動的なページを生成したいときに便利です。
<%
for(int i = 1; i <= 3; i++) {
%>
<p>ループ:<%= i %></p>
<%
}
%>
このように、ループの開始と終了を明確に<% %>で囲むことで、JSP内で動的な繰り返し処理を行えます。
3. <%= %>式タグで値を表示する
式タグは、Javaの値をそのままHTMLとして出力するために使います。セミコロン(;)をつけない点がポイントです。
<p>ユーザー名:<%= request.getParameter("name") %></p>
このように書くと、リクエストパラメータから取得した「name」の値がページ上に表示されます。
4. 宣言タグで変数やメソッドを定義する
JSPでは<%! %>というタグを使って、Javaのメソッドや変数を定義することができます。これはクラスレベルで定義されるため、スクリプトレットの中からも利用できます。
<%!
public String greet(String name) {
return "こんにちは、" + name + "さん!";
}
%>
<p><%= greet("太郎") %></p>
このように、JSPファイル内でもJavaのメソッドを定義して呼び出すことができます。
5. JSP内Javaコードの記述ルールと制限
JSPでJavaコードを使う際には、いくつかのルールや制限があります。以下のポイントに注意しましょう。
- セミコロン(;)を忘れずに
- スクリプトレットの中にクラス定義は書けない
- JSPは最終的にServletに変換されるため、複雑な処理は避ける
- 変数のスコープを意識(特に
requestやsession) - 出力する内容はHTMLとして正しく表示されるように
特に初心者が間違えやすいのは、HTMLとJavaの境界線を見失うことです。JSP内ではあくまでHTMLをベースにして、その一部にJavaコードを差し込むというイメージを持ちましょう。
6. サーブレットとの違いとJSPの役割
JSPとサーブレットはどちらもJavaで動くWeb技術ですが、役割に違いがあります。サーブレットはJavaコードがメインで、出力をHTMLで行います。一方JSPはHTMLがメインで、必要な部分にJavaコードを埋め込むスタイルです。
そのため、JSPでは「見た目の設計」や「画面表示」を中心に担当し、ビジネスロジックなど複雑な処理はサーブレットやバックエンドクラスに任せるのが理想的です。
7. スクリプトレットを使わないJSP設計(JSP ELやJSTL)
近年では、JSP内にJavaコードを直接書かず、JSP EL(Expression Language)やJSTL(JSP Standard Tag Library)と呼ばれる記述方法を使うのが主流になっています。これにより、JSPファイルがHTMLライクに保たれ、保守性や読みやすさが向上します。
例えば、EL式を使うと次のように書けます。
<p>ユーザー名:${param.name}</p>
このように、JSPでのJavaコード記述には様々な方法があり、それぞれに適した場面があります。初心者のうちはスクリプトレットを理解しながら、将来的にはJSTLやEL式に移行していくとよいでしょう。
まとめ
JSPにおけるJavaコードの書き方は、HTMLとJavaの役割をしっかり意識しながら組み合わせて理解することが重要です。とくに、スクリプトレットや式タグ、宣言タグの違いを理解することで、動的な画面生成の仕組みをより深く学ぶことができます。初心者がつまずきやすいポイントとして、セミコロンの付け忘れやタグの閉じ忘れ、スコープの理解不足などが挙げられますが、これらは実際にコードを書きながら少しずつ慣れていくことで自然と身につきます。さらに、現場ではJSP内に処理を詰め込みすぎず、サーブレットとの役割分担を明確にする設計が求められるため、構造的に理解しておくと非常に役立ちます。 また、近年主流となるJSTLやEL式の活用は、JSPの可読性を上げ、保守性を高めるための重要な選択肢です。スクリプトレットと比較してより直感的にデータを扱えるため、実務でも採用率が高く、学んでおくことで大規模開発にも対応しやすくなります。こうしたタグや式を組み合わせることで、データの受け渡し、表示、処理の分離が明確になり、より品質の高いページ生成が可能となります。さらに、JSPはServletに変換されるという動作の仕組みを理解することで、エラーが起きた際の原因推測やデバッグがスムーズになり、初心者から中級者へとステップアップするうえで欠かせない知識となります。 実際のJSP開発では、次のようなサンプルプログラムを組み合わせながら、画面表示と処理内容の切り分けを意識して構築していきます。以下は本記事の概念を応用した簡易サンプルです。
サンプルプログラム
<%!
public String message(String name){
return "ようこそ、" + name + "さん";
}
%>
<div class="card p-3">
<p>メッセージ:<%= message("佐藤") %></p>
<p>日時:<%= new java.util.Date() %></p>
</div>
このように宣言タグ・式タグ・スクリプトレットを組み合わせることで、画面表示と動的データのやり取りが滑らかにつながっていきます。さらに、開発規模が大きくなるほど、JSPは「画面表示専用レイヤー」としての役割が強まるため、ビジネスロジックをJSPに書きすぎないという基本原則が非常に重要です。これは可読性や保守性を上げるだけでなく、複数人で開発する際の品質保持にもつながります。 HTMLベースのテンプレートに対して必要な部分だけJavaで動的に変化させるという感覚を大事にし、タグの意味や使い分けを理解しながら設計を進めることで、初心者でも高品質なJSPページを作れるようになります。 最後に、理解を深めるために、学んだ内容を先生と生徒が振り返りながら整理する会話を以下にまとめました。
生徒
「JSPのタグってこんなに種類があるんですね。最初はスクリプトレットだけだと思っていました。」
先生
「実際には役割ごとに細かく分かれているから、それぞれの性質を理解して使い分けるととても便利ですよ。」
生徒
「宣言タグでメソッドを定義したり、式タグで値を表示したり、用途ごとに構造が整理されているんだなと感じました。」
先生
「その通りです。さらに、将来的にはEL式やJSTLを使うことで、もっと読みやすくて保守しやすいJSPを書けるようになりますよ。」
生徒
「ありがとうございます!スクリプトレットとEL式の違いも分かってきたので、次はより整理されたページ作りに挑戦してみます。」
先生
「いい心がけですね。今日学んだタグの特徴や制限を活かして、さらに実践的なJSP開発に取り組んでいきましょう。」