2012-02-09 32 views
5

我嵌入式Jetty和我想設置初始化參數。碼頭setInitParameter沒有任何初始化參數

主類主創建的cgi延伸CGI的的servlet。

主要,我有以下代碼:

ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS); 
context2.setContextPath("/cgi"); 
context2.setResourceBase("./cgi-bin"); 
context2.setInitParameter("commandPrefix", "perl"); 
context2.addServlet(new ServletHolder(new Cgi()), "/"); 
server.setHandler(context2); 

的cgi,我檢查一下參數:

public void init(ServletConfig servletConfig) throws ServletException { 
     System.out.println(servletConfig.getInitParameter("commandPrefix")); 
     super.init(servletConfig); 
} 

每一次,它打印出空了getInitParameter致電。那麼當Cgi確實需要使用它時,它不會,因爲它沒有設置。爲什麼會發生這種情況?

回答

9

你設置InitParameter上ServletContextHandler,但你應該把它放在了ServletHolder

(這有點混亂,我知道)

+0

謝謝!過去幾周,這一直令我感到困惑 – joslinm 2012-02-10 18:56:05

2

您設置的背景下初始化參數,而不是一個Servlet初始化參數。因此,您需要將其作爲上下文init參數進行檢索,而不是作爲servlet init參數。

System.out.println(servletConfig.getServletContext().getInitParameter("commandPrefix")); 

或者,你當然也可以將其設置爲一個servlet初始化參數代替,但這樣的參數將只提供給相關的servlet只,而不是在同一個環境中運行的所有其他servlet。根據具體的功能要求,這可能是也可能不是你想要的。