ההבדל בין request.getSession () ו- request.getSession (true)

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

במדריך מהיר זה נראה את ההבדל בין שיחה HttpServletRequest #getSession () ו HttpServletRequest #getSession (בוליאני).

2. מה ההבדל?

השיטות getSession () ו getSession (בוליאני) מאוד דומים. אולם יש הבדל קטן. ההבדל הוא האם יש ליצור את ההפעלה אם היא לא קיימת כבר.

יִעוּד getSession () ו getSession (נכון) הם פונקציונליים זהים: אחזר את ההפעלה הנוכחית, ואם פעולה זו עדיין לא קיימת, צור אותה.

יִעוּד getSession (שקר)עם זאת, מאחזר את ההפעלה הנוכחית, ואם אחת עדיין לא קיימת, חוזר ריק. בין היתר, זה שימושי כשאנחנו רוצים לשאול אם ההפעלה קיימת.

3. דוגמא

בדוגמה זו אנו שוקלים תרחיש זה:

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

נשמור את ערכי המשתמשים בהפעלה כדי להבין את השימוש בהם HttpServletRequest # getSession () ו HttpServletRequest # getSession (בוליאני).

ראשית, בואו ניצור סרוולט שבו אנו משתמשים HttpServletRequest # getSession () ב doGet () שיטה:

ריק מוגן doGet (HttpServletRequest בקשה, HttpServletResponse תגובה) זורק ServletException, IOException {HttpSession session = request.getSession (); session.setAttribute ("userId", request.getParameter ("userId")); } 

בשלב זה, ה- servlet ישיג את ההפעלה הקיימת או ייצור אחד חדש עבור המשתמש המחובר, אם הוא לא קיים.

לאחר מכן, נגדיר את שם משתמש תכונה במושב.

מכיוון שאנו רוצים לעדכן את פרטי המשתמש עבור מזהה המשתמש המתאים, אנו רוצים אותה הפעלה ולא נרצה ליצור הפעלה חדשה לאחסון שם המשתמש.

אז עכשיו, נשתמש HttpServletRequest # getSession (בוליאני) עם שֶׁקֶר ערך:

ריק מוגן doGet (HttpServletRequest בקשה, HttpServletResponse תגובה) זורק ServletException, IOException {HttpSession session = request.getSession (false); אם (session! = null) {session.setAttribute ("userName", request.getParameter ("userName")); }}

זה יביא להגדרת ה- שם משתמש תכונה באותה הפעלה בה תעודת זהות של משתמש נקבע בעבר.

4. מסקנה

במדריך זה, הסברנו על ההבדל בין HttpServletRequest # getSession () ו HttpServletRequest # getSession (בוליאני) שיטות.

הדוגמה המלאה זמינה ב- GitHub.


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