【问题标题】:Difference b/w <context-param> and <init-param><context-param> 和 <init-param> 之间的区别
【发布时间】:2011-01-05 09:48:28
【问题描述】:

DD 元素 &lt;context-param&gt;&lt;init-param&gt; 都可以通过 servlet 代码中的 getInitParameter() 方法检索。

现在的问题是,它如何区分&lt;context-param&gt;&lt;init-param&gt;

【问题讨论】:

  • 我不知道为什么,但我同意这令人困惑和烦人。

标签: java servlets deployment-descriptor init-parameters


【解决方案1】:

Servlet init 参数 仅适用于单个 servlet。该 servlet 之外的任何内容都无法访问它。它在 Deployment Descriptor 的 &lt;servlet&gt; 标签内声明,而 context init 参数 是针对整个 Web 应用程序的。该 Web 应用程序中的任何 servlet 或 JSP 都可以访问 context init 参数上下文参数直接在&lt;web-app&gt; 标记内的标记&lt;context-param&gt; 中声明。

上下文初始化参数的访问方法是

getServletContext().getInitParameter("name"); 

而访问servlet init参数的方法是

getServletConfig().getInitParameter("name");

【讨论】:

    【解决方案2】:

    正如Adeel Ansari, here 所解释的,这取决于您在servlet 代码中调用getInitParameter() 方法的对象。

    所有 servlet 都从 GenericServlet 扩展而来,因此是 GenericServlet 的实例。

    .

    DD 元素&lt;context-param&gt; 可以通过以下方式检索:

    ServletContext context = this.getServletContext();
    String paramValue = context.getInitParamter("paramName");
    

    .

    DD 元素&lt;init-param&gt; 都可以通过以下方式检索:

    ServletConfig config = this.getServletConfig();
    String paramValue = config.getInitParamter("paramName");
    

    还要注意,由于GenericServlet 类实现了ServletConfig 接口,因此您的servlet 类也是ServletConfig(隐含this = this.getServletConfig())。因此,您也可以通过以下方式直接获取 DD 元素 &lt;init-param&gt;

    String paramValue = this.getInitParamter("paramName");
    

    .

    您可以通过在具有不同值的两个 DD 元素中使用相同的 param-name 来尝试此操作,然后将其打印到您的 servlet 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多