あるプロジェクトのWebアプリを引き継ぐことになりそのソースを見ていたところ
あるメソッドで次のようにしてセッションに格納した値をやりくりしている部分があり????
と思ったので質問させてください。
//ログイン情報を取得
A aObj = (A)session.getAttribute("LOGIN_INFO");
//セッションンにフラグを格納
aObj.setFlag = true;
そして別のメソッドで下記のように再度ログイン情報を取得し上記メソッドでセットしたフラグを取得
//ログイン情報を取得
A aObj = (A)session.getAttribute("LOGIN_INFO");
if(aObj.getFlag) {
System.out.println("hello");
}
ここで疑問なのですが最初に
aObj.setFlag = true;
とやった後に
session.setAttribute("LOGIN_INFO", aObj);
と明示的に記述してあげなくてもセッションの中のaObjの
flagプロパティにはtrueに書き換えられるのでしょうか。
というかデバッグしてみたらtrueに書き換えがされていました。
(恐らく、オブジェクトの参照渡しのため)
こういう書き方でセッションの中のオブジェクトが持つプロパティを書き換えるのって
一般的な書き方でしょうか。最初、パッと見たとき、セッションから取得したaObjにsetterで
プロパティを書き換えているだけでセッションが保持するオブジェクトのプロパティを
書き換えているようには見えませんでした。
setterを実行することでセッションの保持するオブジェクトのプロパティを書き換えるという
コードに違和感を感じたものでして・・・
No.1ベストアンサー
- 回答日時:
多分たまたま使っている実装では大丈夫なんでしょうが、クラスタサーバなどの場合、
セッションステートを複数のサーバで共有するために、setAttribute による
同期のトリガが必須です。
なので、後々のことを考えると、setAttribute しないとセッションステートが
更新されない可能性があるとしてまめにsetAttributeするようにプログラムするのが
正しいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- Visual Basic(VBA) Csvファイルの最終行を取得する構文はこれであっていますか?オブジェクトは、このプロパティまたはメソ 3 2022/12/26 14:38
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- JavaScript オブジェクト配列の各メンバを任意の式で評価して、その評価値が最大のオブジェクトを返す関数はありますか 2 2023/05/20 15:02
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Visual Basic(VBA) <excel vba>selenium basicのWebDriverの自動更新のエラーについて 1 2022/10/01 17:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQL・Tomcat・JSP 何度もSub...
-
setAttribute getAttribute 配...
-
struts java ログインのセッシ...
-
ASP.NETのGlobal.asaxについて
-
struts2でのフィルターを使った...
-
セッションタイムアウト時にエ...
-
JSPでsession変数が勝手に書き...
-
ASP.net1.0をWIN7のIISで動...
-
HTMLのSELECTタグの使い方、JSP...
-
グローバルIPアドレスの変更タ...
-
フォーム上で押されたボタンに...
-
j-axis 腕時計のアラーム止めたい
-
jspからServletを呼び、元のjsp...
-
プログラミングで例えばゲーム...
-
腕時計の時報をならないように...
-
ActiveWorkbook.Pathの一つ下の...
-
画面を隠す・消す方法を教えて...
-
JSP+Servletで終了ボタン
-
C言語で今まで表示していた画面...
-
ServletからHTMLページへの遷移...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでセッションを取得
-
グローバルIPアドレスの変更タ...
-
setAttribute getAttribute 配...
-
javascriptでのログアウトボタン
-
フレームを使用した際のセッシ...
-
javascriptでセッションの削除...
-
sessionスコープとapplication...
-
セッションの情報の消去について
-
HTMLのSELECTタグの使い方、JSP...
-
エラーページ遷移後に入力値を残す
-
ブラウザバック禁止
-
MySQL・Tomcat・JSP 何度もSub...
-
ASP.NETのGlobal.asaxについて
-
複数Webサーバーでのセッション...
-
HttpSessionListenerクラスに関...
-
jsessionidの有効期限を延長す...
-
Tomcatでの同一セッション同時...
-
aタグによる複数リンクを別セッ...
-
JSPでブラウザ終了時にPostgreS...
-
XMLHTTPを使って、セッションID...
おすすめ情報