#tomcat #path #relative-path
Вопрос:
В чем разница между абсолютным путем и относительным путем при использовании любого веб-сервера или Tomcat?
Ответ №1:
Абсолютные пути начинаются с / и ссылаются на местоположение из корня текущего сайта (или виртуального хоста).
Относительные пути не начинаются с / и ссылаются на местоположение из фактического местоположения документа, на который сделана ссылка.
Примеры, предполагая, что корень http://foo.com/site/
Абсолютный путь, независимо от того, где мы находимся на сайте
/foo.html
будет ссылаться на http://foo.com/site/foo.html
Относительный путь, предполагая, что содержащая ссылка расположена в http://foo.com/site/part1/bar.html
../part2/quux.html
будет ссылаться на http://foo.com/site/part2/quux.html
или
part2/blue.html
будет ссылаться на http://foo.com/site/part1/part2/blue.html
Ответ №2:
Важно отметить, что относительные пути также субъективны.
т.е.:
<?php
#bar.php
require('../foo.php');
?>
/dir/bar.php /foo.php # печатает /dir/foo.php # печатает b /реж./другое/ # пустой реж.
$ pwd > / $ php dir/bar.php > / ../foo.php == /foo.php > печатает $ cd реж. $ php bar.php > /реж. ../foo.php = /foo.php > печать $ cd другое $ php ../bar.php > /реж./другое ../foo.php = /dir/foo.php > печать b
Это может создать некоторые довольно запутанные ситуации, особенно если у вас много файлов с релевантными ссылками и несколькими возможными местами, которые могут выступать в качестве «точки входа», определяющей относительный путь относительно.
В таких ситуациях следует вычислять абсолютный путь вручную на основе фиксированного известного, т. е.:
<?php
require( realpath(dirname(__FILE__) . '/../foo.php') )
или
<?php
require( SOMECONSTANT . '/relative/path.php' );
или
<?php
require( $_SERVER['DOCUMENT_ROOT'] . '/relative/path.php' );
Ответ №3:
Методом проб и ошибок я определил, что отправной точкой пути в Tomcat является папка webapps.
Другими словами, если ваш Java-код пытается прочитать ../somefile.txt тогда абсолютный путь к этому файлу будет %TOMCAT_HOME%/webapps/../somefile.txt т. е. %TOMCAT_HOME%/webapps/somefile.txt