config.getInitParameter始终返回null

问题描述 投票:5回答:5

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

java servlets
5个回答
8
投票

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

init()

如果仍然不起作用,则说明您的init(config)部署不正确,或者参数名称中有错字,或者您实际上访问了一个与@Override public void init() throws ServletException { filename = getInitParameter("addressfile"); } 不同的实例变量来使用/测试它。] >


2
投票

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


1
投票

请确保您确实部署了正确的web.xml。还要用web.xml检查找到的参数。


1
投票

重写filename方法绝不是一个好主意。而是使用提供的config.getInitParameterNames()便捷方法并执行init(config)以获取配置参数:


-1
投票

既然用了“ url-pattern”,就不能再在servlet类名上加“ @WebServlet”,加了就会导致取“ init-param”为空。

© www.soinside.com 2019 - 2024. All rights reserved.