如何从 servlet 内省 web.xml?

Posted

技术标签:

【中文标题】如何从 servlet 内省 web.xml?【英文标题】:How do you introspect web.xml from a servlet? 【发布时间】:2010-11-19 17:02:35 【问题描述】:

servlet 过滤器有没有办法获取所有 servlet 及其映射的列表?

【问题讨论】:

不使用标准 API。特定的容器可能会让你这样做,但这取决于你的容器。 奇怪的是,曾经有这样的 API,但被放弃了。 【参考方案1】:

没有标准的 API(不再有;而且那里的内容相当有限) - 但它是一个具有标准架构的 XML 文件。您可以通过以下方式在过滤器中获取它:

filterConfig.getServletContext().getResource("/WEB-INF/web.xml");

并使用 SAX / DOM / XPath / 你有什么,例如

 InputStream is = filterConfig.getServletContext()
   .getResourceAsStream("/WEB-INF/web.xml");
 DocumentBuilder builder = DocumentBuilderFactory.newInstance()
   .newDocumentBuilder();
 Document document = builder.parse(is);
 NodeList servlets = document.getElementsByTagName("servlet");

【讨论】:

这在 EE6 中有所下降,其中 servlet 可以由注释和 web-fragment.xml 文件定义。但是,可以对那些使用相同的方法;这只是一个简单的编程问题。

以上是关于如何从 servlet 内省 web.xml?的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何从带有嵌入式码头的 web.xml 加载 servlet?

web.xml中url-pattern有啥意义,servlet如何配置?

Servlet配置

用init-param如何从web.xml中获得参数?

如何设置 web.xml 和 dispatcher-servlet.xml 进行映射?

如何在 web.xml 中配置 spring-boot servlet?