Friday 15 May 2015

java - servlet filter to rewrite URL -


मैं एक यूआरएल को फिर से लिखना चाहता हूं:

  • 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