2013-12-19 26 views
1

訪問servlet變量我有一個像如何從Java類

public class MainServlet extends HttpServlet { 
public List<Card> cardList = new ArrayList<Card>(); 
public int numberOfCard = 0; 
................. 
................. 
} 

現在我想從正常的java類在同一個包訪問這個全局變量一個servlet,我該怎麼辦呢?

+3

爲什麼?你的servlet根本不應該有實例變量。你確實意識到它們是在所有用戶之間共享的? – EJP

+0

是的,我知道。但我正在使用一些硬件,所以我必須測試一些情況。這就是我問的原因。 –

回答

1

我認爲這不是一個好的使用模式。

請記住,Servlet容器只有一個servlet在實例中共享。這意味着在servlet中擁有一個全局變量會產生併發問題。

如果您想更好地完成某項任務,您可以定義另一個處理公共存儲的單例類,以便您可以直接在其中寫入和讀取值。但是,您沒有指定「正常的java類」是在同一個線程中運行,還是由另一個進程/線程啓動。同樣在最後一種情況下,您可能會遇到併發問題,因此可以使用不是簡單的列表,而是使用java.util.concurrent包中定義的並行啓用列表之一。

問候

保羅

0

我們不能創造像普通類的servlet對象,因爲servlet的是在服務器內部運行,這樣的servlet對象由servlet容器創建的。 如果我們想要使用servlet中聲明的其他一些類中的變量,則意味着您需要創建servlet的對象,並且可以使用這些變量。

您不應該在servlet中使用實例變量,因爲這些變量由所有人共享。