まるなな サーブレットとJSP 7:)

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

7章〜

 

リクエストスコープについて

 

第6章で学んだフォワード転送は処理の連携はできるがデータの連携ができない!

これだとサーブレットクラスの処理結果をJSPファイルで出力できない・・・

 

サーブレットクラスで生成したインスタンスJSPファイルで利用するにはスコープインスタンスを保存できる領域)を利用する

スコープを経由させてサーブレットクラスとJSPファイルの間でインスタンスを共有したり受け渡すことが可能になる

 

スコープには4種類ある

ページスコープ

リクエストスコープ

セッションスコープ

アプリケーションスコープ

 

種類によって保存したインスタンスの有効期限が異なる

 

スコープにはインスタンスだけが保存できる

基本データ型変数インスタンスではないのでスコープに保存できない

(この場合はラッパークラスを使用する)

基本的にJavaBeansと呼ばれるクラスのインスタンスを保存する

Javaのクラスの独立性を高め部品として再利用しやすくするためのルールまたはそのルールを守っているクラスのこと)

 

JavaBeansのルール

①直列化可能

②クラスはpublicでパッケージに所属する

③publicで引数のないコンストラクタを持つ

④フィールドはカプセル化されている

⑤命令規則に従ったgetter/setterを持つ

 

getter/setterの命令規則

 

getter

メソッド名はgetから始め、以降の単語の先頭の文字は大文字

ただし戻り値の型がbooleanの場合はisからはじめる

・引数はないが戻り値はフィールド

 

setter

メソッド名はsetから始め、以降の単語の先頭の文字は大文字

・引数は1つでフィールドに設定する値を受けとる。戻り値なし

 

JavaBeansのプロパティとはインスタンスの属性のこと

これはgetterまたはsetterを作ることでうまれる

 

リクエストスコープはリクエストごとに生成される

保存したインスタンスはレスポンスが返されるまで利用できる

 

リクエストスコープにインスタンスを保存するにはHttpServletRequestインスタンスのsetAtrribute()メソッドを使用する

第1引数はスコープに保存するインスタンスの管理用の名前(属性名)を指定(スコープに保存したインスタンスを取得する際必要)

リクエストスコープ内のインスタンスを取得する場合

HttpServletRequestのgetAttribute()メソッドで取得

JSPファイルでリクエストスコープを使用する場合暗黙オブジェクトrequestを使用

 

リクエストスコープではできないことがある

・リクエストスコープの正体のHttpServletRequestインスタンスはレスポンスが返されると同時に消滅する

・そのときリクエストスコープに保存していたインスタンスも消える

・だからリクエストスコープに保存したインスタンスは次回のリクエストでは取得できない

つまりリクエストをまたいでインスタンスを共有できない

 

それから

転送前に一度レスポンスを行うからリダイレクト元でリクエストスコープに保存したインスタンスはリダイレクト先では取得できないから注意!

 

第7章はこんなかんじ

 

JavaBeansのこととか

p193とかp194とか

あいまいだから何度か作ったり読んだりする

課題が少し長くて複雑だから何度もやって覚える

 

次は8章セッションスコープ〜