مكتبة علامة JSP بسيطة لعرض الرمز والسبب والسبب و/أو رسالة رموز حالة HTTP في صفحات خطأ JSP.
على سبيل المثال:
<%@ page isErrorPage = " true " %>
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
< html >< head >
< title >< hs:code /> < hs:reason default = " Server Error " /></ title >
</ head >
< h1 >< hs:reason default = " Server Error " /></ h1 >
Cause: < pre >< hs:cause default = " Unable to complete your request. " /></ pre >
Message: < pre >< hs:message default = " A server error has occured. " /></ pre >
...أو
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >سيتم عرضه على رمز الحالة 501:
Not Implemented قم بتضمين ما يلي في ملف build.gradle :
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} قم بتضمين ما يلي في ملف إنشاء bld الخاص بك:
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); باعتباره قطعة أثرية Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > تعرض العلامة <hs:cause/> سبب رمز حالة HTTP الحالي ، إن وجد. اختصار ل:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >السمات الاختيارية هي:
| يصف | وصف |
|---|---|
default | قيمة العودة للإخراج ، إذا لم يكن هناك سبب |
escapeXml | يحول <،> ، & ، "، إلى رموز الكيان المقابلة الخاصة بهم. القيمة true بشكل افتراضي. |
تعرض العلامة <hs:code/> رمز حالة http الحالي ، إن وجد. اختصار ل:
<%= pageContext . getErrorData() . getStatusCode() % > تعرض العلامة <hs:message/> رسالة الخطأ الحالية ، إن وجدت. اختصار ل:
<%= request . getAttribute( " javax.servlet.error.message " ) % >السمات الاختيارية هي:
| يصف | وصف |
|---|---|
default | قيمة العودة للإخراج ، إذا لم تتوفر رسالة خطأ. |
escapeXml | يحول <،> ، & ، "، إلى رموز الكيان المقابلة الخاصة بهم. القيمة true بشكل افتراضي. |
تعرض العلامة <hs:reason/> سبب رمز حالة HTTP ، إن وجد. السمات الاختيارية هي:
| يصف | وصف |
|---|---|
default | قيمة العودة للإخراج ، إذا لم يكن هناك سبب متاح. |
code | رمز خطأ حالة HTTP. إذا لم يتم تحديد رمز الحالة الحالي يتم استخدام. |
escapeXml | يحول <،> ، & ، "، إلى رموز الكيان المقابلة الخاصة بهم. القيمة true بشكل افتراضي. |
يمكن استخدام حبة StatusCode للتحقق من فئة خطأ رمز الحالة. على سبيل المثال ، باستخدام JSTL:
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
<%@ taglib prefix = " c " uri = " http://java.sun.com/jsp/jstl/core " %>
< jsp:useBean id = " statusCode " class = " net.thauvin.erik.httpstatus.StatusCode " />
< c:set target = " ${ statusCode } " property = " code " >< hs:code /></ c:set >
< c:choose >
< c:when test = " ${ statusCode . isClientError() } " >
An error occurred on your side. (< hs:reason />)
</ c:when >
< c:otherwise >
An error occurred on our side. (< hs:message />)
</ c:otherwise >
</ c:choose >أو في servlet:
import net . thauvin . erik . httpstatus . StatusCode ;
public class ExampleServlet extends HttpServlet {
public void doGet ( HttpServletRequest request , HttpServletResponse response ) {
var statusCode = new StatusCode (
( Integer ) request . getAttribute ( "javax.servlet.error.status_code" ));
if ( statusCode . isError ()) {
if ( statusCode . isServerError ()) {
var reason = statusCode . getReason ();
} else {
// ...
}
}
}
} أساليب StatusCode البري هي:
| طريقة | وصف |
|---|---|
getReason | إرجاع سبب رمز الحالة (على سبيل المثال: Internal Server Error ) |
isClientError | يتحقق مما إذا كان رمز الحالة هو خطأ عميل. |
isError | يتحقق مما إذا كان رمز الحالة هو خادم أو خطأ عميل. |
isInfo | يتحقق مما إذا كان رمز الحالة المعلوماتية. |
isRedirect | يتحقق مما إذا كان رمز الحالة هو إعادة توجيه. |
isServerError | يتحقق مما إذا كان رمز الحالة هو خطأ خادم. |
isSuccess | يتحقق مما إذا كان رمز الحالة هو النجاح. ( OK ) |
isValid | يتحقق مما إذا كان رمز الحالة صالحًا. |
يتم تعريف الأسباب في خصائص ResourceBundle على النحو التالي:
| رمز الحالة | سبب |
|---|---|
100 | يكمل |
101 | بروتوكولات التبديل |
102 | يعالج |
103 | تلميحات مبكرة |
110 | الاستجابة قديمة |
111 | فشل إعادة التحقق |
112 | عملية منفصلة |
113 | انتهاء الصلاحية |
199 | تحذير متنوع |
200 | نعم |
201 | مخلوق |
202 | مقبول |
203 | المعلومات غير التأليفية |
204 | لا محتوى |
205 | إعادة تعيين المحتوى |
206 | محتوى جزئي |
207 | متعددة |
208 | ذكرت بالفعل |
214 | التحول المطبق |
218 | هذا جيد |
226 | أنا مستعمل |
299 | تحذير مستمر متنوع |
300 | خيارات متعددة |
301 | انتقل بشكل دائم |
302 | وجدت/نقل مؤقتا |
303 | انظر الآخر |
304 | لم يتم تعديلها |
305 | استخدم الوكيل |
306 | غير مستخدم |
307 | إعادة التوجيه المؤقت |
308 | إعادة توجيه دائم |
400 | اقتراح غير جيد |
401 | غير مصرح به |
402 | الدفع المطلوب |
403 | مُحرَّم |
404 | لم يتم العثور عليها |
405 | الطريقة غير مسموح بها |
406 | غير مقبول |
407 | مصادقة الوكيل المطلوبة |
408 | طلب مهلة |
409 | صراع |
410 | ذهب |
411 | الطول المطلوب |
412 | فشل الشرط المسبق |
413 | حمولة كبيرة جدا |
414 | أوري لفترة طويلة جدا |
415 | نوع الوسائط غير المدعوم |
416 | النطاق غير مرضي |
417 | فشل التوقع |
418 | أنا إبريق الشاي |
419 | مساحة غير كافية على الموارد |
420 | فشل الطريقة |
421 | طلب خاطئ |
422 | محتوى لا يمكن المعالجة |
423 | مغلق |
424 | التبعية الفاشلة |
425 | مبكر جدا |
426 | الترقية المطلوبة |
428 | الشرط المسبق المطلوب |
429 | الكثير من الطلبات |
430 | طلب حقول الرأس كبيرة جدًا |
431 | طلب حقول الرأس كبيرة جدًا |
440 | مهلة تسجيل الدخول |
444 | لا استجابة |
449 | إعادة المحاولة مع |
450 | تم حظره بواسطة عناصر التحكم الوالدية في Windows |
451 | غير متاح لأسباب قانونية |
460 | اتصال مغلق العميل قبل تحميل مهلة الخمول |
463 | X-forwarded-for header مع أكثر من 30 عنوان IP |
494 | طلب رأس كبير جدا |
495 | خطأ شهادة SSL |
496 | شهادة SSL المطلوبة |
497 | تم إرسال طلب HTTP إلى منفذ HTTPS |
498 | رمز منتهية الصلاحية/غير صالحة |
499 | طلب مغلق العميل |
500 | خطأ في الخادم الداخلي |
501 | لم ينفذ |
502 | بوابة سيئة |
503 | الخدمة غير متوفرة |
504 | مهلة بوابة |
505 | إصدار HTTP غير مدعوم |
506 | البديل يتفاوض أيضا |
507 | تخزين غير كاف |
508 | اكتشفت حلقة |
509 | تم تجاوز حد النطاق الترددي |
510 | لم يمتد |
511 | مصادقة الشبكة المطلوبة |
520 | خطأ غير معروف |
521 | خادم الويب معطل |
522 | توقيت الاتصال |
523 | الأصل لا يمكن الوصول إليه |
524 | حدثت مهلة |
525 | فشلت مصافحة SSL |
526 | شهادة SSL غير صالحة |
527 | خطأ Railgun |
529 | الموقع مثقل |
530 | الموقع مجمد |
540 | معطل مؤقت |
561 | غير مصرح به |
598 | خطأ في قراءة الشبكة |
599 | شبكة توصيل المهلة |
783 | رمز غير متوقع |
يمكنك الاستعلام عن عبارة سبب رموز الحالة على النحو التالي:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server Errorإذا لم يتم تحديد رمز الحالة ، فسيتم طباعة كل شيء:
$ java -jar httpstatus-1.1.1.jar
100: Continue
101: Switching Protocols
102: Processing
103: Early Hints
110: Response is Stale
111: Revalidation Failed
112: Disconnected Operation
113: Heuristic Expiration
199: Miscellaneous Warning
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
...يمكنك أيضًا طباعة رموز الحالة حسب فئات الاستجابة:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... إذا كنت ترغب في المساهمة في هذا المشروع ، فكل ما عليك فعله هو استنساخ مستودع GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitثم استخدم BLD للبناء:
cd HttpStatus
./bld compileالمشروع لديه هيكل مشروع IDEA IDENT. يمكنك فتحه فقط بعد تنزيل جميع التبعيات والاطلاع على الرمز.