【问题标题】:adding a context-param programmatically?以编程方式添加上下文参数?
【发布时间】:2012-02-20 22:35:23
【问题描述】:

有没有办法以编程方式添加上下文参数?我不想在 web-xml 中添加。具体来说,我想做这篇文章中的答案建议:Invoking methods with parameters by EL in JSF 1.2

【问题讨论】:

    标签: jsf servlets


    【解决方案1】:

    是的,这是可能的。

    在servlet的init方法中,使用

    getServletConfig().getServletContext().setInitParameter("[Parameter name]", "[value]");
    

    或者干脆

    getServletContext().setInitParameter("[Parameter name]", "[value]");
    

    这一定对你有用。

    对于应用程序负载,

    在 web.xml 中,当你声明这个 servlet 时,为这个 servlet 提供 <load-on-startpup> 元素为 1。

    <servlet>
     <servlet-name>TestServlet</servlet-name>
     <servlet-class>TestServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
    </servlet>
    

    【讨论】:

    • 然而,这种方法并不能保证需要相关上下文参数的 API 以编程方式设置后会读取它。
    • 它会因为程序员知道将在应用程序中加载的第一个 servlet,并且在该 servlet 中,将设置 init 参数。
    • 一些 API(比如 JSF!)使用 ServletContextListenerServletContainerInitializer 来初始化 API,它们在创建第一个 Servlet 之前很久就运行了。
    • 那么ServletContextListener 或其他可能是设置初始化参数的最佳位置?
    • 顺便说一句,setInitParameter 似乎只能从 Servlet 3.0 开始使用
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2011-05-31
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多