你如何从servlet反省web.xml?

jsi*_*ght 5 java web.xml servlets java-ee servlet-filters

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

Chs*_*y76 4

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

filterConfig.getServletContext().getResource("/WEB-INF/web.xml");
Run Code Online (Sandbox Code Playgroud)

并使用 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");
Run Code Online (Sandbox Code Playgroud)