ওয়েব.এক্সএমএল-এ ডিফল্ট ত্রুটি পৃষ্ঠাটি কীভাবে নির্দিষ্ট করবেন?


138

আমি ওয়েব.এক্সএমএল এ<error-page> উপাদানটি বন্ধুত্বপূর্ণ ত্রুটি পৃষ্ঠাটি নির্দিষ্ট করতে ব্যবহার করছি যখন 404 কোড সহ ত্রুটি যেমন কোনও নির্দিষ্ট ত্রুটির মুখোমুখি হয়:

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

তবে, আমি চাই যে ব্যবহারকারী যদি নির্দিষ্ট করা ত্রুটি কোডটি পূরণ না করে তবে তার <error-page>একটি ডিফল্ট ত্রুটি পৃষ্ঠা দেখা উচিত। ওয়েব.এক্সএমএমএল উপাদানটি ব্যবহার করে আমি কীভাবে এটি করতে পারি ?


2
আপনি কোন টার্গেটটি / টার্গেটিং ব্যবহার করছেন এবং আপনার কোন সার্ভলেট সংস্করণে web.xmlঘোষিত হয়েছে? কেবল সরললেট 3.0 থেকে একটি সহজ উপায়।
বালুসসি

আমি টমক্যাট 6 ব্যবহার করছি, সার্ভলেট 2.5
ipkiss

উত্তর:


240

সার্ভলেট 3.0 বা আরও নতুনতে আপনি কেবল নির্দিষ্ট করতে পারেন

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

তবে আপনি এখনও সার্লেট ২.৫ এ থাকায় প্রতিটি সাধারণ এইচটিটিপি ত্রুটি পৃথকভাবে উল্লেখ করা ছাড়া আর কোনও উপায় নেই। এন্ডিউসারটি সম্ভবত কোন 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>ট্যাগ সহ কিছু ত্রুটি কোডগুলি ওভাররাইড করতে পারেন ?
কিউস - মনিকা

6
@ টমাস: টমক্যাট ছেলেরা আপনার মতো একই সমস্যা করেছিল। এটি আক্ষরিকভাবে অনুমানের কোথাও উল্লেখ করা হয়নি, কেবল অনুমানের মধ্যে 14-10 চিত্রযুক্ত এবং web.xmlএক্সএসডি ফাইল এটি প্রমাণ করে <error-code>এবং <exception-type>প্রয়োজনীয় পরিবর্তে alচ্ছিক হয়ে ওঠে। 52135 সংখ্যাটি দেখুন ।
বালুসসি

java.sun.com/xML/ns/javaee/web-app_2_5.xsd << হরর -পেজ> উপাদানটির জন্য কোনও < দস্তাবেজ > শিশু নির্দিষ্ট করে না, সুতরাং উপরের কোডটি সার্ভলেটে 2.5 ওয়েব.এক্সএমএল হিসাবে আটকানো এক্সএসডি সৃষ্টি করবে বৈধতা ত্রুটি। আমি তাদের মন্তব্য যদি, যদিও, এটি দুর্দান্ত কাজ করে, ধন্যবাদ!
László ভ্যান ডেন Hoek

1
@ বালুসসি: ওয়েব-আইএনএফ-এর ভিতরে সাধারণ-ত্রুটি। Html পৃষ্ঠাটি (আপনার উত্তরে উল্লিখিত) কোথায় রাখা উচিত? আমার servlet 2.5 এর সাথে একটি অদ্ভুত সমস্যা রয়েছে যার মধ্যে HTTP ত্রুটি 403 এর জন্য, আমি একটি << হররপৃষ্ঠা> সংজ্ঞা তৈরি করেছি এবং ত্রুটি 403.jsp পৃষ্ঠাটি ওয়েবে-আইএনএফ-এর ভিতরে বসে আছে এবং এর কারণে ত্রুটি 403.jsp পৃষ্ঠা লোড হয় যখন রিসোর্সগুলির অ্যাক্সেস করার চেষ্টা করা হয়েছে তবে 4040.jsp এর মধ্যে চিত্র এবং সিএসএস পৃষ্ঠা অপ্রয়োজনীয় দেখায় লোড হয় না।
জয় 17

@ কাইপা: সিএসএস / জেএস / চিত্র সংস্থানগুলিতে ওয়েব কনটেন্ট-আপেক্ষিক পাথের পরিবর্তে কেবলমাত্র URL- সম্পর্কিত পাথ ব্যবহার করুন relative প্রচুর সূচনা ভুলভাবে মনে করে যে এই সংস্থানগুলি সার্ভার সাইডে সমাধান করা হয়েছে, তবে তারা আসলে ক্লায়েন্টের দিক থেকে সমাধান হয়েছে। আরও দেখুন 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 ফেরত দেবে, এবং অন্য কোনও ত্রুটি কোডের জন্য এটি পৃষ্ঠা ত্রুটি 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>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.