config.getInitParameter总是返回null

6
为什么在以下代码示例中,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>

更新:Eclipse EE Indigo、Java 1.6、Tomcat 7.0

5个回答

9

最标准的方式是在无参init()方法中使用继承的GenericServlet#getInitParameter()(并且删除任何init(config)方法)。

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

如果仍然不起作用,则您的web.xml没有正确部署,或者参数名称存在拼写错误,或者您实际上访问了与filename不同的实例变量来使用/测试它。

1
我已经执行了init()。但结果仍然相同,返回null。我在Eclipse中开发,并且也使用Eclipse中的Tomcat。Web.xml没有部署在Tomcat上。可能这是在Eclipse中开发的特点? - savva
请注意我的回答的最后一段。我打赌你的 web.xml 在编辑后没有正确地重新构建/部署。 - BalusC

2

确保您的Servlet在其init方法中调用super.init(config),否则它将无法正常工作。


错误,被引用的配置是函数参数,由容器传递。 - Ramesh PVK

1

确保您已经部署了正确的web.xml文件。同时,使用config.getInitParameterNames()检查找到了哪些参数。


1
config.getInitParameterNames() 返回一个空的枚举。 - savva
1
我怎样才能确信已经部署了正确的web.xml文件?我使用Eclipse和Eclipse的Tomcat进行开发。 - savva

1

0
如果使用STS4 IDE,请检查类名上是否存在注释,同时使用“注释”和“web.xml”可能会导致值为空。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接