السلام عليكم ،
إذا كان لدينا JSP و Servlet وكنت استخدم نمط " MVC " ، وأردت أن انقل معلومة ( لنفرض أني وضعتها في Beans ) ، ماهي أفضل طريقة لنقلها إلى JSP ؟ أي ماهو الوعاء الذي سيحملها إلى JSP ؟
الطريقة التي استخدمها هي حشو session بالكائن ثم في JSP أقرأ هذا الـ bean و قيمة scope هي session :
<jsp:useBean id="obj" class="Object" scope="session"/>
( لا أعرف هل أخذت هذا الأسلوب عن كتاب أوعن عضو في المنتدى أو من مكان آخر ) ؟
أليست session هي للمعلومات التي تخص المستخدم ، و التي تنتهي بعد فترة معينة ( يوم مثلاً ) ؟
يعني استخدمها لتخزين معلومات دخول المستخدم مثلاً !
فكرت قليلاً في هذا السيناريو :
- معلومة بحجم 5 ميجا - لنفرض أنها مقالة مكونة من 20 ألف كلمة / يتم نقلها من DB ثم الى Servlet الذي يضعها في session ويرسلها إلى jsp .
لو قام 100 مستخدم بتنفيذ نفس العملية ، فستصبح session ممتلأة على الآخر .. لأن المعلومات ستبقى يوم كامل مثلاً .. ؟ بمعنى أنه لن يتم تفريغ session بعد كل طلب request ؟
أي أن كل مستخدم سيستهلك في اليوم الواحد 100 ميجا على الأقل تكون مخزنة في session حتى تنتهي تلك الجلسة .
ولو كان عندنا " 1000 " مستخدم .. فالنتيجة كارثية .
ما دعاني إلى إعادة التفكير .. هو php ، حيث يمكن نكتب شيء كهذا :
$data = phpModel->getData() phpView->setView($data); . . .
setView : عبارة عن دالة تقوم بتوليد html tags ، حيث ملف php الخاص بالعرض سيكون تقريباً هكذا :
<div>$data</div>
في الجافا ، من المفروض أنه يتم تمرير الكائن إلى jsp ومن ثم يموت هذا الكائن بعد توليد الصفحة .. ولا يبقى في session ؟
الخيارات الأخرى البديلة لـ session ليست مناسبة ، مثل request ..
أما scope = page ، فيبدو أنه حل جيد .. لكن لا أعرف كيف استخدمه ![]()
لو كنت استخدم Servlets فقط ، لكان الأمر سهل لأني أنا من سأكتب HTML Tags داخل Servlet ولا احتاج لـ session أبداً ..
لكن عندما استخدم معمارية JSP/Servlets ، فأنا في ورطة !
ماهو الحل الأمثل .

