2011-02-07 35 views
1

我正在使用Servlets的混合情況& Struts2。ServletActionContext.getRequest()返回NULL

我打電話給一個HTTPServlet,並在其中處理數據。

然後我需要調用struts API來在數據庫中插入數據。

因爲我也使用HTTPSession。

所以我打電話

ServletActionContext.getRequest() 

要獲得的HttpRequest,然後在該會話Struts Action類。

Struts Action類正在被Servlet調用。

ServletActionContext.getRequest() 

總是返回NULL。

是因爲它沒有被網絡調用。

回答

5

首先,ServletActionContextActionContext都使用ThreadLocal來存儲每個請求對象(如請求和響應)。這由Struts2處理。如果你試圖從Servlet中調用它們,它們將返回null,因爲請求被路由到你的servlet,而不是Struts2(因此Struts2沒有爲請求創建一個動作上下文)。因此,Struts2是對Servlet API的更高層次的抽象。事實上,你從一個Servlet中調用Struts2動作,聽起來確實是錯誤。

如果您需要在servlet和動作中執行一些常見的過程,則創建一個單獨的類來處理該過程(即將數據插入數據庫中),然後從您的servlet和動作中調用該類。

如果這不是你想要做的,那麼請提供更多的細節,以及你的servlet和動作代碼的例子。

+0

嗨史蒂文.. 謝謝你澄清我的概念。我將發佈我的場景,爲什麼我從servlet調用struts。 – 2011-02-08 05:56:10