שלח תשובה

זירת השאלות

631
צפיות
7
תשובות

איך אפשר להעביר אוביקט לדף חדש ?

,‏ 21 באוגוסט, 2005

שלום, אני משתמש ב-JSP ו-SERVLETS למרות שהבעיה/פתרון כנראה לא קשורה לשפה.
ביצירת דף מסוים ביצעתי כל מיני שאילתות ב-database ואיחסנתי את התוצאות בתוך אוביקט ע"י request.setAttribute. בתוך הדף יש לינק לדף אחר שבו אני רוצה להשתמש באותו אוביקט במקום לגשת ל-database שוב.
הבעיה היא שבדף החדש אני לא מוצא את האוביקט (מן הסתם נוצר אוביקט request חדש והאוביקט שלי נמחק).
פתרון אחד הוא לאחסן את האוביקט ברמת session אבל אז אם המשתמש יפתח באותו session יותר מדף אחד עלול להיווצר בלבול בתוצאות (תקנו אותי אם אני טועה). מהו הפתרון ?
תודה,
  יריב

תגיות:

7 תשובות

  1. ניר טייב הגיב:

    אני חושב שאין לך ברירה מלבד Session
    *חושב* ! אל תתפוס אותי במילה

  2. yarivt הגיב:

    אז נחדד את השאלה
    נניח שאתה רוצה לאפשר לבצע חיפוש כלשהו. החיפוש מחזיר 1000 תוצאות, אתה מן הסתם תיצור דפים של תוצאות (נניח 10 בכל דף).
    בכל פעם שהמשתמש יבקש לראות את ה-10 תוצאות הבאות תבצע חיפוש מחדש ? יותר הגיוני להעביר איכשהו את אוביקט התוצאות מדף לדף עם פרמטר שאומר איזה תוצאות מתוך ה-1000 להציג.
    מה אתם אומרים ?

  3. ניר טייב הגיב:

    תעביר דרך שורת הכתובת…
    תסתכל על החיפוש בגוגל למשל, או יותר קרוב-כאן באתר.

  4. yarivt הגיב:

    להעביר את מה ?
    החיפוש החזיר 1000 תוצאות.
    ברור שאעביר את הפרמטר שאומר איזה תוצאות להציג אבל איך להעביר את 1000 התוצאות ? אם לא אמצא דרך לשמור את 1000 התוצאות בין הדפים השונים אצטרך לשמור את הפרמטרים של החיפוש ולחפש כל פעם מחדש.

  5. ניר טייב הגיב:


    1. למה 1000 תוצאות  ?
    2. אחרי שפתרנו את 1 נוכל לומר שהשרת יכול להסתדר עם שליפה של הרשומות.

  6. ronklein הגיב:

    אתה יכול לשמור את תוצאות החיפוש
    אתה יכול לשמור את תוצאות החיפוש בצורה הבאה:
    1. צור מזהה יחודי, נניח GUID.
    2. צור קובץ / רשומה ב DB שבנוי בצורה הבאה:
    חותמת זמן
    SessionID
    תוצאות החיפוש (יכולות להיות גם "מפורקות" לדפים)
    3. שמור את הקובץ לתיקיה זמנית על השרת / את הרשומה ל DB
    4. כאשר המשתמש מבצע חיפוש – תוסיף ל QueryString גם את ה GUID שיצרת בסעיף 1.

    בכל דף תוצאות – אתה בודק מהו ה GUID, קורא את הקובץ ונותן את התוצאות.

    פעם בשעה (או פעם ביום) – אתה דואג לנקות את הקבצים הזמניים שיצרת. כדי ליעל את התהליך אתה יכול ליצור להם שם שכולל בתוכו גם את חותמת הזמן בפורמט שיהיה לך נוח וקריא.

    מקווה שעזרתי…

שלח תשובה