bint_mo7ammed بتاريخ: 31 مارس 2005 تقديم بلاغ مشاركة بتاريخ: 31 مارس 2005 السلام عليكم حبيت اسال كيف اضع قيمة معينة بالسيشن عند الضغط على لينك معين بمعنى إخرعارفين مشروعي (بنك الكتروني)و دي أعرض للعميل الحسابات حقتة على شكل لينك <a href="page.jsp" onclick="********">print account number</a>و دي أحط في "*********" كود يضع قيمة الاكونت نمبر اللى هو رقم الحساب و يودية صفحةpage.jsp و يكون فيها مجموعة العمليات التي يمكنك أن تقوم بها على هذا الحسابو شكرا بنت محمد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
احمد الجابري بتاريخ: 1 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 1 أبريل 2005 ارسلي Parametersيعني سوي رابط ينتقل الى الصفحة ومعه رقم العميل مثل <a href ="showinfo.jsp?client_id=<%=clientID%>">click here</a> وهذا الكود بعد الضغط على اللينك بينقلك الى صفحة showinfo.jsp مع العلم ان client_id هذا اسم باراميتر بيظهر فوق في صفحة البراوزر فمثلاً لو كانت قيمة المتغير clientID هي 007 وبعد الضغط على كلمة click here بتنتقل الى صفحة عنوانهاhttp://localhost:8080/showinfo.jsp?client_id=007ومن الصفحة showinfo.jsp تقدرين تقرين قيمة المتغير client_id بواسطة الامر هذا Hello <b><%= request.getParameter("client_id") %></b> ومافي حاجة للسيشن . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
خالد عبدالله بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 بالضبط مثل ما قال الاستاذ احمد بالنسبة لطريقة ارسال الـ parameterأما لو أردت حفظ قيمة معينة في الـ session مثل اسم المستخدم الحالي ، فأنت غالباً ستحفظين اسم المستخدم وقت تسجيل الدخول ليتمكن من التنقل بين الصفحات المتاحة له بسهولة بدون الحاجة لارسال بياناته في كل مرة و تكون بالطريقة التالية :في صفحة الـ JSP : session.setAttribute("userid",user_id); أما اذا كان العمل داخل servlet او اي كلاس آخر : HttpSession currentSession = HttpSession(); currentSession.setAttribute("userid",user_id); ثم يتم الحصول على القيمة من خلال : String id = session.getAttribute("userid"); وزي ما قلت و اكرر واقول لا يصير شغلنا كله في صفحة الـ jspبالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
naif224 بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 طيب يا خالد :بالـADF وين نضع الSession ..... هل في الaction حق الـdatapageأي في الmethod التالية :public void onCommit()هل توضع هنا ؟؟؟؟؟ أرجو الرد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
خالد عبدالله بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 (معدل) المعلومات التي يفضل حفظها في الـ session هي المعلومات المهمة بالنسبة لك عن المستخدم سواء الشخص نفسه مثل اسم المستخدم او لغة المستخدم او الشكل المفضل للمستخدم أو معلومات عن جهاز العميل مثل نوع المتصفح او اسم نظام التشغيل وغيرها على حسب احتياجكأما البيانات الأخرى مثل رقم الرسالة او رقم السلعة او كلمة البحث او اي بيانات تريد نقلها فقط من صفحة الى صفحة فيفترض الا توضع في الـ session للتخفيض من استخدام الذاكرة . بالنسبة لسؤالك عن المكان المناسب لاضافة قيمة الى الـ sessionقد يكون كما ذكرت أنت في الـ Datapage Action سواء في الحدث onCommit او onSubmit او onCreate على حسب ما تريد أنت .وقد يكون ( وهذا الأغلب) في Action class مستقل موجود في البرنامج للقيام بعملية معينة سواء استدعاء stored procedure أو بعمل select مباشر على قاعدة البيانات أو حتى لتغيير لغة المستخدم .. بحيث تقوم باضافة قيمة معينة للـ session في حالة أن تتم العملية بشكل صحيح و إلا تبقى القيمة كما هي .مثال :أنت تريد أن يقوم المستخدم بتسجيل الدخول ثم تضيف اسم المستخدم و لغته في الـ session المفروض أن عندك الملفات التالية في برنامجك للقيام بهذه العملية (تسجيل الدخول) :1- login.jsp2- LoginForm.java3- LoginAction.java1- login.jspيحتوي على html form مكون من اسم المستخدم وكلمة المرور2- LoginForm.javaملف جافا يحتوي على get and set للـ fields الموجودة في صفحة تسجيل الدخول . و يمكن من خلاله عمل validation للبيانات .3- LoginAction.javaو هنا تتم عملية الـ login بشكل فعلي و في مثالنا سنقوم بالتالي : select name,lang from users where userid = naif224 and pass = pw; طبعاً تنفيذ الـ select statment ليس بهذه الطريقة مباشرة إنما بالطريقة المعروفة في الجافا ، المهم أن نحصل على اسم المستخدم ولغة المستخدم .في حالة وجود المستخدم سنقوم باضافة اسمه و لغته إلى الـ session : HttpSession currentSession = HttpSession(); currentSession.setAttribute("username",name); currentSession.setAttribute("lang",lang); و من ثم ننقل المستخدم الى صفحة لوحة التحكم مثلاً أو اي صفحة : mapping.getForward("validlogin"); أما في حلة فشل التسجيل فنقوم فنعيده الى صفحة التسجيل mapping.getForward("invalid"); بحيث validlogin و invalid هي عبارة عن mapping معرفة في الـ strutsالخلاصة :بإمكانك اضافة قيمة إلى الـ session من اي مكان في البرنامج لكن الأفضل أن تضيفها بعد حدوث الـ action الذي تريده سواء login او اي حدث آخر .بالتوفيق تم تعديل 3 أبريل 2005 بواسطة خالد عبدالله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orayyan بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 أخي خالد السلام عليك:هل يمكن ان ترشدني لافضل طريقة في عمل Authentication and Autheriazation باستخدام Strutsوسأكون لك من الشاكرين اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
maksoud بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 من رايي لا تستخدم session استخدم prammeter userId ?="" اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
naif224 بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 ألف شكر حبيبي على الرد الجميل ...........الى الامام دوما... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
naif224 بتاريخ: 3 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2005 اولا : ارجو يا خالد ان توضح اذا امكن كيفية عمل Authentication and Autheriazation باستخدام Strutsثانيا : يا maksoud لماذا لا تستخدم session ؟؟؟؟؟؟؟؟ ارجو التوضيح اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
naif224 بتاريخ: 11 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 11 أبريل 2005 select username,lang from users where username = naif and password = lang---------------------------------------أنت يا خالد كتبت في LoginAction.java ان تعمل التالي :طبعاً تنفيذ الـ select statment ليس بهذه الطريقة مباشرة إنما بالطريقة المعروفة في الجافا ، المهم أن نحصل على اسم المستخدم ولغة المستخدم .فسؤالي هو : كيف اعمل او اضع تعليمة الـselect في الجافا واشيك على اسم الـuser و password ؟؟؟؟؟هل احتاج ان استدعي function او procedure ، وإذا كان كذلك كيف استدعيها ؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
خالد عبدالله بتاريخ: 12 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 12 أبريل 2005 (معدل) لكل من سأل Authentication and Autheriazation قصة طويلة و أساليب مختلفة و تقنيات متعددة للتحكم بها . يجب أولاً التفريق بين Authentication وهي تجيب عن سؤال :هل الشخص يحق له الدخول على النظام أم لا ؟ و تحت أي مجموعة يندرج هذا اشخص ، هل هو مستخدم أم مدير ؟ و Authorization تجيب عن سؤال :هل هذا الشخص يحق له اجراء هذه العملية أم لا ؟مثلاً هل يحق للمستخدم "نايف" أن يحذف بيانات مستخدم ؟؟هذا الفرق الكبير يجعل هناك فرق أيضاً في إجراء هاتين العمليتين .فالبعض يفضل إجراؤهما على مستوى قاعدة البيانات بحيث تكون كل الـ users control بما فيها و الصلاحيات لكل مستخدم و تقسيم المستخدمين إلى مجموعات مثلاً ( users , admins, superadmin, visitors ) وهذا يساعد على تسجيل كل العمليات . و في هذه الحالة تحتاج غالباً إلى DBA يقوم بهذه العمليات . وهذه تستخدم غالباً في التطبيقات التي تتطلب أمن كبير جداً سواء بيانات مالية أو أمنية أو حكومية أو غيرها .والبعض الآخر يفضل إجرائها على مستوى الـ business بحيث يكون لكل مجموعة class type مثلاً User.java و Admin.java و يعطى لكل كلاس صلاحيات تختلف عن الآخر و يتم ضبط إمكانية تنفيذ العملية و عمل access عليها من خلال تلك الصلاحيات .و أذكر أني عملت مثل هذه الصلاحيات في ADF Business Components و بعض ممن يستخدمون طبقة الـ controller سواء struts او jsf backing beans يفضلون إجراء الـ Authentication and Autheriazation هنا في هذه الطبقة .و نادراً ما يلجأ المطورون إلى تنفيذ هذه الاجراءات في طبقة الـ view وهي صفحات الـ jsp نفسها في حالة الويب أو حتى الـ swing forms في حالة التطبيقات المكتبية .أنا أفضل الطريقة الأولى أو الثانية (على حسب طبيعة البرنامج) و هي عمل Authentication and Autheriazation في قاعدة البيانات أو في الـ business tier . بحيث تأتي طبقة الـ controller بعد ذلك وقد حصلت على موافقة أو رفض بعمل access على هذه الصفحة أو تلك العملية و بالتالي نقوم بتحويل المستخدم إلى الصفحة المطلوبة أو إلى صفحة رسالة "ليس لديك صلاحية" مثلاً وهذا هو الدور الحقيقي للـ controller .نأتي إلى زبدة الكلام : هل يمكن ان ترشدني لافضل طريقة في عمل Authentication and Authoriazation باستخدام Struts Authentication وهي بالضبط عملية الـ login وتتم كما ذكرت سابقاً مع توضيح هذا الأمر :select name,lang from users where userid = naif224 and pass = pw; هذا الأمر قد يكون مباشر بالاتصال مع قاعدة البيانات وهذا خطأ لأننا بهذا نقفز على طبقة الـ business و بالتالي فمن المفروض أن يكون عندنا method جاهزة نضعها في الطبقة الـ business سواء ejb او BC أو غيرها ، و نقوم هنا في الـstruts باستدعاء هذه الـ method .أما اذا كنت لا تستخدم business tier فيمكنك عمل connection بشكل مباشر مع قاعدة البيانات و تنفيذ الأمر .بالنسبة لك يا نايف ، بما أنك تستخدم ADF BC فلا ينبغي أن تعمل الاتصال يدوياً لأنك تملك اتصال اساساً و لديك BC تقوم بالتعامل مع قاعدة البيانات . يمكنك في هذه الحالة أن تنشئ bc او ejb خاصة تحتوي على ميثود تقوم بعملية تسجيل الدخول .و هناك تقنية في الجافا اسمها Java Authentication and Authorization Service (JAAS)و تدعمها الـ ADF BC بشكل كبير فنكون قد أخذنا البيانات من صفحة تسجيل الدخول و عن طريق الـ action form ارسلناها الى الـ action class ليقوم باستدعاء الميثود أو تنفيذ الأمر بشكل مباشر . بعد ذلك في حالة وجود نتيجة ايجابية للأمر نقوم بتسجيل بيانات المستخدم المهمة في الـ session ونقل المتصفح الى صفحة أخرى (الرئيسية أو لوحة التحكم) . أما في حالة أن النتيجة سلبية فنقوم بإعادته إلى صفحة الـ login .لاحظ أننا في كل صفحة أيضاً سنتأكد من أن الـ session تحتوي على هذا الـ user وإلا نقوم بتحويله إلى الـ login .أما عملية الـ Authoriazation فنستطيع التحكم بها ما دمنا قد حصلنا على اسم المستخدم و نوعه مثل ( employee , manager , admin ) . ومن خلال الاسم والنوع نقوم بالتحقق من امكانيته لعمل هذه العملية أو تلك سواء في قاعدة البيانات أو في الـ business tier .هذا بشكل مجمل .. أتمنى أن أكون أعطيت فكرة عامة و إذا كان الموضوع يحتاج إلى مزيد من التوضيح ، أنا حاضر.تحياتي تم تعديل 12 أبريل 2005 بواسطة خالد عبدالله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orayyan بتاريخ: 13 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 13 أبريل 2005 أخي خالد مشكور على هذا الشرح المفيد:هل اجد لديك كتاب Struts in Action ,Hibernate in Actionفانا اعمل على مشروع ويب واحتاج الى هذه الكتب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.