DD元素<context-param>
和<init-param>
都可以通过getInitParameter()
方法在servlet代码中检索。
现在的问题是,它如何区分<context-param>
和<init-param>
?
答案 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中。