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; }}

इस तरह से काम करता है जैसे कि मैं ... / organizer का उपयोग कर सकता हूं और ... / Organizer.html < / कोड>

समस्या यह है कि यहां तक ​​कि यूआरएल / यूआरआई एक ही है, चाहे मैं एक्सेस करता हूं ... / आयोजक या ... / ब्राउज़र से ऑर्गनाइज़र ... केवल ... / ऑर्गनाइज़र.html काम करता है और ... / आयोजक टोमेट शिकायत करता है कि उसे पृष्ठ नहीं मिल सकता है: HTTP स्थिति 404 - /my-page/Organizer.html

का आउटपुट system.out उपरोक्त कोड से:

साथ Organizer.html (काम करता है):

URL: http: // localhost: 8080 / मेरे पृष्ठ / ऑर्गनाइज़र.html
यूआरआई: /my-page/Organizer.html

आयोजक के साथ (उल्लेखित 404 ऊपर देता है):

URL: http: // localhost: 8080 / my-page / Organizer.html
यूआरआई: /my-page/Organizer.html

क्या मुझे कुछ और ओवरराइड या बदलने की आवश्यकता है?

यदि लक्ष्य है तक पहुंचने में सक्षम हो या तो यूआरएल के द्वारा ऐप, शायद एक सरल समाधान है आप / आयोजक पर एक सर्वलेट सुलभ लिख सकते हैं और HTML पृष्ठ पर अनुरोध को अग्रेषित कर सकते हैं, उदा:

ध्यान दें कि आपको / आयोजक और /Organizer.html के लिए पथ को संशोधित करने की आवश्यकता हो सकती है अगर वे आपके आवेदन की जड़।


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -