2014-09-25 4 views
6

का उपयोग करते समय सापेक्ष यूआरएल स्लैश मैं जेएसपी के साथ पथों के बारे में अधिक जानने के तरीके के बारे में अधिक जानने की कोशिश कर रहा हूं।बेस टैग

किसी रिश्तेदार यूआरएल के साथ संयोजन में एचटीएमएल बेस टैग का उपयोग करते समय, क्या स्लैश के साथ बेस href को समाप्त करना बहुत मानक है?

कारण मैं पूछ रहा हूं क्योंकि मुझे अक्सर जेएसपी के भीतर संदर्भ रूट के संदर्भ में चीजों को व्यक्त करने की आवश्यकता होती है (उदाहरण के लिए एक फॉर्म एक्शन के लिए), ताकि फॉर्म मैप किए गए उचित सर्वलेट पर जा सके यह web.xml में है।

अधिकांश समय मैं केवल ${pageContext.request.contextPath} का उपयोग करता हूं, जब तक कि मैं बेस टैग के बारे में नहीं जानता।

हालांकि, मेरा अनुमान है कि कि एक JSP में के बाद से स्लैश वेब अनुप्रयोग की जड़ के रूप में सर्वर से व्याख्या की है, मैं उदाहरण के लिए मेरी आधार हो नहीं हो सकता,:

<base href="/foo"/> 

और तब के रूप में है:

<form action="/extension"> 
... 
</form> 

इस के बाद से कारण होगा प्रपत्र mydomain.com/extension बजाय mydomain.com/foo/extension को प्रस्तुत किया। क्या मैं इसे सही ढंग से समझ रहा हूं, क्योंकि स्लैश का विशेष अर्थ है, वांछित प्रभाव प्राप्त करने के लिए आपको आम तौर पर आधार एचआरईएफ को बैकस्लैश के साथ समाप्त करने की आवश्यकता होती है?

धन्यवाद

उत्तर

7

वास्तव में नहीं।

ब्राउज़र केवल आपके आधार href विशेषताएँ और सापेक्ष URL को संयोजित नहीं करते हैं। इसके बजाय, <base> टैग दस्तावेज़ आधार URL सेट करता है जिसका उपयोग तब गतिशील रूप से एक नया पथ उत्पन्न करने के लिए किया जाता है।

आप WHATWG HTML विनिर्देश में एक दिलचस्प उदाहरण देख सकते हैं:

<base href="http://www.example.com/news/index.html"> 
<p>Visit the <a href="archives.html">archives</a>.</p> 

ध्यान दें कि href विशेषता भी एक फ़ाइल नाम के साथ समाप्त होता है।

इसका मतलब है कि यदि आप अपने बेस href विशेषता में पीछे पीछे स्लैश नहीं डालते हैं, तो foo को पथ के अंतिम, अस्थिर हिस्से के रूप में माना जाएगा और अनिवार्य रूप से हटा दिया जाएगा। उदाहरण के द्वारा:

<base href="http://www.example.com/news/index.html" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png --> 

<base href="http://www.example.com/news/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png --> 

<base href="http://www.example.com/news" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 

<base href="http://www.example.com/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 

<!-- If served from http://www.example.com: --> 
<base href="/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 
+0

लेकिन उदाहरण http के लिए ले नहीं होगा: // www। उदाहरण। com/news/index.html/archives.html? – user1154644

+0

वह मुद्दा है, यह नहीं होगा। यह आपको 'example.com/news/archives.html' पर ले जाएगा। – Denis

+0

मैं देखता हूं। तो इसका उपयोग करने के इरादे का लाभ या संचार क्या होगा: ऐसा लगता है कि उत्तरार्द्ध अधिक स्पष्ट है – user1154644