Web.xml में डिफ़ॉल्ट त्रुटि पृष्ठ कैसे निर्दिष्ट करें?


138

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

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

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


2
आप किस सर्वलेटकॉनर का उपयोग कर रहे हैं / लक्षित कर रहे हैं और आपके लिए कौन सा सर्वलेट संस्करण web.xmlघोषित किया गया है? केवल सर्वलेट 3.0 एक आसान तरीका है।
BalusC

मैं बिलाव 6, सर्वलेट 2.5 उपयोग कर रहा हूँ
इप्किस

जवाबों:


240

सर्वलेट 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>

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


क्या आप एक सामान्य त्रुटि पृष्ठ निर्दिष्ट कर सकते हैं और फिर <error-code>टैग के साथ कुछ त्रुटि कोड को ओवरराइड कर सकते हैं ?
Qix - मोनिका

6
@ टोमास: टोमाटस वालों को आपकी तरह ही समस्या थी। यह कहीं भी शाब्दिक रूप से उल्लेख नहीं किया गया है, केवल कल्पना में 14-10 का आंकड़ा है और web.xmlXSD फ़ाइल साबित होता है <error-code>और <exception-type>आवश्यक के बजाय वैकल्पिक हो गया है। देखें मुद्दा 52,135
बालुस

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

1
@BalusC: WEB-INF के अंदर सामान्य-त्रुटि पृष्ठ (आपके उत्तर में उल्लिखित) पृष्ठ कहां रखा जाना चाहिए? मेरे पास एक अजीब समस्या है जिसमें सर्वलेट 2.5 है जिसमें HTTP एरर 403 के लिए, मैंने एक <एरर-पेज> डेफिनिशन बनाया है और error403.jsp पेज WEB-INF के अंदर बैठता है और इस वजह से error403.jsp पेज लोड होता है: संसाधनों का उपयोग करने की कोशिश की जाती है, लेकिन चित्रों और त्रुटि के भीतर css.jsp लोड नहीं होते हैं जिससे पृष्ठ गलत दिखता है।
Jayy

@ काइपा: सीएसएस / जेएस / छवि संसाधनों के लिए वेबकंट-रिलेटेड पथों के बजाय केवल URL-सापेक्ष पथों का उपयोग करें। बहुत सारे प्रारंभकर्ता गलत तरीके से सोचते हैं कि उन संसाधनों को सर्वर साइड हल किया गया है, लेकिन वे वास्तव में क्लाइंट साइड हल हो गए हैं। यह भी देखें stackoverflow.com/questions/3655316/...
BalusC

23

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

<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 वापस करेगा।


8

आप नीचे दिए गए <error-page>अपवादों का भी उपयोग कर सकते हैं <exception-type>, जैसे नीचे:

<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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.