Абсолютный путь и Относительный путь

#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