Java getInitParameterNames()不获取初始化参数
我正在使用servlet进行web开发的第一步。现在,我试图检索servlet的一些init参数以及上下文参数。它们在web.xml上声明如下:Java getInitParameterNames()不获取初始化参数,java,servlets,web,Java,Servlets,Web,我正在使用servlet进行web开发的第一步。现在,我试图检索servlet的一些init参数以及上下文参数。它们在web.xml上声明如下: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.s
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>JediWebTutorial</display-name>
**<context-param>
<param-name>contextParam</param-name>
<param-value>contextValue</param-value>
</context-param>**
<servlet>
<servlet-name>GreeterServlet</servlet-name>
<servlet-class>jedi.servlets.GreeterServlet</servlet-class>
**<init-param>
<param-name>servletParam</param-name>
<param-value>servletValue</param-value>
</init-param>**
</servlet>
<servlet>
<servlet-name>GetParameterValuesServlet</servlet-name>
...
绝地网教程
**
上下文参数
上下文值
**
GreeterServlet
jedi.servlets.GreeterServlet
**
servletParam
servletValue
**
GetParameterValuesServlet
...
我试图在GreeterServlet中使用doGet方法获取它,如下所示:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config = getServletConfig();
ServletContext context = config.getServletContext();
Enumeration<String> servletParams = config.getInitParameterNames();
Enumeration<String> contextParams = context.getInitParameterNames();
for (String param : Collections.list(servletParams)) {
System.out.println(param);
}
for (String param : Collections.list(contextParams)) {
System.out.println(param);
}
...
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
ServletConfig=getServletConfig();
ServletContext=config.getServletContext();
枚举servletParams=config.getInitParameterNames();
枚举contextParams=context.getInitParameterNames();
for(字符串参数:Collections.list(servletParams)){
系统输出打印项次(参数);
}
for(字符串参数:Collections.list(contextParams)){
系统输出打印项次(参数);
}
...
正如所料,console显示名称“contextParam”。但是,它不打印“servletParam”名称
我花了几个小时与它抗争,并保证该节点在内部,我不会以任何方式重写GreeterServlet的init()方法(因为在许多讨论列表中,在某些情况下,它被报告为问题的原因).我还没有在网上找到类似的案例-可能是因为这件事太简单了,我太不懂了。无论如何,感谢所有费心去看它的人
顺便说一句,如果有帮助的话,我正在使用TomCat 7.0.34和Eclipse Helios。我本应将此作为注释添加,但不知怎的,我没有得到这个问题的“添加注释”链接,因此作为答案发布
哪个servlet是您发布的doGet()方法的一部分?它似乎是GetParameterValuesServlet的一部分,并且您已将init参数添加到GreeterServlet中。处理此问题时,我发现可以通过以下方式访问servlet的init参数(针对上述问题): 什么将打印期望的servletValue
这确实是一个解决方案,尽管它没有回答前面的问题。如果其他人遇到类似的问题,请尝试!如果有人找到了原始问题的解决方案,它肯定会很好!;-)谢谢,但它确实是GreeterServlet的doGet方法。我使用的代码与您发布的代码完全相同我不知道你为什么没有得到相同的输出。
ServletContext context = config.getServletContext();
ServletRegistration register = context.getServletRegistration("GreeterServlet");
String servletParam = register.getInitParameter("servletParam");
System.out.println(servletParam);