java - ServletFilter - changing URL does not work -
मेरे पास एक GWT एप्लिकेशन है जो यूआरएल ... / Organizer.html
है। मैं इसे url ... / organizer
से भी एक्सेस करना चाहता हूं। इसलिए मैंने मूल एचटीटीपीएसर्वेटर्यूयेस्ट
को ओवरराइड के साथ आवरण के साथ बदलने का निर्णय लिया getRequestURL ()
और getRequestURI ()
एक सबलेट फिल्टर में तरीकों।
फ़िल्टर कोड:
स्ट्रिंग [] urlSplit = req.getRequestURL ()। ToString ()। विभाजन ("/"); स्ट्रिंग urlEnd = urlSplit [urlSplit.length -1]; अगर (urlEnd.equals (ORGANIZER_URL_ALTERNATIVE)) {स्ट्रिंग newUrl = req.getRequestURL ()। ToString () (ORGANIZER_URL_ALTERNATIVE, ORGANIZER_URL) की जगह; स्ट्रिंग newUri = req.getRequestURI ()। ToString ()। (ORGANIZER_URL_ALTERNATIVE, ORGANIZER_URL) की जगह; अनुरोध = नया ChangeUrlRequest (req, newUrl, newUri); } // बस यह जांचने के लिए कि क्या यह req = (HttpServletRequest) अनुरोध करता है; Println (req.getRequestURL ()); Println (req.getRequestURI ()); Chain.doFilter (अनुरोध, प्रतिक्रिया);
अनुरोध आवरण:
<पूर्व> वर्ग ChangeUrlRequest HttpServletRequestWrapper का विस्तार करता है {निजी StringBuffer newUrlBuffer; निजी स्ट्रिंग न्यूयूरी; सार्वजनिक ChangeUrlRequest (HttpServletRequest अनुरोध, स्ट्रिंग newUrl, स्ट्रिंग newUri) {सुपर (अनुरोध); NewUrlBuffer = नया स्ट्रिंगबफर (newUrl); This.newUri = newUri; } @ ओवरराइड सार्वजनिक स्ट्रिंगबफ़र getRequestURL () {newUrlBuffer लौटें; } @ ओवरराइड सार्वजनिक स्ट्रिंग getRequestURI () {newUri; }}
इस तरह से काम करता है जैसे कि मैं समस्या यह है कि यहां तक कि यूआरएल / यूआरआई एक ही है, चाहे मैं एक्सेस करता हूं ... / आयोजक या ... / ब्राउज़र से ऑर्गनाइज़र ... केवल ... / ऑर्गनाइज़र.html काम करता है और ... / आयोजक टोमेट शिकायत करता है कि उसे पृष्ठ नहीं मिल सकता है: HTTP स्थिति 404 - /my-page/Organizer.html का आउटपुट साथ Organizer.html (काम करता है): URL: आयोजक के साथ (उल्लेखित 404 ऊपर देता है): URL: क्या मुझे कुछ और ओवरराइड या बदलने की आवश्यकता है? ... / organizer
का उपयोग कर सकता हूं और ... / Organizer.html < / कोड>
system.out
उपरोक्त कोड से: http: // localhost: 8080 / मेरे पृष्ठ / ऑर्गनाइज़र.html
यूआरआई: /my-page/Organizer.html
http: // localhost: 8080 / my-page / Organizer.html
यूआरआई: /my-page/Organizer.html
यदि लक्ष्य है तक पहुंचने में सक्षम हो या तो यूआरएल के द्वारा ऐप, शायद एक सरल समाधान है आप ध्यान दें कि आपको / आयोजक
पर एक सर्वलेट सुलभ लिख सकते हैं और HTML पृष्ठ पर अनुरोध को अग्रेषित कर सकते हैं, उदा: / आयोजक
और /Organizer.html
के लिए पथ को संशोधित करने की आवश्यकता हो सकती है अगर वे आपके आवेदन की जड़।
Comments
Post a Comment