0
class A 
if(userAuthenticated)
  ArrayList accounts = getAccountForUser(customerId);
UserInfo userinfo = new UserInfo();
userinfo.getUserInfo(accounts);
}

==============

class UserInfo 
{
public ArrayList<String> getUserInfo(ArrayList list) {
ArrayList useraccounts = list;
return useraccounts;
}
}

===============

クラスCの中に文字列があり、チェックする必要があります。その文字列値が存在する場合は、何か他のことをします

問題は、これが WebApplication であるため、 Application でインスタンス varaibe を使用できないことです。

class C 
{

public String makeDBCALL(String account)
{

Here i need to get that ArrayList  of UserInfo  and check if taht  list.contains(account)) 
could anybody please tell me how can do this .
}
}
4

1 に答える 1

0

コンテクスト

コンテキストが必要です。

サーブレットクラスにはそのコンテキストを指定する必要があります。

DBまたはメモリ

DB(データソース)への参照を持ち、DBのたびにクエリを実行することも、メモリ内に何か(例としてリスト)を作成することもできます。

いずれにせよ、Cがサーブレット環境内にあることを認識しているサーブレットクラスである場合は、アプリコンテキストを要求できます。それがビジネスクラスである場合、それよりも不可知論的なものである場合は、必要なコンテキストをパラメーターまたはプロパティで受け取る方がよいでしょう。

コンテキストの設定

Spring構成(Spring IOC)を使用する場合は、クラスが正しいxmlを書き込むために必要なものを設定できます。

そうでない場合は、どこかでDB接続を探すか、そのリストを初期化して他のクラスに参照を与える必要があります。

最後に、具体的な解決策

初期化時にこの必要なコンテキストを生成し(onContextCreated)、アプリケーションコンテキストからハングアップするコンテキストリスナーを記述します。

class MyListener implements ServletContextListener
{
   contextInitialized(ServletContextEvent event) {
      // Create theObjWEhatYouNeed
      event.getServletContext().setAttribute("whatINeed", theObjWhatYouNeed);
   }
}

MyListenerを使用するようにweb.xmlを構成します

<listener>
    <listener-class>MyListener</listener-class>
</listener>

次に、サーブレットクラスからそれを使用します(同じサーブレットクラスのインスタンスが多数存在する可能性があるため、それを念頭に置いてください)

doGet(...) {
   MyObj myObj = (MyObj) request.getSession().getServletContext().getAttribute("whatINeed");
}
于 2012-08-31T11:04:18.663 に答える