व्हाइटलेबल त्रुटि पृष्ठ कुंद दिखते हैं और उपयोगकर्ता अनुभव पर नकारात्मक प्रभाव डाल सकते हैं। Thymeleaf का उपयोग करके कस्टम त्रुटि पृष्ठ बनाना सीखें।
सॉफ़्टवेयर में त्रुटियाँ आती हैं. यहां तक कि सर्वोत्तम एप्लिकेशन भी किसी न किसी मोड़ पर त्रुटियों का सामना करेंगे। इसलिए, प्रत्येक एप्लिकेशन में कुछ त्रुटि-हैंडलिंग तंत्र मौजूद होने चाहिए।
स्प्रिंग बूट त्रुटि प्रबंधन के लिए अपने ऑटो-कॉन्फ़िगरेशन के एक घटक के रूप में एक डिफ़ॉल्ट व्हाइटलेबल त्रुटि पृष्ठ प्रदान करता है। बहरहाल, उम्मीद यह है कि डेवलपर्स एक कस्टम त्रुटि पृष्ठ बनाएंगे जो व्हाइटलेबल त्रुटि पृष्ठ को प्रतिस्थापित करेगा। इस आलेख में, आप सीखेंगे कि अपने स्प्रिंग बूट अनुप्रयोगों के लिए त्रुटि पृष्ठ को कैसे अनुकूलित करें।
स्प्रिंग बूट का व्हाइटलेबल त्रुटि पृष्ठ
जब स्प्रिंग बूट एप्लिकेशन में कोई त्रुटि आती है, तो वह अनुरोध करता है /error यूआरएल. यदि इस स्थान पर कोई दृश्य नहीं है तो यह व्हाइटलेबल त्रुटि पृष्ठ प्रदर्शित करता है:
व्हाइटलेबल त्रुटि पृष्ठ संबंधित समय क्षेत्र के साथ त्रुटि की तारीख और समय बताता है। इसके अतिरिक्त, यह त्रुटि प्रकार और उससे संबंधित कोड को इंगित करता है। व्हाइटलेबल पृष्ठ यह बताता है
यह 404 त्रुटि है (पृष्ठ नहीं मिला)। ऐसा इसलिए है क्योंकि नमूना एप्लिकेशन में "/उत्पाद" यूआरएल के लिए कोई मैपिंग नहीं है।व्हाइटलेबल त्रुटि पृष्ठ पर प्रस्तुत अधिकांश जानकारी विशिष्ट त्रुटि विशेषताओं से ली गई है। स्प्रिंग बूट के त्रुटि दृश्य में निम्नलिखित त्रुटि विशेषताओं तक पहुंच है:
- गलती:त्रुटि का कारण.
- TIMESTAMP: वह दिनांक और समय जब त्रुटि होती है।
- स्थिति: त्रुटि स्थिति कोड.
- अपवाद: रूट अपवाद का वर्ग नाम (यदि त्रुटि अपवाद का परिणाम है)।
- संदेश: अपवाद संदेश (यदि त्रुटि अपवाद का परिणाम है)।
- त्रुटियाँ: बाइंडिंगरिजल्ट अपवाद से कोई भी परिणाम (यदि त्रुटि अपवाद का परिणाम है)।
- पता लगाना: अपवाद स्टैक ट्रेस (यदि त्रुटि अपवाद का परिणाम है)।
- पथ: वह URL पथ जहां त्रुटि होती है.
थाइमेलिफ़ के साथ एक त्रुटि पृष्ठ बनाना
आपके स्प्रिंग बूट एप्लिकेशन में "त्रुटि" टेम्पलेट के भीतर एक एकल त्रुटि पृष्ठ संग्रहीत होना चाहिए। इस टेम्पलेट का विस्तार आपके द्वारा उपयोग की जाने वाली टेम्पलेट तकनीक के आधार पर अलग-अलग होगा। उदाहरण के लिए, यदि आप जावा सर्वर पेज (जेएसपी) टेम्पलेट चुनते हैं, तो फ़ाइल का नाम होना चाहिए त्रुटि.जेएसपी.
हालाँकि, यह नमूना स्प्रिंग बूट एप्लिकेशन का उपयोग करता है थाइमेलिफ़ टेम्पलेट इंजन. तो, टेम्पलेट का नाम है error.html. आपको अपना त्रुटि टेम्पलेट लगातार इसमें रखना चाहिए खाका फ़ोल्डर, के अंतर्गत संसाधन आपकी अन्य सभी टेम्पलेट फ़ाइलों के साथ निर्देशिका।
error.html फ़ाइल
html>
<htmlxmlns: th="http://www.thymeleaf.org">
<head>
<title> Errortitle>
<linkrel="stylesheet"th: href="@{/css/style.css}"/>
head>
<bodyth: style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<divclass="container" >
<h1>An error has occurred...h1>
<imgth: src="@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<spanth: text="${path}">span>).p>
<pth: text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}">p>
<pth: text="${'Further details: ' + message + '.'}">p>
<aclass="btn"href="/home">Back to homea>
div>
body>
html>
अनुकूलित त्रुटि पृष्ठ कई महत्वपूर्ण कार्य पूरा करता है। यह किसी त्रुटि के घटित होने की घोषणा करता है। इसके बाद, यह प्रदर्शित होता है HTTP अनुरोध जिससे त्रुटि उत्पन्न हो गई। इसके अलावा, यह उपयोगकर्ता को त्रुटि से जुड़ा स्टेटस कोड प्रदान करता है। लेकिन यदि उपयोगकर्ता स्थिति कोड से परिचित नहीं है, तो पृष्ठ त्रुटि विशेषता के माध्यम से कोड का अर्थ भी बताता है।
अपवाद की स्थिति में पाठ की अंतिम पंक्ति उपयोगकर्ता को एक संदेश प्रस्तुत करती है। फिर, अंत में दिया गया लिंक उपयोगकर्ता को होम पेज पर वापस जाने की अनुमति देता है। error.html फ़ाइल निम्नलिखित दृश्य बनाने के लिए एक सीएसएस स्टाइल शीट और दो छवियों का उपयोग करती है:
अपने त्रुटि पृष्ठ को उपयोगकर्ता-अनुकूल रखें
त्रुटि पृष्ठ का प्राथमिक उद्देश्य उपयोगकर्ता को सूचित करना है कि एक विशिष्ट त्रुटि हुई है। हालाँकि, यह त्रुटि पृष्ठ अभी भी एप्लिकेशन का एक पहलू है। इसलिए, यह सुनिश्चित करना महत्वपूर्ण है कि त्रुटि पृष्ठ भी उपयोगकर्ता के अनुकूल हो।
इसका मतलब उन त्रुटि विशेषताओं का उपयोग करना होगा जो त्रुटि को अधिक सरल तरीके से संप्रेषित करती हैं। इसलिए, आप ट्रेस विशेषता के बजाय पथ विशेषता का उपयोग करना चुन सकते हैं, जो बहुत अधिक जटिल है और इसमें ऐसे विवरण शामिल हैं जिन्हें उपयोगकर्ता को जानने की आवश्यकता नहीं है।
आप किसी यादृच्छिक उपयोगकर्ता को अपने एप्लिकेशन की आंतरिक कार्यप्रणाली के बारे में अत्यधिक जानकारी प्रदान नहीं करना चाहते, क्योंकि इससे एप्लिकेशन की सुरक्षा से समझौता हो सकता है।