2011-12-06 61 views
4

爲什麼在以下代碼示例中config.getInitParameter(String)始終返回nullconfig.getInitParameter總是返回null

public void init(ServletConfig config) throws ServletException 
{ 
    super.init(config); 
    filename = config.getInitParameter("addressfile"); 

這是web.xml文件

<servlet> 
<servlet-name>ListManagerServlet</servlet-name> 
<servlet-class>savva.listmanagerservlet.ListManagerServlet</servlet-class> 
<init-param> 
    <param-name>addressfile</param-name> 
    <param-value>d:\temp\demo.txt</param-value> 
</init-param> 
</servlet> 
<servlet-mapping> 
<servlet-name>ListManagerServlet</servlet-name> 
<url-pattern>/ListManagerServlet</url-pattern> 
</servlet-mapping> 

UPD:Eclipse的EE靛藍,Java 1.6的,7.0的Tomcat

回答

8

的規範的方法是隻用在argumentless init()方法繼承GenericServlet#getInitParameter()(和刪除任何init(config)方法)。

@Override 
public void init() throws ServletException { 
    filename = getInitParameter("addressfile"); 
} 

如果仍然不能正常工作,那麼你的web.xml未正確部署,或你在參數名稱拼寫錯誤,或您實際訪問不同的實例變量比filename使用/測試。

+0

我已經完成init()。但結果是一樣的。返回null。我在Eclipse中開發,而且tomcat也使用eclipse。 Web.xml不能在tomcat中部署。這可能是Eclipse中的特點嗎? – savva

+0

然後注意我答案的最後一段。我敢打賭,在編輯之後,你的'web.xml'沒有被正確地重建/重新部署。 – BalusC

+0

那麼問題是什麼,你是如何解決它的? –

1

確保你真的部署了適當的web.xml。還請諮詢config.getInitParameterNames()找到了哪些參數。

+1

config.getInitParameterNames()返回一個空的Enumeration。 – savva

+1

我怎麼能確定,真的部署了正確的web.xml?我使用Eclipse的tomcat在Eclipse中開發。 – savva

2

確保您的servlet在其init方法中調用super.init(config),否則它將無法工作。

+0

錯誤,get的時候提到的config是容器傳遞的函數參數。 –