0
0

Java基礎文法Part9

Posted at

今回はスコープについて記事にしたいと思います。

スコープとは、プログラミングにおいて、変数やオブジェクトがどの範囲で有効(アクセス可能)かを示す概念のことです。スコープを理解することで、プログラムの中でどこで変数が使えるのか、またどこで使えないのかがわかり、効率的にコードを書くことができます。特にWeb開発やJSPのようなサーバーサイド開発では、スコープの管理が重要です。

  1. スコープの基本的な考え方
    スコープは、どこで変数やオブジェクトが生きているか(有効か)を指します。スコープの範囲外では、その変数やオブジェクトは使えなくなります。これにより、プログラムの中で変数の寿命やアクセスの範囲を制御できます。

  2. JSPにおけるスコープの種類
    JSP(Java Server Pages)やサーブレットでは、スコープの概念が非常に重要で、データをどの範囲で使うかを決める4つのスコープが存在します。それぞれ、データをどれくらいの期間、どこで使用できるかを決定します。

  3. JSPのスコープの種類
    ページスコープ(Page Scope)

有効範囲: JSPページ内だけで有効です。
説明: 現在表示している1つのJSPページの中でのみデータが有効です。他のJSPページやサーブレットにデータを渡すことはできません。
使用例:

<%! String pageData = "ページ内だけで使えるデータ"; %>

使い方: データを一時的に使用する場合、例えば計算結果やメッセージの一時表示などに使います。
リクエストスコープ(Request Scope)

有効範囲: 1回のリクエストに対して有効です。ページ遷移中や、他のサーブレットやJSPにデータを引き渡すことができます。
説明: 例えば、フォームに入力されたデータを処理する場合に使われ、フォームデータを次のページに渡すことができます。
使用例:

request.setAttribute("userName", "Taro");
String name = (String) request.getAttribute("userName");

使い方: ユーザーがフォームに入力したデータを他のページやサーブレットに渡して処理する場合に使います。
セッションスコープ(Session Scope)

有効範囲: ユーザーごとにセッションが続いている間有効です。ブラウザを閉じるか、セッションが切れるまでデータが保持されます。
説明: ログイン情報や、カートの中身のように、ユーザーごとにデータを保存しておきたい場合に使われます。
使用例:

session.setAttribute("loginUser", "Hanako");
String loginUser = (String) session.getAttribute("loginUser");

使い方: セッション中にログイン情報やユーザーの一時的な状態を保持するのに使います。複数ページにわたってデータを維持できます。
アプリケーションスコープ(Application Scope)

有効範囲: アプリケーション全体で有効です。サーバーが起動している間、全てのユーザーや全てのページで使えるデータです。
説明: 例えば、アプリケーション全体で共通の設定情報やデータを保存しておきたい場合に使います。
使用例:

application.setAttribute("appName", "MyApplication");
String appName = (String) application.getAttribute("appName");

使い方: サイト全体で共有したいデータや、アプリ全体の設定などに使います。すべてのユーザーに対して同じデータを参照させる場合に便利です。

  1. スコープの使用例
    リクエストスコープを使った例(入力データを渡す)
    入力フォーム(input.jsp)
<form action="output.jsp" method="post">
    名前: <input type="text" name="userName">
    <button type="submit">送信</button>
</form>

データを受け取るページ(output.jsp)

<%
    // リクエストスコープでデータを取得
    String name = request.getParameter("userName");

    // リクエストスコープでデータを次のページに渡す
    request.setAttribute("userName", name);
%>
<h1>こんにちは、<%= name %>さん</h1>

この例では、input.jspから送信されたデータをrequest.getParameter()で取得し、request.setAttribute()でリクエストスコープに保存しています。次のページや処理にデータを引き渡すことができます。

  1. まとめ
    スコープは、変数やデータがどの範囲で有効かを制御するための仕組みです。これにより、データの有効期間や範囲を適切に管理できます。
    JSPでは、4つのスコープ(ページ、リクエスト、セッション、アプリケーション)があり、それぞれ異なる範囲でデータを管理します。
    ページスコープ: 現在のJSPページだけでデータを使いたいとき。
    リクエストスコープ: ページ遷移や1つのリクエスト内でデータをやり取りするとき。
    セッションスコープ: ユーザーごとにデータを保持したいとき。
    アプリケーションスコープ: アプリ全体で共有したいデータがあるとき。

今回はスコープについて記事にしました。
Java基礎文法の記事はPart10で最終回にしようかと思っています!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0