मैं एक यूआरएल को फिर से लिखना चाहता हूं:
-
localhost: 8080 / Sendmail / newEmail.pdf? Request_id = 23456 और ईमेल पता =
प्रति:
-
लोकलहोस्ट: 8080 / sendEmail / newEmail Pdf? Request_id = 23456
फ़िल्टर कोड और मैपिंग नीचे है मैं यह कार्य कैसे पूरा कर सकता हूं? (एक उदाहरण के साथ एक उत्तर अत्यधिक सराहा जाएगा)।
फ़िल्टर मानचित्रण:
& lt; फिल्टर & gt; & LT; फिल्टर-नाम & gt; RequestFilter & lt; / फिल्टर-नाम & gt; & LT; फिल्टर श्रेणी & gt; com.abc.ms.email.filter.RequestFilter & lt; / फिल्टर श्रेणी & gt; & Lt; / फ़िल्टर & gt; & LT; फिल्टर-मैपिंग & gt; & LT; फिल्टर-नाम & gt; RequestFilter & lt; / फिल्टर-नाम & gt; & LT; यूआरएल पैटर्न & gt; / * & lt; / यूआरएल पैटर्न & gt; & LT; डिस्पैचर & gt; अनुरोध & lt; / डिस्पैचर & gt; & LT; डिस्पैचर & gt; आगे & lt; / डिस्पैचर & gt; & Lt; / फिल्टर-मैपिंग & gt;
फ़िल्टर कोड:
सार्वजनिक वर्ग अनुरोधफिल्टर फ़िल्टर लागू करता है {निजी स्थिर अंतिम पैटर्न REWRITE_PATTERN = Pattern.compile ("(^ [1-9] \\ d *) $ "); सार्वजनिक शून्य doFilter (ServletRequest अनुरोध, ServletResponse रेस, FilterChain एफसी) IOException, ServletException {HttpServletRequestWrapper आवरण = नए HttpServletRequestWrapper ((HttpServletRequest) अनुरोध) फेंकता है; स्ट्रिंग url = wrapper.getRequestURL ()। ToString (); स्ट्रिंग संख्या = url.substring (url.lastIndexOf ("/")। प्रतिस्थापित करें ("/", ""); Matcher एम = REWRITE_PATTERN.matcher (संख्या); अगर (m.find ()) {RequestDispatcher dispatcher = wrapper.getRequestDispatcher ("request? Id =" + m.group (1)); डिस्पैचर। फोर्वर्ड (रीक, रिज़); } Else {fc.doFilter (wrapper, res); }}}}
मैं एक मौजूदा कार्यान्वयन का उपयोग करने की सिफारिश करता हूं । खुद
हो रहा है एक जावा यूआरएल पुनर्लेखन कार्यान्वयन, जो Tuckey के URLrewriteFilter है
देखें:।
यह चाहिए
वैकल्पिक रूप से, यदि आप अपने वेब कंटेनर के सामने अपाचे का उपयोग करते हैं, तो आप
mod_rewrite पर विचार करना चाहें, जो उसी पर करता है अपाचे।
-
No comments:
Post a Comment