【问题标题】:Jetty setInitParameter is NOT initializing any parameterJetty setInitParameter 未初始化任何参数
【发布时间】:2012-03-02 06:22:03
【问题描述】:

我已经嵌入了 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 确实需要使用它时,它不需要,因为它没有设置。为什么会发生这种情况?

【问题讨论】:

    标签: java servlets jetty


    【解决方案1】:

    您在 ServletContextHandler 上设置 InitParameter,但您应该在 ServletHolder 上设置它。

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

    【讨论】:

      【解决方案2】:

      您设置了上下文初始化参数,而不是 servlet 初始化参数。因此,您需要将其作为上下文初始化参数而不是作为 servlet 初始化参数来检索。

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

      或者,您当然也可以将其设置为 servlet 初始化参数,但这样该参数将仅对关联的 servlet 可用,而不对在同一上下文中运行的所有其他 servlet 可用。这可能是也可能不是您想要的,具体取决于具体的功能要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2012-04-17
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        相关资源
        最近更新 更多