我有一个像
这样的servletpublic class MainServlet extends HttpServlet {
public List<Card> cardList = new ArrayList<Card>();
public int numberOfCard = 0;
.................
.................
}
现在我想从同一个包中的普通java类访问这个全局变量,我该怎么办?
答案 0 :(得分:1)
我认为这不是一个好用的模式。
请记住,Servlet容器在调用之间只共享一个此servlet实例。这意味着在servlet中拥有一个全局变量会产生并发问题。
如果你想要做得更好,可以定义另一个处理公共存储的单例类,这样你就可以直接在其中写入和读取值。但是,您没有指定“普通java类”是在同一个线程中运行还是由另一个进程/线程启动。同样在最后一种情况下,您可能会出现并发问题,因此最好不要使用简单的列表,而应使用java.util.concurrent包中定义的启用并发的列表之一。
此致
保
答案 1 :(得分:0)
我们不能像普通类那样为servlet创建对象,因为servlet在服务器内部运行,因此servlet容器创建了servlet对象。 如果我们想在servlet中声明的其他类中使用变量,则需要创建servlet的对象,并且可以使用这些变量。
你不应该在servlet中使用实例变量,因为这些变量是由所有人共享的。