2013-03-10 10 views
6

पर रीडायरेक्ट नहीं करता है मेरे पास doFilter() विधि में निम्न कोड है, जहां मुझे एप्लिकेशन स्कॉप्ड बीन मिलता है।HttpServletResponse.sendError() त्रुटि पृष्ठ

if (request.getServletContext().getAttribute("resource")==null) { 
     response.sendError(503); 
     return; 
    } 

मैंने web.xml में विशिष्ट त्रुटि पृष्ठ पर 503 कोड मैप किया। और त्रुटि होने पर मुझे वास्तव में ब्राउज़र में त्रुटि पृष्ठ की सामग्री मिलती है। लेकिन पता बार में पता त्रुटि पृष्ठ पते के लिए नहीं बदला जाता है: अनुरोधित सर्वलेट का पता वहां छोड़ देता है। क्या यह सही व्यवहार है? मैं स्पष्ट रूप से त्रुटि पृष्ठ पर पुनर्निर्देशन के बारे में सूचित करना चाहता हूं। क्या यह केवल SendRedirect() के साथ संभव है?

+2

आप यूआरएल क्यों बदलना चाहते हैं? आप अपने त्रुटि पृष्ठों को सार्वजनिक रूप से सुलभ क्यों करना चाहते हैं? कैननिकल दृष्टिकोण उन्हें '/ WEB-INF' फ़ोल्डर में रखना है और कंटेनर को इसके आगे आगे बढ़ाना है। रीडायरेक्टिंग केवल स्टेटस कोड को पूरी तरह से तोड़ देगा और 3 एनएन/2 एनएन लौटकर हो रहा है कि ब्राउजर और सर्चबॉट्स को गुमराह कर देगा। बस ** नहीं ** त्रुटि पृष्ठ पर रीडायरेक्ट करें! – BalusC

उत्तर

3

यह सही व्यवहार है। जब आप sendError() का उपयोग करते हैं तो यह एक त्रुटि पृष्ठ के साथ वर्तमान अनुरोध का जवाब देगा। यदि आप चाहते हैं कि यूआरएल त्रुटि पेज यूआरएल में बदल जाए, तो आपको रीडायरेक्ट के जवाब देने के लिए sendRedirect() का उपयोग करना होगा।

संबंधित मुद्दे