Это довольно плохая практика.Нет гарантии, что он работает на всех сервлетконтейнерах, кроме Jetty.Даже тогда я не уверен, работает ли он на Jetty.По крайней мере, tt сделает ваше веб-приложение не переносимым в другие контейнеры.
Когда расширена WAR (это зависит от сервлет-контейнера , если и , где , то WAR будет расширен!)затем ServletContext#getRealPath()
можно использовать для преобразования относительного к веб-контенту пути в абсолютный путь к файловой системе диска.
Когда в сервлете внутри foo.war
String absoluteFooWebPath = getServletContext().getRealPath("/");
* вызывается следующая строка1013 *, и Jetty развернула файл WAR в той же папке веб-приложений, после чего будет получен абсолютный путь к
/jetty/webapps/foo
.Затем, чтобы перейти оттуда к
/jetty/stuff
, вам нужно перейти вверх по двум каталогам, а затем оттуда перейти к каталогу
stuff
.
String absoluteStuffPath = getServletContext().getRealPath("../../stuff");
В конце концов, самый надежный способ - указать контейнер сервлетов.-независимый фиксированный путь с правами чтения / записи, который вы должным образом документируете в руководстве по установке вашего веб-приложения или чтобы его можно было настраивать с помощью некоторого аргумента VM / системного свойства.