2011-05-24 15 views
6

मुझे पता है तुम मुझे यह थोड़ा कठिन हर त्रुटि कोड के लिए एक पृष्ठ सूची को खोजनेएक सामान्य तंत्र HTTP स्थिति कोड से निपटने के लिए

<error-page> 
    <error-code>404</error-code> 
    <location>/404.html</location> 
</error-page> 

नीचे के रूप में web.xml में त्रुटि पृष्ठों निर्दिष्ट कर सकते हैं। मैं सोच रहा था कि इस स्थिति में सबसे अच्छा आम अभ्यास क्या होगा! क्या इन पृष्ठों को स्वचालित रूप से जेएसपी या सर्वलेट या स्प्रिंग या स्ट्रिप्स के माध्यम से उत्पन्न करने का एक बेहतर तरीका है?

उत्तर

0

स्ट्रिप अपवादों को संभालने के लिए कुछ विस्तारनीय लेकिन सरल तरीके प्रदान करता है। इसके बारे में Stripes book में एक अच्छा लेखन on the stripes website और कुछ पेज हैं।

आप अनिवार्य रूप से या तो ExceptionHandler इंटरफ़ेस को लागू होगा, DefaultExceptionHandler से विस्तार (क्या हम आम तौर किया है), या DelegatingExceptionHandler अधिक उन्नत परिस्थितियों के लिए नहीं है।

+0

यह केवल HTTP 500 त्रुटि को कवर करता है। अन्य 5 एनएन और सभी 4 एनएन त्रुटियां प्रति अपवादों के कारण नहीं होती हैं। – BalusC

+0

मैंने सोचा कि यह प्रासंगिक था, क्योंकि ओपी ने 404 के अलावा त्रुटि कोड के बारे में पूछा था। इसमें वास्तव में 404 एस शामिल होंगे क्योंकि स्ट्रिप्स इंटरसेप्टर अधिकांश यूआरएल को बांधने का प्रयास करता है और यदि कोई एक्शन बीन, जेएसपी या स्थिर संसाधन नहीं है तो यह 404 फेंकता है मिल गया। – lucas

2

यदि आप पृष्ठ की पीढ़ी के बारे में बात कर रहे हैं, तो आप एक जेएसपी पेज पर एक त्रुटि कोड मैप कर सकते हैं, उदा।

<error-page> 
    <error-code>404</error-code> 
    <location>/errors.jsp</location> 
</error-page> 
<error-page> 
    <error-code>500</error-code> 
    <location>/errors.jsp</location> 
</error-page> 

आप मानचित्रण ही है, एक संभव समाधान सभी त्रुटि कोड की मैपिंग से बचने के लिए (हालांकि मैं मानक web.xml मानचित्रण का उपयोग करने की सलाह देते हैं कि) एक सर्वलेट फिल्टर का उपयोग करने के लिए है के बारे में बात कर रहे हैं जो सभी संसाधनों को फ़िल्टर करता है, फ़िल्टरChain तक पहुंच का प्रतिनिधि करता है और प्रतिक्रिया कोड सेट करता है यदि यह 200 नहीं है (या कोई अन्य पूर्वनिर्धारित स्वीकार्य प्रतिसाद जैसे कि 401) और त्रुटियों .jsp पृष्ठ पर रीडायरेक्ट करने से।

प्रतिक्रिया कोड को कैप्चर करने के लिए आप HttpServletResponse को HttpServletResponseWrapper कार्यान्वयन के साथ लपेटेंगे जो प्रतिक्रिया कोड सेट को सहेजता है।

+0

प्रतिक्रिया के स्थिति कोड तक पहुंचने के लिए, मैं http://stackoverflow.com/questions/1302072/how-can-i-get-the-http-status-code-out-of-a-servletresponse-in- ए-सर्वलेटफिल्टर (यह वही है जो आपने सुझाया था, लेकिन एक विस्तृत कार्यान्वयन के साथ)। –

+0

@eneveu, बिल्कुल – Asaf

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