为什么在以下代码示例中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
规范的方法是仅在无参数的GenericServlet#getInitParameter()
方法中使用继承的GenericServlet#getInitParameter()
(并且删除任何init()
方法)。
init()
如果仍然不起作用,则说明您的init(config)
部署不正确,或者参数名称中有错字,或者您实际上访问了一个与@Override
public void init() throws ServletException {
filename = getInitParameter("addressfile");
}
不同的实例变量来使用/测试它。] >
确保您的servlet在其init方法上调用super.init(config),否则它将无法正常工作。
请确保您确实部署了正确的web.xml。还要用web.xml
检查找到的参数。
重写filename
方法绝不是一个好主意。而是使用提供的config.getInitParameterNames()
便捷方法并执行init(config)
以获取配置参数:
既然用了“ url-pattern”,就不能再在servlet类名上加“ @WebServlet”,加了就会导致取“ init-param”为空。