טיפול בחריגים של ג'קרטה EE Servlet

1. הקדמה

במדריך זה אנו נעסוק בחריגים ביישום EE Servlet של ג'קרטה - על מנת לספק תוצאה חיננית וצפויה בכל פעם שתתרחש שגיאה.

2. חריגים של ג'קרטה EE Servlet

ראשית נגדיר Servlet באמצעות הערות ה- API (עיין במבוא Servlets לפרטים נוספים) עם ברירת מחדל לקבל מעבד שישליך חריג:

@WebServlet (urlPatterns = "/ randomError") מחלקה ציבורית RandomErrorServlet מרחיב HttpServlet {@Override מוגן בטל doGet (HttpServletRequest בקשה, HttpServletResponse resp) {זרוק IllegalStateException חדש ("שגיאה אקראית"); }}

3. טיפול בשגיאות ברירת מחדל

בואו כעת פשוט נפרוס את היישום למיכל ה- servlet שלנו (אנו נניח שהיישום פועל תחת // localhost: 8080 / javax-servlets).

כשאנחנו ניגשים לכתובת // localhost: 8080 / javax-servlets / randomError, נראה את ברירת המחדל של טיפול בשגיאות סרוולט במקום:

טיפול בשגיאות ברירת מחדל מסופק על ידי מיכל ה- servlet וניתן להתאמה אישית ברמת מיכל או יישום.

4. טיפול בשגיאות בהתאמה אישית

אנו יכולים להגדיר טיפול בשגיאות בהתאמה אישית באמצעות a web.xml מתאר קבצים בו אנו יכולים להגדיר את סוגי המדיניות הבאים:

  • טיפול בשגיאות קוד מצב - זה מאפשר לנו למפות קודי שגיאה של HTTP (לקוח ושרת) לדף שגיאות HTML סטטי או לסרוולט לטיפול בשגיאות
  • טיפול בשגיאות מסוג חריג - זה מאפשר לנו למפות סוגי חריגים לדפי שגיאות HTML סטטיים או לסרוול לטיפול בשגיאות

4.1. טיפול בשגיאות קוד מצב עם דף HTML

אנו יכולים להגדיר את מדיניות הטיפול בשגיאות בהתאמה אישית עבור שגיאות HTTP 404 ב web.xml:

  404 / שגיאה-404.html 

עכשיו, גישה //localhost:8080/javax-servlets/invalid.html מהדפדפן - כדי לקבל את דף השגיאה הסטטי ב- HTML.

4.2. טיפול בשגיאות מסוג חריג עם Servlet

אנו יכולים להגדיר את מדיניות הטיפול השגיאות המותאמת אישית שלנו עבור java.lang. חריג ב web.xml:

  java.lang.Exception / errorHandler 

ב ErrorHandlerServlet, אנו יכולים לגשת לפרטי השגיאה באמצעות תכונות השגיאה המופיעות בבקשה:

@WebServlet (urlPatterns = "/ errorHandler") מחלקה ציבורית ErrorHandlerServlet מרחיב את HttpServlet {@Override מוגן בטל doGet (HttpServletRequest req, HttpServletResponse resp) זורק IOException {resp.setContentType ("text / htf;); נסה (כותב PrintWriter = resp.getWriter ()) {writer.write ("תיאור שגיאה"); writer.write ("

תאור הטעות

"); writer.write ("
    "); Arrays.asList (ERROR_STATUS_CODE, ERROR_EXCEPTION_TYPE, ERROR_MESSAGE). ForEach (e -> writer.write ("
  • "+ e +": "+ req.getAttribute (e) +"
  • ")); writer.write ("
"); writer.write (" ");}}}

עכשיו, אנחנו יכולים לגשת // localhost: 8080 / javax-servlets / randomError כדי לראות את סרוולט השגיאה המותאם אישית עובד.

הערה: סוג החריג שלנו המוגדר ב web.xml הוא רחב מדי ועלינו לפרט ביתר פירוט את כל החריגים שאנו רוצים לטפל בהם.

אנו יכולים גם להשתמש בלוגר ה- servlet המסופק במכולות שלנו ErrorHandlerServlet רכיב לרישום פרטים נוספים:

חריג חריג = (חריג) req.getAttribute (ERROR_EXCEPTION); אם (IllegalArgumentException.class.isInstance (חריג)) {getServletContext () .log ("שגיאה בטיעון יישום", חריג); }

כדאי לדעת מה מעבר למנגנוני הרישום המסופקים על ידי servlet, עיין במדריך ב- slf4j לפרטים נוספים.

5. מסקנה

במאמר קצר זה, ראינו טיפול בשגיאות ברירת מחדל וציינו טיפול בשגיאות מותאמות אישית ביישום servlet מבלי להוסיף רכיבים חיצוניים ולא ספריות.

כמו תמיד, אתה יכול למצוא את קוד המקור במאגר ההדרכה של Servlets.


$config[zx-auto] not found$config[zx-overlay] not found