Hãy chia nhỏ URL đầy đủ mà khách hàng sẽ nhập vào thanh địa chỉ của họ để truy cập servlet của bạn:
http://www.example.com:80/awgie-application/path/to/servlet/path/info?a=1&b=2#boo
Các phần là:
- kế hoạch:
http
- tên máy chủ:
www.example.com
- Hải cảng:
80
- đường dẫn ngữ cảnh:
awesome-application
- đường dẫn của servlet:
path/to/servlet
- thông tin đường dẫn:
path/info
- truy vấn:
a=1&b=2
- miếng:
boo
URI yêu cầu (được trả về bởi getRequestURI ) tương ứng với các phần 4, 5 và 6.
(tình cờ, mặc dù bạn không yêu cầu điều này, phương thức getRequestURL sẽ cung cấp cho bạn các phần 1, 2, 3, 4, 5 và 6).
Hiện nay:
- phần 4 (đường dẫn ngữ cảnh) được sử dụng để chọn ứng dụng cụ thể của bạn trong số nhiều ứng dụng khác có thể đang chạy trên máy chủ
- phần 5 (đường dẫn servlet) được sử dụng để chọn một servlet cụ thể trong số nhiều servlet khác có thể được gói trong WAR của ứng dụng của bạn
- phần 6 (thông tin đường dẫn) được diễn giải bằng logic của servlet của bạn (ví dụ: nó có thể trỏ đến một số tài nguyên được điều khiển bởi servlet của bạn).
- phần 7 (truy vấn) cũng được cung cấp cho servlet của bạn bằng cách sử dụng getQueryString
- phần 8 (đoạn) thậm chí không được gửi đến máy chủ và chỉ liên quan và chỉ được biết đến với máy khách
Phần sau luôn giữ (ngoại trừ sự khác biệt về mã hóa URL):
requestURI = contextPath + servletPath + pathInfo
Ví dụ sau từ đặc tả Servlet 3.0 rất hữu ích:
Lưu ý: hình ảnh theo sau, tôi không có thời gian để tạo lại trong HTML: