为什么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
答案 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”,则值可能为空。