SERVLETで大域変数(count)を定義したいです。

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

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

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

お礼日時:2001/12/19 10:05

ANo.#2を答えた者ですが、間違えて「自信なし」に


なってしまいました。
自信ありです。

Servletのセッション管理は基本中の基本です。
もし理解できていなかったら、まずは本を見て勉強してください。

私のお勧め本
「コア・サーブレット&JSP」
Marty Hall著
岩谷 宏訳
ソフトバンク パブリッシング株式会社発行
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/19 10:07

案1


 <INPUT TYPE="HIDDEN" NAME="COUNT" VALUE="1">
みたいにHIDDENで値を渡す。

案2
 HttpSessionにcountを格納する。
 はじめにcount=1でHttpSessionに格納する。
 次の画面でcountを取り出して、+1する。
 countをHttpSessionに格納する。
 ・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/19 10:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報