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类中我将有一个字符串,我需要检查,如果该字符串值存在,那么做其他事情做soemthing
问题是这是一个WebApplication,我不能在应用程序中使用实例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 .
}
}
答案 0 :(得分:0)
<强>上下文强>
你需要背景。
需要为该上下文提供Servlet类。
数据库或内存
每次数据库都可以引用DB(数据源)和查询,或者在内存中有内容(通过示例列出)。
如果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");
}