2011-08-15 13 views
110

मैं <error-page> में तत्व web.xml उपयोग कर रहा हूँ अनुकूल त्रुटि पृष्ठ निर्दिष्ट करने के लिए इस तरह के 404 के कोड के साथ त्रुटि के रूप में जब उपयोगकर्ता एक निश्चित त्रुटि का सामना करना पड़ता: web.xml में डिफ़ॉल्ट त्रुटि पृष्ठ को कैसे निर्दिष्ट करें?

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

हालांकि, मैं चाहता हूँ कि उपयोगकर्ता करता है, तो <error-page> में निर्दिष्ट किसी त्रुटि कोड को पूरा नहीं करें, उसे एक डिफ़ॉल्ट त्रुटि पृष्ठ देखना चाहिए। web.xml में तत्व का उपयोग करके मैं यह कैसे कर सकता हूं?

+2

क्या servletcontainer प्रयोग कर रहे हैं/लक्षित करते हैं और क्या सर्वलेट संस्करण है आपका 'web.xml' घोषित किया गया है? सर्वलेट 3.0 के बाद से एक आसान तरीका है। – BalusC

+0

मैं टॉमकैट 6, सर्वलेट 2.5 – ipkiss

उत्तर

201

सर्वलेट 3.0 या नए पर आप सिर्फ

<web-app ...> 
    <error-page> 
     <location>/general-error.html</location> 
    </error-page> 
</web-app> 

निर्दिष्ट कर सकते हैं लेकिन आप सर्वलेट 2.5 पर हों, वहाँ व्यक्तिगत रूप से हर आम HTTP त्रुटि निर्दिष्ट करने के अलावा कोई अन्य रास्ता नहीं है। आपको यह समझने की ज़रूरत है कि कौन सी HTTP त्रुटियां अंततः संभवतः सामना कर सकती हैं। उदाहरण के लिए एक नंगेबोन वेबैप पर, HTTP प्रमाणीकरण का उपयोग, एक कस्टम निर्देशिका सूची है, जिसमें कस्टम सर्लेट और कोड का उपयोग किया जा सकता है जो संभवतः अनचाहे अपवादों को फेंक सकता है या सभी विधियों को लागू नहीं किया जा सकता है, तो आप इसे HTTP त्रुटियों के लिए सेट करना चाहते हैं 401 क्रमश: 403, 500 और 503।

<error-page> 
    <!-- Missing login --> 
    <error-code>401</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Forbidden directory listing --> 
    <error-code>403</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Missing resource --> 
    <error-code>404</error-code> 
    <location>/Error404.html</location> 
</error-page> 
<error-page> 
    <!-- Uncaught exception --> 
    <error-code>500</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Unsupported servlet method --> 
    <error-code>503</error-code> 
    <location>/general-error.html</location> 
</error-page> 

इसमें सबसे आम लोगों को शामिल करना चाहिए।

+0

का उपयोग कर रहा हूं क्या आप एक सामान्य त्रुटि पृष्ठ निर्दिष्ट कर सकते हैं और फिर '' टैग के साथ कुछ त्रुटि कोड ओवरराइड कर सकते हैं? – Qix

+6

@ टॉमस: टॉमकैट लोगों को आपके जैसा ही समस्या थी। यह कहीं भी शाब्दिक रूप से वर्णित नहीं है, केवल spec में 14-10 चित्र और 'web.xml' XSD फ़ाइल साबित करता है कि '' और '<अपवाद-प्रकार>' आवश्यकतानुसार वैकल्पिक हो गया। देखें [अंक 52135] (https://issues.apache.org/bugzilla/show_bug.cgi?id=52135)। – BalusC

+0

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd तत्व के लिए बच्चे को निर्दिष्ट करता है, इसलिए उपरोक्त कोड चिपकाना एक Servlet 2.5 web.xml में है XSD सत्यापन का कारण बनता है त्रुटियों। अगर मैं उन्हें टिप्पणी करता हूं, हालांकि, यह ठीक काम करता है, धन्यवाद! –

15

तुम भी ऐसा ही कुछ कर सकते हैं:

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

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

त्रुटि कोड 403 के लिए यह पेज 403.html वापस आ जाएगी, और किसी भी अन्य त्रुटि कोड के लिए यह पेज error.html वापस आ जाएगी।

0

तुम भी <exception-type> का उपयोग करके अपवादों के लिए <error-page> निर्दिष्ट कर सकते हैं, नीचे दिए गए उदाहरण के लिए:

<error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>/errorpages/exception.html</location> 
</error-page> 

या <error-code> का उपयोग कर एक त्रुटि कोड के नक्शे:

<error-page> 
    <error-code>404</error-code> 
    <location>/errorpages/404error.html</location> 
</error-page> 
+0

मुझे वोट के लिए कोई कारण नहीं दिख रहा है। –

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