Развернуть развернутую папку из веб-приложения - PullRequest
3 голосов
/ 25 апреля 2011

Возможно ли для веб-приложения доступ к собственной развернутой папке.Я использую среду JSF 1.2, и мне нужно получить доступ к некоторым файлам, которые у меня есть в развернутом каталоге.

Имеет ли JSF какой-либо встроенный метод для предоставления нам развернутой папки и файлов в ней?

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

Использование ExternalContext.getResourcePaths("/").В контейнере сервлетов это будет делегировать ServletContext.getResoucePaths(String).Как указано в документации:

Например, для веб-приложения, содержащего:

/welcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.html
/catalog/offers/music.html
/customer/login.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com.acme.OrderServlet.class
/WEB-INF/lib/catalog.jar!/META-INF/resources/catalog/moreOffers/books.html

getResourcePaths("/") вернет {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}, а getResourcePaths("/catalog/") вернет {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/", "/catalog/moreOffers/"}.

Для переносимого кода не не предполагают, что вы можете получить доступ к ресурсам через файловую систему:

Этот метод (getResource(String)) позволяетКонтейнер сервлетов, чтобы сделать ресурс доступным для сервлетов из любого источника.Ресурсы могут находиться в локальной или удаленной файловой системе, в базе данных или в файле .war.

1 голос
/ 25 апреля 2011

Вы можете получить доступ к ресурсам в classpath, но API сервлета не гарантирует их физического представления. Другими словами, если вы развернете файл WAR, контейнер может взорвать файл WAR или оставить его как есть, или сделать что-то совершенно другое в зависимости от его потребностей.

В данном конкретном контексте это означает, что вы вводите тонкую зависимость контейнера, предполагая, что веб-приложение развернуто в папке, с которой вам следует быть очень осторожным.

Однако, если все, что вам нужно, это получить некоторые элементы, которые есть у вас в classpath, вы должны взглянуть на этот вопрос: Получение входного потока из ресурса classpath (файл XML)

0 голосов
/ 25 апреля 2011

FacesContext.getCurrentInstance().getExternalContext().getResource("/").toString();

вы получите путь к WEB-INF/classes ходу по диру, используя метод parent(); из класса File, чтобы получить местоположение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...