カテゴリ: Jakarta EE 更新日: 2026/02/10

JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド

Jakarta EE JSPのリクエスト属性とスコープの基本
Jakarta EE JSPのリクエスト属性とスコープの基本

先生と生徒の会話形式で理解しよう

生徒

「先生、JakartaEEのJSPでリクエスト属性とかスコープっていう言葉をよく見かけるんですが、いまいち違いがわからないんです。」

先生

「いい質問だね。JSPではデータをページ間で受け渡したり、セッション単位で保持したりする仕組みがあって、それをリクエスト属性やスコープと呼ぶんだよ。」

生徒

「スコープって複数あるんですか?」

先生

「その通り。リクエストスコープ、セッションスコープ、アプリケーションスコープの三種類がよく使われるんだ。順番に基本から見ていこう。」

1. JakartaEE JSPにおけるリクエスト属性とは?

1. JakartaEE JSPにおけるリクエスト属性とは?
1. JakartaEE JSPにおけるリクエスト属性とは?

JakartaEEのJSPでは、リクエスト属性を使ってサーブレットからJSPへデータを受け渡すことができます。例えばフォームの入力値や検索結果などをサーブレットで処理し、その結果をJSPに表示する場合に役立ちます。リクエスト属性は、HttpServletRequestオブジェクトのsetAttributeメソッドで保存し、JSP側ではgetAttributeで取り出せます。


request.setAttribute("userName", "太郎");
RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
dispatcher.forward(request, response);

ようこそ、<%= request.getAttribute("userName") %> さん!

リクエスト属性は一度のリクエスト処理の間だけ有効で、リダイレクトすると消えてしまいます。この特徴を理解することで、誤ったデータ保持を防げます。

2. JSPのスコープの種類と基本

2. JSPのスコープの種類と基本
2. JSPのスコープの種類と基本

JSPのスコープはデータをどの範囲で保持するかを示す考え方です。初心者が理解すべきポイントは、スコープによってデータの寿命と共有範囲が異なるという点です。

  • リクエストスコープ:1回のリクエスト処理の間だけ有効。
  • セッションスコープ:ユーザーごとのブラウザセッション中有効。
  • アプリケーションスコープ:サーバー全体で共有、アプリケーションが稼働している間有効。

3. セッションスコープの使い方

3. セッションスコープの使い方
3. セッションスコープの使い方

セッションスコープは、ログインユーザーの情報を保持する際によく使われます。セッションオブジェクトを使えば、同じユーザーの複数リクエストにわたってデータを保持できます。


HttpSession session = request.getSession();
session.setAttribute("loginUser", "太郎");

ログイン中のユーザー:<%= session.getAttribute("loginUser") %>

セッションスコープは便利ですが、使いすぎるとメモリを圧迫するため、必要な情報だけを保持するように心がけましょう。

4. アプリケーションスコープの使いどころ

4. アプリケーションスコープの使いどころ
4. アプリケーションスコープの使いどころ

アプリケーションスコープはサーバー全体で共有されるため、すべてのユーザーに共通のデータを扱うときに使います。例えばアプリケーション全体の設定値や統計データを保持する用途があります。


ServletContext context = getServletContext();
context.setAttribute("appTitle", "サンプルアプリ");

<%= application.getAttribute("appTitle") %>

アプリケーションスコープは全ユーザー共通なので、ユーザーごとの状態管理には向きません。その違いを理解することで、効率的にデータを扱えます。

5. リクエスト属性とスコープの実践的な使い分け

5. リクエスト属性とスコープの実践的な使い分け
5. リクエスト属性とスコープの実践的な使い分け

初心者がつまずきやすいのは「どのスコープを選べばいいのか」という点です。リクエスト属性は一時的なデータ渡し、セッションスコープはユーザー固有のデータ保持、アプリケーションスコープは全体共有と覚えておくと整理しやすいです。

例えば検索結果を表示する場合はリクエスト属性、ログイン情報はセッションスコープ、サイト全体のアクセスカウンタはアプリケーションスコープを使うと良いでしょう。

6. JSPにおけるEL式との関係

6. JSPにおけるEL式との関係
6. JSPにおけるEL式との関係

JSPではExpression Language(EL式)を使うことで、スコープのデータをより簡単に参照できます。リクエストスコープやセッションスコープの値を直接JSPに埋め込めるため、コードがシンプルになります。


<p>ようこそ、${userName} さん!</p>
<p>ログインユーザー:${sessionScope.loginUser}</p>

EL式を活用することで、可読性が高まり、ビジネスロジックと表示の分離がしやすくなります。これもJakartaEE JSPで学んでおくべき大切な基本です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JakartaEEのJSPで使われる「リクエスト属性」とは具体的にどのような仕組みでデータを渡すものですか?

JakartaEEのJSPにおけるリクエスト属性とは、Webアプリケーション内でサーブレットからJSPへ情報を引き渡すための動的なデータ保管庫のような仕組みです。具体的には、Javaのサーブレット側でデータベースから取得した検索結果やユーザーの入力内容などを、セットアトリビュート(setAttribute)という命令を使ってリクエストオブジェクトに格納します。その後、フォワード(Forward)という処理によって、そのデータを保持したままJSPページに画面遷移させます。JSP側では、ゲットアトリビュート(getAttribute)やEL式を用いることで、サーブレットから送られてきたデータを取り出し、HTMLの中に埋め込んで表示することが可能になります。これにより、ビジネスロジックと画面表示を明確に分離できるのが大きなメリットです。
カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEとクラウドネイティブ開発の相性とは?初心者向けにわかりやすく解説
New2
Jakarta EE
JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド
New3
Play Framework
Play Frameworkのビューテストを徹底解説!Twirlテンプレートの品質を高める方法
New4
Jakarta EE
JakartaEE フィルタで認証と認可を実装する方法を初心者向けに解説!サーブレットのセキュリティ入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Play Framework
Play Frameworkのビューを共通化!テンプレート間のインクルード方法を徹底解説
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.4
Java&Spring記事人気No4
Play Framework
Play Frameworkプロジェクト作成直後にやるべき初期設定ガイド!初心者でも安心
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EEの標準仕様とAPI一覧を完全解説!初心者でもわかるエンタープライズJavaの基本
No.6
Java&Spring記事人気No6
Play Framework
Play Frameworkで多言語対応(i18n)を徹底解説!Twirlテンプレートでの使い方
No.7
Java&Spring記事人気No7
Play Framework
Play FrameworkでCSSやJavaScriptを読み込む方法を徹底解説!静的リソースの組み込みガイド
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識