Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к ПР2 (Repaired).docx
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
389.7 Кб
Скачать

5.2. Абсолютные и относительные пути

Пути к файлу могут быть абсолютными и относительными. Абсолютный путь описывает местоположение файла (папки), начиная с самого высокого уровня, и включает имена всех папок в иерархии их вложенности, ведущих к файлу (папке). На самом высоком уровне иерархи находится корневая папка сайта на Web-сервере. Ее имя обычно не указывается в URL.

Например, в URL http://anyserver.ru/mypage.htm указано, что файл mypage.htm находится в корневой папке сервера с доменным именем anyserver.ru, а в URL http://anyserver.ru/docs/mypage.htm указано, что файл mypage.htm на­ходится в папке docs, которая расположена в корневой папке сервера. Ошибка в записи абсолютного пути (адреса) приводит к тому, что нужный файл не будет найден.

Относительный путь (адрес) описывает местоположение файла относительно места расположения текущего документа, в котором инициализируется ссылка с данным адресом. Так, если вы указываете просто имя файла myfile.htm без пути к нему, это означает, что задается относительный адрес. В данном случае браузер будет искать его в той же папке, где находится текущий документ. Если перед име­нем файла поставить ../ (например, ../myflie.htm), то браузер будет искать файл в папке, находящейся на один уровень выше, чем тот, в котором находится теку­щий документ. Аналогично, если перед именем файла поставить ../../ (напри­мер, ../../myfile.htm), то браузер будет искать файл в папке на два уровня выше, чем текущий.

Допустим, в корневой папке вашего сайта на сервере находятся папки images и docs для хранения файлов соответственно графических изображений и (X)HTML-документов. Тогда относительный адрес ссылки из любого файла в папке docs на изображение в файле, например, imgl.jpg записывается так: ..//images/img1. jpg. В то же время адрес ссылки на это же изображение, но из файла в корневой папке, имеет такой вид: images/imgl.jpg.

5.3. Кодирование url

Если URL-адрес состоит из обычных латинских букв (английского алфавита), символа подчеркивания и цифр, а в его компонентах отсутствуют пробелы и спе­циальные символы синтаксиса (:, /, @, ? и #), то никаких проблем не возникает. Небольшие хлопоты появляются при наличии в компонентах URL пробелов, ки­риллицы, иероглифов и других специфических символов, а также некоторых зна­ков препинания. Например, кириллица и знаки препинания могут понадобиться в компонентах URL, представляющих передаваемые данные и якорь внутренней ссылки. В таких случаях необходимо кодировать URL, т. е. заменять недопустимые символы кодами.

При непосредственном написании элементов URL-адреса используется ограни­ченное подмножество символов из базового набора ASCII (коды от 0 до 127): ла­тинские буквы, цифры и некоторые знаки препинания. При необходимости употре­бить недопустимые символы из базового набора, а также ASCII-символы с кодами от 128 до 255 (например, буквы кириллицы, пробелы и др.) применяют специаль­ное кодирование двумя шестнадцатеричными цифрами, перед которыми указывают символ %, т. е. в виде %хх.

Вот несколько примеров:

%20 - символ пробела;

%3F - ? (знак вопроса);

%21- ! (восклицательный знак);

%26 - & (амперсанд);

%40- @ ("собака");

%E0 - буква а (кириллица);

%e1- буква б (кириллица).

Например, строка "Documents and Settings" с двумя недопустимыми символами про­бела в кодированном виде будет выглядеть как Documents%20and%20settings.

Если требуются символы, выходящие за рамки набора ASCII, то их представля­ют в виде %uхххх, где хххх - четырехзначный шестнадцатеричный код в системе Unicode, или же в виде двух кодов %хх. Например, слово "Привет" в указанных двух кодировках будет выглядеть так:

%u041F%u0440%u0438%u0432%u0435%u0442

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82

Для кодирования URL-адреса следует обратиться к справочнику. Вместе с тем кодирование можно выполнить и с помощью специаль­ных методов (встроенных функций) JavaScript: escape(), encodeUri() или encodeUriComponent(). Пере­численные методы в качестве па­раметра (значения, указанного в круглых скобках) принимают строку, а возвращают ее кодиро­ванное значение. Однако выпол­няют это они по-разному.

На рисунке показано их применение к строке

http://Moй сервер/ mypage.htn#Глава 1

в которой недопустимыми явля­ются символы пробела и кирил­лицы. Скрипт в (Х)НТМL-документе выводит в окно браузера исходную строку и результаты ее кодирования различными мето­дами.

В примере только применение метода encodeUri() дало результат, пригодный для представления URL. Другие методы закодировали символы, разделяющие компоненты URL (:, / и #), и тем са­мым сделали всю строку непригодной для подачи запроса на сервер.