Có cách nào để bộ lọc servlet nhận danh sách tất cả các servlet và ánh xạ của chúng không?Làm thế nào để bạn quan sát web.xml từ một servlet?
5
A
Trả lời
4
Không có API chuẩn (nữa; và những gì ở đó là khá hạn chế) - nhưng đó là tệp XML có lược đồ chuẩn. Bạn có thể lấy nó trong bộ lọc của mình qua:
filterConfig.getServletContext().getResource("/WEB-INF/web.xml");
và nhận những gì bạn muốn từ bộ lọc bằng SAX/DOM/XPath/bạn có gì, ví dụ:
InputStream is = filterConfig.getServletContext()
.getResourceAsStream("/WEB-INF/web.xml");
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document document = builder.parse(is);
NodeList servlets = document.getElementsByTagName("servlet");
+0
Điều này rơi xuống một chút trong EE6, nơi các servlet có thể được định nghĩa bằng các chú thích và bởi các tệp web-fragment.xml. Cách tiếp cận tương tự có thể được sử dụng trên những người, mặc dù; nó chỉ là vấn đề đơn giản của lập trình. –
Không sử dụng API chuẩn. Các thùng chứa cụ thể có thể cho phép bạn làm điều đó, nhưng điều đó sẽ tùy thuộc vào vùng chứa của bạn. – skaffman
Kỳ lạ của nó là đã từng là API cho những thứ như thế này, nhưng đã bị loại bỏ. – jsight