• ベストアンサー

java servlet で大域変数

SERVLETで大域変数(count)を定義したいです。 ・ページの中のボタンを押すと他のservletのクラスを呼び、countの値を一つ 増やす。 ・その新しいページでも、ボタンを押すと同じcountの値がもう一つ増え、また他のservletを呼ぶ。 ……… (プログラムで使うすべてのservletのクラスでcountを有効にしたい) といった感じのプログラムを作るとしたら、 どこで、どのようにcountを定義すればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

全ての 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 に 置いておく方が良いと思います。どちらにしろ、全員にアクセス権がある 属性であれば、排他は必要なんだし…

myrimyri
質問者

お礼

ありがとうございました。そうですね、大域変数という考え方はやめておいて、 ServletContextにしてみます。

その他の回答 (2)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.3

ANo.#2を答えた者ですが、間違えて「自信なし」に なってしまいました。 自信ありです。 Servletのセッション管理は基本中の基本です。 もし理解できていなかったら、まずは本を見て勉強してください。 私のお勧め本 「コア・サーブレット&JSP」 Marty Hall著 岩谷 宏訳 ソフトバンク パブリッシング株式会社発行

myrimyri
質問者

お礼

ご丁寧にどうも(^-^)! 本屋へ行ってみて、見てみます。

  • yuji
  • ベストアンサー率37% (64/169)
回答No.2

案1  <INPUT TYPE="HIDDEN" NAME="COUNT" VALUE="1"> みたいにHIDDENで値を渡す。 案2  HttpSessionにcountを格納する。  はじめにcount=1でHttpSessionに格納する。  次の画面でcountを取り出して、+1する。  countをHttpSessionに格納する。  ・・・

myrimyri
質問者

お礼

ありがとうございました。さっそく頑張ってみます。

関連するQ&A