มาแบ่ง URL ทั้งหมดที่ลูกค้าจะพิมพ์ลงในแถบที่อยู่เพื่อเข้าถึง servlet ของคุณ:
http://www.example.com:80/awesome-application/path/to/servlet/path/info?a=1&b=2#boo
ชิ้นส่วนคือ:
- โครงการ:
http
- ชื่อโฮสต์:
www.example.com
- ท่าเรือ:
80
- เส้นทางบริบท:
awesome-application
- เส้นทาง servlet:
path/to/servlet
- ข้อมูลเส้นทาง:
path/info
- แบบสอบถาม:
a=1&b=2
- ชิ้นส่วน:
boo
URI คำขอ (ส่งคืนโดยgetRequestURI ) สอดคล้องกับส่วนที่ 4, 5 และ 6
(บังเอิญแม้ว่าคุณจะไม่ได้ขอสิ่งนี้ แต่วิธีที่getRequestURLจะให้ส่วนที่ 1, 2, 3, 4, 5 และ 6)
ขณะนี้:
- ส่วนที่ 4 (เส้นทางบริบท) ใช้เพื่อเลือกแอปพลิเคชันเฉพาะของคุณจากแอปพลิเคชั่นอื่น ๆ อีกมากมายที่อาจทำงานอยู่ในเซิร์ฟเวอร์
- ส่วนที่ 5 (เส้นทาง servlet) ใช้เพื่อเลือก servlet เฉพาะจาก servlet อื่น ๆ ที่อาจรวมอยู่ใน WAR ของแอปพลิเคชันของคุณ
- ส่วนที่ 6 (ข้อมูลเส้นทาง) ถูกตีความโดยตรรกะของ servlet ของคุณ (เช่นอาจชี้ไปที่ทรัพยากรที่ควบคุมโดยเซิร์ฟเล็ตของคุณ)
- ตอนที่ 7 (เคียวรี) ทำให้ servlet ของคุณพร้อมใช้งานโดยใช้getQueryString
- ตอนที่ 8 (แฟรกเมนต์) ไม่ได้ถูกส่งไปยังเซิร์ฟเวอร์และมีความเกี่ยวข้องและรู้จักกับลูกค้าเท่านั้น
ต่อไปนี้จะเก็บไว้เสมอ (ยกเว้นความแตกต่างในการเข้ารหัส URL):
requestURI = contextPath + servletPath + pathInfo
ตัวอย่างต่อไปนี้จากข้อมูลจำเพาะของServlet 3.0มีประโยชน์มาก:
หมายเหตุ:ภาพดังต่อไปนี้ฉันไม่มีเวลาที่จะสร้างใน HTML: