この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-05-17 15:10:57

タイトル: JSP
SEOタイトル: JavaのJSP

本稿はJSP (JavaServer Pages)に関する記事です。HTML の中に Java を埋め込む形でサーバーサイドの動的ページを生成する Java EE (現 Jakarta EE) の技術で、拡張子は .jsp です。

JavaScript はクライアントサイドで実行されますが、JSP の処理はサーバーサイド (Tomcat 等のサーブレットコンテナ) で実行され、最終的にブラウザへは HTML が返ります。

子ページから詳細トピックを選択してください。

本ページの子ページ

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" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
  <h1>ようこそ ${user.name} さん</h1>
  <c:forEach var="item" items="${items}">
    <p>${item.title}</p>
  </c:forEach>
</body>
</html>

JSP / Servlet / JSTL の関係

  • Servlet — Java クラスとして書く。コントローラ役 (リクエスト処理・データ準備)
  • JSP — HTML 寄り。ビュー役 (画面の生成)
  • JSTL / EL — JSP 上で Java コードを直接書かずに値や繰返しを記述するための仕組み
  • これらを組み合わせて MVC モデルを実装するのが伝統的な Java Web 構成

暗黙オブジェクト (主要なもの)

オブジェクト役割
requestHttpServletRequest。GET/POST パラメータ等
responseHttpServletResponse。レスポンス制御
sessionHttpSession。ユーザー単位の保管
applicationServletContext。アプリ全体で共有
outJspWriter。出力ストリーム
pageContext各スコープへの統一アクセス

注意点・近年の事情

  • 新規開発で JSP は減少傾向。Spring Boot + Thymeleaf、あるいはフロント分離 (SPA + REST API) が主流
  • スクリプトレット (<% %>) は非推奨。JSTL/EL を使うのが現代的
  • Java EE 8 以降、Jakarta EE への名前空間移行に注意 (javax.*jakarta.*)
  • 古い JSP プロジェクトの保守時は、サーブレットコンテナのバージョンと EL/JSTL のバージョン整合に注意
  • XSS 対策のため、出力は などエスケープ機能を使う

関連