Я бы предположил, что большинство реализаций ServletConfig хранят эту информацию отображения (org.apache.catalina.core.StandardWrapper), но поскольку ServletConfig-Interface не предоставляет получателя, вы Чтобы получить его, придется выполнить некоторые хитрости и привязать ваше приложение к конкретной реализации или серверу приложений.
Может быть, вы просто прочитали это из web.xml. Просто выберите все элементы «servlet-mapping» с заданным «servlet-name» и прочитайте «url-pattern». Так как это в спецификации, это должно работать на любом сервере приложений.
EDIT:
Вот грязный пример. Получение отображений URL с использованием refelction:
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
Class<?> clazz = config.getClass();
Field configField = clazz.getDeclaredField("config");
configField.setAccessible(true);
StandardWrapper standardWrapper = (StandardWrapper) configField.get(config);
clazz = standardWrapper.getClass();
Field mappingsField = clazz.getDeclaredField("mappings");
mappingsField.setAccessible(true);
List<?> mappings = (List<?>) mappingsField.get(standardWrapper);
System.out.println(mappings);
}catch (Exception e) {
logger.error("", e);
}
}
Это работает в моей среде JSF, Tomcat. Объект конфигурации - "org.apache.catalina.core.StandardWrapperFacade" и имеет поле с именем "config", в котором содержится "org.apache.catalina.core.StandardWrapper", в котором есть поле с именем "mappings".
Но, как я уже сказал, это грязный хак!