Java (JSP) относительный путь к проекту

1

Я ищу что-то вроде request.getServletContext().getRealPath() для использования внутри настраиваемого класса (перехватчик в Hibernate, который не имеет доступа к объекту request).

File file = new File("/photo/test.txt");
file.delete();

... выше код не будет работать, потому что путь к file - это /lib каталог Tomcat.

Но мне нужно начать отсчет с проекта, а не с Tomcat.

Есть идеи?

  • 1
    /photos будут из корня файловой системы, что вы подразумеваете под счетом из проекта
  • 0
    Я имею в виду, чтобы сделать путь относительно корня моего сайта, JSP проекта в этом случае
Показать ещё 5 комментариев
Теги:
jsp
hibernate
tomcat
path

2 ответа

1
Лучший ответ

ИМХО - самый простой способ для вас - получить корень вашего приложения в ServletContextListener объявленный в web.xml или через аннотацию WebListener и сохранить его в статической переменной.

public class RootPathHolder implements ServletContextListener {
    static String rootPath;

    public void contextInitialized(ServletContextEvent sce) {
        RootServletListener.rootPath = sce.getServletContext().getRealPath("/");
    }

    public void contextDestroyed(ServletContextEvent sce) {
    }

    public static String getRootPath() {
        return rootPath;
    }
}

Таким образом, у вас будет доступ к корневому пути вашего приложения из любого места как RootPathHolder.getRootPath() и в вашем перехватчике вам нужно будет только выполнить конкатенацию пути:

Path realPath = Paths.get(RootPathHolder.getRootPath(), "photo/test.txt");
  • 0
    именно это. Спасибо!
2

getRealPath вернет путь от корня и дальше.

Вместо этого вы должны использовать контекстный путь.

Взгляните на эту тему

попробуй использовать

request.getServletContext().getContextPath();
  • 0
    Пожалуйста, отредактируйте ваш вопрос, чтобы в вашем ответе были полезные части других вопросов и ответов (это не ветка на этом сайте). Ссылка только ответы здесь не принимаются.
  • 0
    Они на самом деле связаны с той же проблемой. Есть ли конкретный способ связать темы стека с ответами? Я редактирую это.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню