- ベストアンサー
java servlet で大域変数
SERVLETで大域変数(count)を定義したいです。 ・ページの中のボタンを押すと他のservletのクラスを呼び、countの値を一つ 増やす。 ・その新しいページでも、ボタンを押すと同じcountの値がもう一つ増え、また他のservletを呼ぶ。 ……… (プログラムで使うすべてのservletのクラスでcountを有効にしたい) といった感じのプログラムを作るとしたら、 どこで、どのようにcountを定義すればいいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
全ての Servlet を HttpServlet から派生させるのではなく、全ての Servlet 共通の クラスを HttpServlet から派生させて、その他の Servlet は、そのクラスから 派生させる。 例えば、 class MyServletCommon extends HttpServlet { private int count; synchronized void setCount(int c) { count = c; } synchronized int getCount(void) { return count; } } class MyServlet_1 extends MyServletCommon { … } という感じ。 でも、気持ちは分からないではないけど、大域の変数なんて考え方は止めて おいた方が良いですよ。 本当に、どんな Servlet でも参照したい値であれば、ServletContext に 置いておく方が良いと思います。どちらにしろ、全員にアクセス権がある 属性であれば、排他は必要なんだし…
その他の回答 (2)
- yuji
- ベストアンサー率37% (64/169)
ANo.#2を答えた者ですが、間違えて「自信なし」に なってしまいました。 自信ありです。 Servletのセッション管理は基本中の基本です。 もし理解できていなかったら、まずは本を見て勉強してください。 私のお勧め本 「コア・サーブレット&JSP」 Marty Hall著 岩谷 宏訳 ソフトバンク パブリッシング株式会社発行
お礼
ご丁寧にどうも(^-^)! 本屋へ行ってみて、見てみます。
- yuji
- ベストアンサー率37% (64/169)
案1 <INPUT TYPE="HIDDEN" NAME="COUNT" VALUE="1"> みたいにHIDDENで値を渡す。 案2 HttpSessionにcountを格納する。 はじめにcount=1でHttpSessionに格納する。 次の画面でcountを取り出して、+1する。 countをHttpSessionに格納する。 ・・・
お礼
ありがとうございました。さっそく頑張ってみます。
お礼
ありがとうございました。そうですね、大域変数という考え方はやめておいて、 ServletContextにしてみます。