- ベストアンサー
セッション変数の扱いについて困っていること
- セッション変数の扱いに困っています。ichiran.jspの画面でりんごとみかんの入力画面を並列に開いたときに、それぞれ別のセッションとして生成され、りんごとみかんに関するshohinmeiの変数領域が別々に確保される方法はないものでしょうか?
- セッション変数についての課題です。ichiran.jspの画面で商品の入力画面を並列に開いた場合、異なる商品のセッション変数が混同されてしまう問題があります。どのようにすれば、それぞれの商品に対して別々のセッション変数を確保できるでしょうか?
- セッション変数の問題に関して困っています。ichiran.jspの画面で商品の入力画面を同時に開いた場合、セッション変数に関する競合が発生し、正しいデータが更新されない問題があります。具体的な解決策はありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>session変数shohinmeiはmikanで上書きされずにすむのでしょうか? 上書きされます。ご質問の件は、マルチスレッドの問題とは無関係です。 ご質問のようなフォームならば、セッションを使う必要はありません。セッションを使わなければ問題は生じません。 nyuryoku.jsp <form method="post" action="koushin.jsp"> ...入力フォーム <input type="hidden" name="shohinmei" value="<%= request.getParameter("shohinmei") %>"> ★ </fotm> koushin.jsp String shohinmei = request.getParameter("shohinmei"); セッションの場合、「ユーザ」に対して商品名が結びついています。ユーザあたり一つの商品しか格納できません。そのため、同じユーザが複数のページを開いた場合、後から起動したページによって、その前のページの商品情報が上書きされてしまいます。 一方、hiddenを使うと、個々の入力ページに対して商品名を結びつけることができます。つまりりんごの入力ページのhiddenには「りんご」と、みかんの入力ページのhiddenには「みかん」と書かれています。そのため、セッションの場合のように「上書き」されません。 セッションを使っても、ご質問のような問題を解決できます。ただし、「ページID」のようなものを各ページに割り当てたり、面倒な処理が必要になるため、お勧めできません。 ※hiddenに商品名を入れているところ(★)は、クロスサイトスクリプティングに脆弱です。対策が別途必要です。
その他の回答 (2)
- fortranxp
- ベストアンサー率26% (181/684)
手持ちの参考書には シングルスレッドモデルは複数のスレッドが同時に 同じサーブレット/JSPへアクセスしない事を保証します。 とありますので可能性ありでしょう。 多分JSPの最初のほうに <%@ page isThreadSafe="false" %> 飽くまでアドバイスなので。
- fortranxp
- ベストアンサー率26% (181/684)
りんごJSPと同時にみかんJSPもでているので シングルスレッドモデルではダメでしょうか? <%@ page isThreadSafe="false" %>
補足
●isThreadSafe属性 false 単一スレッドモデルで実装され、リクエストを1つずつ受信した順番に処理します。ページレベルでオブジェクトへのアクセスは制御する必要はありません。ただし、sessionまたはapplicationスコープを持つJavaBeansコンポーネントと、sessionまたはapplicationのスコープオブジェクトの属性へのアクセスが、正しく同期化されていることを確認する必要があります。 調べたらこんなふうに出てきたんですが・・・。 これはどちらのJSPに挿入すればいいんでしょうか?これをやるときちんとりんごのほうに更新がかかるとしたら、それはどういう仕組みになるのでしょうか。session変数shohinmeiはmikanで上書きされずにすむのでしょうか?
補足
実は、今私が取り組んでいるプログラムでは、セッション変数を4,5ページくらいにわたってひきついでいかねばならないのです。 しかも、JSPの中に10個くらいのFORMタグがあります。 それぞれのFORMに同じINPUTタグをつけていくのはかなり面倒です。 >セッションを使っても、ご質問のような問題を解決できます。ただし、「ページID」のようなものを各ページに割り当てたり、面倒な処理が必要になるため、お勧めできません。 そのような方法を用いた例が載っている本、あるいはサイトがありましたらぜひ教えてください!お願いします。