config.getInitParameter始终返回null

时间:2011-12-06 14:53:21

标签: java servlets

为什么config.getInitParameter(String)始终在以下代码示例中返回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 Indigo,Java 1.6,Tomcat 7.0

5 个答案:

答案 0 :(得分:8)

规范方法是在无参数GenericServlet#getInitParameter()方法中使用继承的init()(以及删除任何init(config)方法)。

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

如果仍然无效,那么您的web.xml未正确部署,或者参数名称中有拼写错误,或者您实际访问的是与filename不同的实例变量/测试它。

答案 1 :(得分:2)

确保您的servlet在其init方法上调用super.init(config),否则它将无效。

答案 2 :(得分:1)

确保您已经真正部署了正确的web.xml。另请查看config.getInitParameterNames()找到了哪些参数。

答案 3 :(得分:1)

覆盖init(config)方法绝不是一个好主意。而是使用提供的init()便捷方法并执行getServletConfig()来获取配置参数:

http://docs.oracle.com/javaee/1.2.1/api/javax/servlet/GenericServlet.html#init() http://docs.oracle.com/javaee/1.2.1/api/javax/servlet/GenericServlet.html#getServletConfig()

答案 4 :(得分:0)

如果使用IDE STS4,请检查是否存在类名称的注释,请同时使用“ annotation”和“ web.xml”,则值可能为空。