タイトル: JSP
SEOタイトル: JavaのJSP
本稿はJSP (JavaServer Pages)に関する記事です。HTML の中に Java を埋め込む形でサーバーサイドの動的ページを生成する Java EE (現 Jakarta EE) の技術で、拡張子は .jsp です。
JavaScript はクライアントサイドで実行されますが、JSP の処理はサーバーサイド (Tomcat 等のサーブレットコンテナ) で実行され、最終的にブラウザへは HTML が返ります。
子ページから詳細トピックを選択してください。
本ページの子ページ
- タグ一覧 — JSP の各種タグ(include / taglib 等)の入口
- コンテキストパスの取得 — アプリケーション URL の基底を取得する方法
JSPの位置づけ
| 項目 | 内容 |
|---|---|
| 正式名 | JavaServer Pages(Jakarta Server Pages) |
| 拡張子 | .jsp |
| 実行 | サーブレットコンテナ(Tomcat、Jetty 等) |
| 変換 | 初回アクセス時に サーブレット (.java) へ変換→コンパイル→実行 |
| 対になる仕組み | Servlet(Java から HTML を出力する側) |
| 後継技術 | JSF、Thymeleaf、Spring Boot + テンプレートエンジン |
JSPの基本構文
| 構文 | 記法 | 用途 |
|---|---|---|
| スクリプトレット | <% ... %> | Java コードを記述(非推奨だが既存資産で頻出) |
| 式 | <%= 式 %> | 評価結果を出力 |
| 宣言 | <%! ... %> | 変数・メソッド宣言 |
| ディレクティブ | <%@ page ... %> | ページ設定(エンコーディング・import 等) |
| EL (式言語) | ${user.name} | JavaBeans / リクエスト属性等の参照(推奨) |
| JSTL | <c:if> / <c:forEach> | 条件分岐・繰返しタグライブラリ(推奨) |
典型的なJSPページの例
|
<%@ page contentType="text/html; charset=UTF-8" %> |
JSP / Servlet / JSTL の関係
- Servlet — Java クラスとして書く。コントローラ役 (リクエスト処理・データ準備)
- JSP — HTML 寄り。ビュー役 (画面の生成)
- JSTL / EL — JSP 上で Java コードを直接書かずに値や繰返しを記述するための仕組み
- これらを組み合わせて MVC モデルを実装するのが伝統的な Java Web 構成
暗黙オブジェクト (主要なもの)
| オブジェクト | 役割 |
|---|---|
request | HttpServletRequest。GET/POST パラメータ等 |
response | HttpServletResponse。レスポンス制御 |
session | HttpSession。ユーザー単位の保管 |
application | ServletContext。アプリ全体で共有 |
out | JspWriter。出力ストリーム |
pageContext | 各スコープへの統一アクセス |
注意点・近年の事情
- 新規開発で JSP は減少傾向。Spring Boot + Thymeleaf、あるいはフロント分離 (SPA + REST API) が主流
- スクリプトレット (<% %>) は非推奨。JSTL/EL を使うのが現代的
- Java EE 8 以降、Jakarta EE への名前空間移行に注意 (
javax.*→jakarta.*) - 古い JSP プロジェクトの保守時は、サーブレットコンテナのバージョンと EL/JSTL のバージョン整合に注意
- XSS 対策のため、出力は
などエスケープ機能を使う
関連
- 親カテゴリ: Java
- サーブレット: Servlet
- 実行環境: Apache Tomcat
- 子ページ: タグ一覧 / コンテキストパスの取得