我正在開發使用servlet的Web開發的第一步。現在我試圖檢索servlet的一些初始參數以及上下文。他們在web.xml中聲明如下:getInitParameterNames()不會獲得init參數
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>JediWebTutorial</display-name>
**<context-param>
<param-name>contextParam</param-name>
<param-value>contextValue</param-value>
</context-param>**
<servlet>
<servlet-name>GreeterServlet</servlet-name>
<servlet-class>jedi.servlets.GreeterServlet</servlet-class>
**<init-param>
<param-name>servletParam</param-name>
<param-value>servletValue</param-value>
</init-param>**
</servlet>
<servlet>
<servlet-name>GetParameterValuesServlet</servlet-name>
...
我試圖在GreeterServlet內得到它,在doGet方法,如:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config = getServletConfig();
ServletContext context = config.getServletContext();
Enumeration<String> servletParams = config.getInitParameterNames();
Enumeration<String> contextParams = context.getInitParameterNames();
for (String param : Collections.list(servletParams)) {
System.out.println(param);
}
for (String param : Collections.list(contextParams)) {
System.out.println(param);
}
...
正如預期的那樣,控制檯顯示名稱「contextParam」。但是,它不打印「servletParam」名稱。
我一直在掙扎幾個小時,並且確信節點在裏面,我不會以任何方式重寫GreeterServlet的init()方法(因爲它在某些情況下被報告爲導致問題的原因許多討論列表)。我還沒有在網上發現類似的情況 - 也許因爲太過簡單,我太開心了。無論如何,感謝任何懶得看看它的人!
順便說一句,如果有幫助,我使用TomCat 7.0.34和Eclipse Helios。
謝謝,但它確實是GreeterServlet的doGet方法。 – TitoFHR
我使用了與原始文章中發佈的完全相同的代碼,並且打印了「servletParam」和「contextParam」。我不知道爲什麼你沒有得到相同的輸出。 –