ההבדל בין getRequestURI ל- getPathInfo ב- HttpServletRequest

1. סקירה כללית

במדריך מהיר זה נדון בהבדל בין getRequestURI () ו getPathInfo () בתוך ה HttpServletRequest מעמד.

2. ההבדל בין getRequestURI () ו getPathInfo ()

הפונקציה getRequestURI ()מחזיר את ה- URI המבוקש המלא. זה כולל את תיקיית הפריסה ומחרוזת מיפוי סרוולט. זה גם יחזיר את כל מידע הנתיב הנוסף.

הפונקציה getPathInfo ()רק מחזיר את הנתיב שעבר לסרוולט. אם לא יועבר מידע נוסף על נתיב, פונקציה זו תחזור ריק.

במילים אחרות, אם נפרוס את היישום שלנו בשורש שרת האינטרנט שלנו, ו אנו מבקשים את סרוולט הממופה ל- "/", שניהם getRequestURI () ו getPathInfo () יחזיר את אותו הסטריןז. אחרת נקבל ערכים שונים.

3. בקשה לדוגמא

על מנת לקבל הבנה טובה יותר של ה- HttpServletRequest נניח שיש לנו סרוולט אליו ניתן לגשת דרך כתובת אתר זו:

// localhost: 8080 / deploy-folder / servlet-mapping

בקשה זו תפגע בסרוולט "מיפוי סרוולט" ביישום אינטרנט שנפרס בתוך "תיקיית פריסה". לכן, אם אנו מתקשרים getRequestURI () ו getPathInfo () לבקשה זו, הם יחזירו מחרוזות שונות.

בואו ניצור פשוט doGet () שיטת סרוולט:

public void doGet (בקשת HttpServletRequest, תגובה HttpServletResponse) זורק IOException {כותב PrintWriter = response.getWriter (); if ("getPathInfo" .equals (request.getParameter ("function")) {writer.println (request.getPathInfo ());} אחר אם ("getRequestURI" .equals (request.getParameter ("פונקציה")) {כותב .println (request.getRequestURI ());} writer.flush ();}

ראשית, בואו נסתכל על הפלט של ה- servlet עבור getRequestURI בקשות שהועברו לפי פקודת תלתל:

תלתל // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getRequestURI
/ deploy-folder / servlet-mapping / path-path 

באופן דומה, בואו נסתכל על הפלט של ה- servlet עבור getPathInfo:

תלתל // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getPathInfo
/ נתיב בקשה

4. מסקנה

במאמר זה, הסברנו על הבדל בין getRequestURI () ו getPathInfo () ב HttpServletRequest. הדגמנו זאת גם באמצעות סרוולט ובקשה לדוגמה.

כמו תמיד, ה- servlet המיושם לבדיקת כל הפונקציות הללו זמין ב- Github.


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