Сохранение файла в приложении сервлета на tomcat, как определить корень приложения?

#java #tomcat #servlets

#java #tomcat #сервлеты

Вопрос:

Я просто тестирую сохранение в файл из сервлета, и я хочу, чтобы это работало в отношении того, где я размещаю это приложение.

В настоящее время нет проблем с безопасностью, поскольку файл доступен для просмотра из Интернета.

Есть ли способ, которым я могу определить текущую запущенную папку приложения, или я могу сохранить эту информацию в своем web.xml и извлекать его и сохранять в статической переменной, а затем ссылаться на него в классе сервлетов моих приложений?

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

Ответ №1:

 ServletContext.getRealPath("/");
 

Тем не менее, вы не будете каждый раз искать правильное значение в файле, вы либо укажете его как параметр инициализации, либо загрузите его при запуске и сохраните в контексте приложения.

Комментарии:

1. На данный момент у меня самый лучший сервлет hello world, как я могу загрузить его при запуске и сохранить / извлечь из контекста приложения? спасибо, чувак!

2. @Blankman мог бы сделать это в методе init() (IIRC) или просто каждый раз искать init-param . На данный момент не помню, как это сделать, но быстрый поиск «параметр инициализации сервлета» должен быть всем, что вам нужно для начала работы 🙂

3. @Blankman Тем не менее, я бы с осторожностью относился к сохранению файлов в контексте приложения; они могут быть удалены при повторном развертывании, и часто это даже невозможно при развертывании файла war.

4. Я не сохраняю файл, я сохраняю путь к тому месту, куда я хочу сохранить файл, понял?

5. @Blankman Да, но то, как вы сформулировали свой вопрос, звучало так, как будто вы хотели сохранить файл там, поэтому я предоставил информацию. Получить его?