黑白<上下文参数>和<初始化参数>

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

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


答案 1

Servlet init 参数仅适用于单个 servlet。该 servlet 外部的任何内容都无法访问它。它是在部署描述符的标记内声明的,另一方面,上下文 init 参数用于整个 Web 应用程序。该 Web 应用程序中的任何 servlet 或 JSP 都可以访问上下文 init 参数上下文参数直接在标记内的标记中声明。<servlet><context-param><web-app>

访问上下文 init 参数的方法为

getServletContext().getInitParameter("name"); 

而访问 servlet init 参数的方法是

getServletConfig().getInitParameter("name");

答案 2

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

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

.

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

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

.

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

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

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

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

.

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


推荐