Решить проблемы пути в Java Web:
Пути, используемые на Java, разделены на два типа: абсолютные пути и относительные пути. В конечном счете, Java может использовать только абсолютные пути для поиска ресурсов. Все методы поиска ресурсов по относительным путям являются лишь некоторыми удобными методами. Но именно API помогает нам построить абсолютный путь внизу, чтобы найти ресурсы!
При разработке веб -приложений вам часто нужно получить физический путь текущего веб -коррока на сервере.
Если это сервлет, действие, контроллер или фильтр, слушатель, перехватчик и другие связанные классы, нам необходимо только получить ServletContext, а затем использовать ServletContext.getRealPath ("/"), чтобы получить физический адрес текущего приложения на сервере.
Если ServletContext не может быть извлечен в класс, есть два способа сделать это:
1. Используйте механизм загрузки класса Java, чтобы вызвать xxx.class.getClassloader (). GetResource ("" "); Метод для получения класса, а затем обрабатывайте для получения каталога WebRoot. Этот метод может вступить в силу только в рамках WebRoot/Web-Inf/Classes. Если класс упакован в файл JAR, метод будет недействительным. В настоящее время следует использовать следующий метод.
2. Идея пружинной рамки. В Web-inf/web.xml создайте парам webprootkey, укажите значение (по умолчанию webapp.root) в качестве значения ключа, а затем выполнить string webappootkey = getservletcontext (). GetRealpath ("/"); через слушателя, или фильтра, или сервлета. Затем напишите WebApp.Root, соответствующий WebAppootKey в качестве ключа и значения в свойства системы системы. Затем физический путь webroot получается через System.getProperty ("webapp.root") в программе.
Согласно второй идее, мы можем расширить ее дальше. Однако для приложений, развернутых на сервере, если это не ваши потребности, пожалуйста, прочитайте его.
Вот несколько способов получить путь к классу и абсолютный путь к текущему классу. Вы можете использовать некоторые из этих методов, чтобы получить абсолютный путь к необходимым вам ресурсам:
1
Debitnoteaction.class.getresource ("")То, что вы получаете, - это каталог URI текущего класса файла filetest.class. Не включать себя!
нравиться:
Файл:/d:/eclipse/springtest/webroot/web-inf/classes/classe/
atcarnet/src/com/evi/modules/atacarnet/action/
2
DebitNoteAction.class.getResource ("/")То, что вы получаете, является абсолютным путем URI нынешней группы класса.
нравиться:
Файл:/d:/eclipse/springtest/webroot/web-inf/classes/classe/
3
Thread.currentThread (). GetContextClassLoader (). GetResource ("")То, что вы получаете, также абсолютный путь URI нынешней общения класса
нравиться:
Файл:/d:/eclipse/springtest/webroot/web-inf/classes/classe/
4
DebitNoteAction.class.getClassloader (). GetResource ("")или
ClassLoader.getSystemresource ("" ")То, что вы получаете, также является абсолютным путем URI текущей трассы класса.
нравиться:
Файл:/d:/eclipse/springtest/webroot/web-inf/classes/classe/
5. Получить относительный путь сервера
System.getProperty ("user.dir")Например: e: /apache-tomcat-5.5.16/apache-tomcat-5.5.16/bin
Я рекомендую использовать Thread.currentThread (). GetContextClassloader (). GetResource ("" "), чтобы получить нотацию URI абсолютного пути текущей обарки Classpath
6. Получить абсолютный путь в проекте
Обычно используется
request.getRealpath ("/")или
request.getRealpath ("/config/")Но не рекомендуется использовать request.getRealPath ("/"). Вы можете попробовать метод ServletContext.getRealPath ("/"), чтобы получить абсолютный путь к корневому каталогу веб -приложения
Получить файл SRC очень легко, потому что SRC является относительным каталогом по умолчанию. Например, если вы говорите, что хотите получить файл test.java в каталоге COM в рамках SRC, вам нужно только этого, чтобы этого было достаточно.
Файл f = новый файл (com/test.java);
Но если я хочу получить файлы, которых нет в каталоге SRC или каталоге WebRoot, мне нужно получить их с того же уровня SRC или WebRoot, например, DOC
Мой жесткий метод реализован так:
String path = this.getServletContext (). GetRealPath ("/"); Properties p = new Properties (); p.load (new FileInputStream (новый файл (path.substring (0, (path.lastindexof ("// webroot") + 1)) +) +) + "doc/db.properties"))); System.out.println (p.getProperty ("DriverName"));Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!