27

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

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

4

2 回答 2

44

Servlet初始化参数仅适用于单个 Servlet。该 servlet 之外的任何内容都无法访问它。它是在<servlet>Deployment Descriptor 的标签内声明的,另一方面context init 参数是针对整个 Web 应用程序的。该 Web 应用程序中的任何 servlet 或 JSP 都可以访问上下文初始化参数上下文参数<context-param>直接在标签内的标签中声明<web-app>

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

getServletContext().getInitParameter("name"); 

而访问servlet init 参数的方法是

getServletConfig().getInitParameter("name");
于 2010-01-15T07:23:34.013 回答
2

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

所有 servlet 都从GenericServlet.

.

<context-param>可以通过以下方式检索DD 元素:

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

.

DD 元素<init-param>都可以通过以下方式检索:

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

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

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

.

您可以通过在具有不同值的两个 DD 元素中使用相同的参数名称来尝试此操作,然后在您的 servlet 中打印它。

于 2010-01-15T16:41:12.540 回答