差异b / w <context-param>和<init-param> </init-param> </context-param>

时间:2010-01-15 06:41:55

标签: java servlets deployment-descriptor init-parameters

DD元素<context-param><init-param>都可以通过getInitParameter()方法在servlet代码中检索。

现在的问题是,它如何区分<context-param><init-param>

2 个答案:

答案 0 :(得分:44)

Servlet init参数仅适用于单个servlet。该servlet之外没有任何东西可以访问它。它在Deployment Descriptor的<servlet>标记内声明,另一方面 context init参数用于整个Web应用程序。该Web应用程序中的任何servlet或JSP都可以访问上下文init参数上下文参数直接在<context-param>标记内的标记<web-app>中声明。

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

getServletContext().getInitParameter("name"); 

而访问 servlet init参数的方法是

getServletConfig().getInitParameter("name");

答案 1 :(得分:2)

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

所有servlet都是从GenericServlet延伸出来的,因此是<context-param>的实例。

DD元素ServletContext context = this.getServletContext(); String paramValue = context.getInitParamter("paramName"); 可以通过以下方式检索:

<init-param>

DD元素ServletConfig config = this.getServletConfig(); String paramValue = config.getInitParamter("paramName"); 都可以通过以下方式检索:

GenericServlet

另请注意,由于ServletConfig类实现了this = this.getServletConfig()接口,因此您的servlet类也是ServletConfig(隐含<init-param>)。因此,您还可以通过以下方式直接获取DD元素String paramValue = this.getInitParamter("paramName");

{{1}}

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