フレサーモン難民

備忘録など ほぼ自分向けのまとめ

スコープ

スコープとは

スコープとは、インスタンスを保存できる領域のこと。スコープを経由させることで、サーブレットクラスとJSPファイルとでインスタンスを共有することが可能になる。例えばサーブレットクラスで生成したインスタンスJSPファイルで取得するといったことが可能になる。

スコープには「ページスコープ」「リクエストスコープ」「セッションスコープ」「アプリケーションスコープ」の4種類があり、種類によってスコープに保存したインスタンスの有効期限が異なる。

スコープとインスタンス

スコープに保存できるのはインスタンスに限られる。基本的には「JavaBeans」と呼ばれるクラスのインスタンスを保存する。

JavaBeansとは、Javaのクラスの独立性を高め、部品として再利用しやすくするためのルール、またはそのルールを守っているクラスおよびそのインスタンスのこと。具体的に言うと、JavaBeansのルールには主に以下のものがある。

・直列化可能である(java.io.Serializableを実装している)
・クラスはpublicで、パッケージに所属する
・publicであり、引数のないコンストラクタを持つ
・フィールドはカプセル化する
命名規則に従ったgetter/setterメソッドを持つ

例:

package ex;
import java.io.Serializable;

public class Book implements Serializable {
  private String title;
  private int price;

  public Book() { }
  public Book(String title, int price) {
    this.title = title;
    this.price = price;
  }

  public String getTitle() { return title; }
  public void setTitle(String title) { this.title = title; }
  public int getPrice() { return price; }
  public void setPrice(int price) { this.price = price; }
}

JavaBeansのプロパティ

JavaBeansの考え方では、クラスのフィールドとは別にプロパティというものがあるとのこと。プロパティはgetterやsetterを作ることで生まれる。つまり、フィールドがあってもgetterやsetterが無ければプロパティは生まれない。

getter/setterのget,setの後の部分につけた名前がプロパティの名前になる。

また、getterとsetterのどちらを作ったかによってプロパティの読み取りや変更の可否が決まる。
例:getterのみ作った→読み取りだけできるプロパティ
setterのみ作った→変更だけできるプロパティ
getterもsetterも作った→読み取りも変更もできるプロパティ



参照:「スッキリわかるサーブレットJSP入門 第2版」