如何在没有 web.xml 的情况下以编程方式配置 <context-param>

How to configure <context-param> programmatically without web.xml

除了下面示例中使用 web.xml 的方法之外,还有其他方法可以配置上下文参数吗?

<context-param>
    <param-name>com.sun.faces.numberOfLogicalViews</param-name>
    <param-value>10</param-value>
</context-param>

从 Servlet 3.0 开始,您可以通过 ServletContext#setInitParameter() 以编程方式设置它们。

只需在下面 ServletContextListener anywhere in your web project. The @WebListener 注释将使容器自动拾取并 运行 在 webapp 启动期间。

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        ServletContext servletContext = event.getServletContext(); 
        servletContext.setInitParameter("com.sun.faces.numberOfLogicalViews", "10");
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // NOOP.
    }

}

如果您使用的是嵌入式 Tomcat,它是这样的:

Context.getServletContext()
    .getServletRegistrations()
    .get("webdavservlet")
    .setInitParameter("listings", "true");