如何从 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如何配置?