我正在使用 servlet 进行 Web 开发的第一步。现在我正在尝试检索 servlet 的一些初始参数以及上下文参数。它们在 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.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 中的 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);
}
...
正如预期的那样,控制台显示名称“contextParam”。但是,它不会打印“servletParam”名称。
我为此苦苦挣扎了几个小时,并确保节点在内部,并且我不会以任何方式覆盖 GreeterServlet 的 init() 方法(因为在许多讨论列表中的某些情况下,它被报告为问题的原因) . 我在网上没有找到类似的案例-也许是因为我太初学者了,这太简单了。无论如何,感谢任何愿意看看它的人!
顺便说一句,如果有帮助,我正在使用 TomCat 7.0.34 和 Eclipse Helios。