Есть у меня вэб-приложение в котором есть файл, который расположен в WEB-INF/resources/file.xml.
Также в вэб-приложении у меня есть сервлет, который должен считать содержимое этого файла.
Вопрос: как найти этот файл через сервлет, чтобы его считать?
Здравствуйте, JINI, Вы писали:
JIN>Есть у меня вэб-приложение в котором есть файл, который расположен в WEB-INF/resources/file.xml. JIN>Также в вэб-приложении у меня есть сервлет, который должен считать содержимое этого файла. JIN>Вопрос: как найти этот файл через сервлет, чтобы его считать?
Попробуй
Здравствуйте, stenkil, Вы писали:
S>Здравствуйте, JINI, Вы писали:
JIN>>Есть у меня вэб-приложение в котором есть файл, который расположен в WEB-INF/resources/file.xml. JIN>>Также в вэб-приложении у меня есть сервлет, который должен считать содержимое этого файла. JIN>>Вопрос: как найти этот файл через сервлет, чтобы его считать? S>Попробуй S>
Returns a String containing the real path for a given virtual path. For example, the path "/index.html" returns the absolute file path on the server's filesystem would be served by a request for "http://host/contextPath/index.html", where contextPath is the context path of this ServletContext..
The real path returned will be in a form appropriate to the computer and operating system on which the servlet container is running, including the proper path separators. This method returns null if the servlet container cannot translate the virtual path to a real path for any reason (such as when the content is being made available from a .war archive).
У меня war файл и я, как понимаю, он вернёт null.
И ещё один момент. Мне также необходимо взять ссылку на другой файл из того же каталога и записать в него. Т.е. как я понимаю, url-ссылка здесь не пойдёт.
JIN>[code] JIN>Returns a String containing the real path for a given virtual path. For example, the path "/index.html" returns the absolute file path on the server's filesystem would be served by a request for "http://host/contextPath/index.html", where contextPath is the context path of this ServletContext..
Вернул он мне нормальный путь D:\..., но вот с war файлом не знаю. Подождем спецов
Здравствуйте, Blazkowicz, Вы писали:
B>Эть, сколько вас развеолсь с этим getRealPath. Не уже ли никто с ним не связывался в действительности? getResourceAsStream и ез вариантов.
Здравствуйте, JINI, Вы писали:
JIN>И ещё один момент. Мне также необходимо взять ссылку на другой файл из того же каталога и записать в него. Т.е. как я понимаю, url-ссылка здесь не пойдёт.
какого еще каталога, если мы говорим о web-приложении, которое есть war-файл?!
Здравствуйте, stenkil, Вы писали:
B>>Эть, сколько вас развеолсь с этим getRealPath. Не уже ли никто с ним не связывался в действительности? getResourceAsStream и ез вариантов.
S>Объяснил бы хоть, где грабли?
веб-приложение поставляется war-файлом.
вариант с распакованным содержимым — опционален, надо писать так, чтобы работало без предположения относительно места хранения распакованных файлов (сервер может это делать в своих "потайных" каталогах)
Здравствуйте, Blazkowicz, Вы писали:
JIN>>java.io.InputStream resourceInputStream = getServletContext().getResourceAsStream("WEB-INF/resources/input.xml"); JIN>>и получал null.
B>Попорбуй слеш в начале.
ресурсу место в WEB-INF/classes/resources/input.xml, тогда обращаться к нему надо будет "resources/input.xml"
Здравствуйте, C0s, Вы писали:
C0s>Здравствуйте, Blazkowicz, Вы писали:
JIN>>>java.io.InputStream resourceInputStream = getServletContext().getResourceAsStream("WEB-INF/resources/input.xml"); JIN>>>и получал null.
B>>Попорбуй слеш в начале.
C0s>ресурсу место в WEB-INF/classes/resources/input.xml, тогда обращаться к нему надо будет "resources/input.xml"
Но это не логично класть ресурсы в папку с классами.
Здравствуйте, JINI, Вы писали:
C0s>>ресурсу место в WEB-INF/classes/resources/input.xml, тогда обращаться к нему надо будет "resources/input.xml"
JIN>Но это не логично класть ресурсы в папку с классами.
почему это не логично?
ресурсы, чтобы быть доступными, должны попадать в класс-путь — значит им место рядом с классами