Запись файла на веб-сервере без указания реального пути

В моем приложении у меня есть функция, в которой мне нужно записать файл внутри папки webcontent, у меня есть папка с именем data, и мне нужно написать новое имя, если я указал реальный путь (C: \ Users \ SanWin \ workspace \ RoleAccessControl \ data \ ActivityLog.txt), он записывает файл, но это должно измениться, когда проект запускается на другом компьютере, поэтому я использовал это, чтобы получить реальный путь

ServletContext ctx = getServletContext();
        String path = ctx.getRealPath("/data/ActivityLog.txt");
        System.out.println(path);

когда я печатаю, я получил следующее сообщение в консоли

C: \ Users \ SanWin \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ RoleAccessControl \ data \ ActivityLog.txt

я не знаю, как система получает эту строку

.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \

это в затмении, я ожидал чего-то вроде C: \ Users \ SanWin \ workspace \ RoleAccessControl \ data \ ActivityLog.txt

как получить реальный путь, я хочу избавиться от строк (.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps), я посмотрел и сделал все возможное, что видел в Интернете, но не смог, извините если я сделал повторяющийся пост, извините, спасибо за ваше время и ответы


person optimus    schedule 31.08.2012    source источник
comment
В общем, вы очень редко хотите писать внутри приложения. Если вы развернетесь на войне, вы не сможете. При повторном развертывании вы можете там все потерять. Это гораздо более чистый и безопасный подход - указать каталог вне каталога развертывания веб-приложения и вместо этого писать туда.   -  person Dave Newton    schedule 01.09.2012


Ответы (1)


В представлении «Серверы» в Eclipse вы можете дважды щелкнуть свой сервер, чтобы открыть экран конфигурации, который позволяет вам установить другой путь развертывания (по крайней мере, в Tomcat). Обратите внимание, что вы можете изменить этот параметр только тогда, когда ничего не развернуто, в противном случае вы увидите, что параметры неактивны.

введите описание изображения здесь

Вы получаете .metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ потому, что у вас есть параметр Использовать метаданные рабочей области.

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

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

Надеюсь это поможет.

person Community    schedule 31.08.2012