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

语境

你需要上下文。

需要为 Servlet 类提供该上下文。

数据库或内存

您可以引用数据库(数据源)并在每次数据库时查询,或者在内存中有一些东西(以示例列出)。

无论如何,如果 C 是一个知道它在 servlet 环境中的 servlet 类,您可以要求应用程序上下文。如果它是一个业务类,更不可知的东西,那么最好通过参数或属性接收它需要的上下文。

设置上下文

如果您使用 Spring 配置 (Spring IOC),您可以设置类需要编写正确的 xml。

如果您不这样做,那么您需要在某个地方查找数据库连接,或者初始化该列表并为其他类提供参考。

最后,一个具体的解决方案

编写一个上下文侦听器,在初始化时生成所需的上下文(onContextCreated)并将其从应用程序上下文中挂起:

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

配置您的 web.xml 以使用 MyListener

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

然后从您的 servlet 类中使用它(可能有很多同一个 servlet 类的实例,请记住这一点)

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