Jetty setInitParameter不初始化任何参数

时间:2012-02-09 18:32:38

标签: java servlets jetty

我已经嵌入了Jetty,我正在尝试设置初始化参数。

主要类 Main 创建一个 Cgi 的servlet,它扩展了CGI

Main 中,我有以下代码:

ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS);
context2.setContextPath("/cgi");
context2.setResourceBase("./cgi-bin");
context2.setInitParameter("commandPrefix", "perl");
context2.addServlet(new ServletHolder(new Cgi()), "/");
server.setHandler(context2);

Cgi 中,我查看参数:

public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println(servletConfig.getInitParameter("commandPrefix"));
        super.init(servletConfig);
}

每次都会为 getInitParameter 调用打印出null。然后,当Cgi确实需要使用它时,它没有,因为它没有设置。为什么会发生这种情况?

2 个答案:

答案 0 :(得分:10)

您在ServletContextHandler上设置了InitParameter,但您应该在ServletHolder上进行设置。

(我知道这有点令人困惑)

答案 1 :(得分:2)

您已设置了上下文init参数,而不是servlet init参数。因此,您需要将其作为上下文init参数而不是servlet init参数进行检索。

System.out.println(servletConfig.getServletContext().getInitParameter("commandPrefix"));

或者,您当然也可以将其设置为servlet init参数,但这样参数只能用于关联的servlet,而不能用于在同一个上下文中运行的所有其他servlet。根据具体的功能要求,这可能是你想要的,也可能不是你想要的。

相关问题