Давайте розбимо повну URL-адресу, яку клієнт введе у свій адресний рядок, щоб досягти вашого сервлета:
http://www.example.com:80/awesome-application/path/to/servlet/path/info?a=1&b=2#boo
Частини:
- схема:
http
- ім'я хоста:
www.example.com
- порт:
80
- контекстний шлях:
awesome-application
- сервлет шлях:
path/to/servlet
- інформація про шлях:
path/info
- запит:
a=1&b=2
- фрагмент:
boo
URI запиту (повертається getRequestURI ) відповідає частинам 4, 5 та 6.
(до речі, навіть якщо ви цього не просите, метод getRequestURL надасть вам частини 1, 2, 3, 4, 5 і 6).
Зараз:
- частина 4 (контекстний шлях) використовується для вибору конкретної програми з багатьох інших програм, які можуть працювати на сервері
- частина 5 (шлях сервлетів) використовується для вибору конкретного сервлета з багатьох інших сервлетів, які можуть бути в комплекті у ВІЙНІ вашої програми
- частина 6 (інформація про шлях) інтерпретується логікою вашого сервлета (наприклад, це може вказувати на деякий ресурс, керований вашим сервлетом).
- Частина 7 (запит) також доступна для вашого сервлету за допомогою getQueryString
- частина 8 (фрагмент) навіть не надсилається на сервер і є актуальною і відомою лише клієнту
Застосовується наступне (за винятком відмінностей кодування URL):
requestURI = contextPath + servletPath + pathInfo
Наступний приклад із специфікації Servlet 3.0 є дуже корисним:
Примітка: зображення випливає, я не маю часу відтворити в HTML: