لقد ذكرنا سابقًا أن برامج JSP عبارة عن وحدات نمطية ولها وظائف قوية لطلب العرض التقديمي. يعد إنشاء وصول مثالي لقاعدة البيانات عملية صعبة، ويمكن لواجهة JDBC إكمال هذه العملية بشكل جيد. ومع ذلك، فإن كود JDBC المضمن في كود JSP، تمامًا مثل أوامر SQL المضمنة في JDBC، يمكنه الاستفادة الكاملة من إمكانيات JSP لإنشاء واجهة برمجة تطبيقات نظيفة وبسيطة للعملاء. ومن أجل تحقيق هذا الغرض، يمكننا التفكير في استخدام عمليات JSP لإنشاء مكونات واجهة قاعدة البيانات.
نمط تصميم JSP المثالي هو Model-View-Controller (MVC). النظام التقليدي ثلاثي المستويات هو: النموذج مخصص لمنطق البرنامج والبيانات؛ والعرض مخصص للعرض؛ ووحدة التحكم مخصصة لمعالجة الطلب. باتباع هذا النموذج، يحتوي برنامج JSP على صفحات لكل "صف" من "مربع حوار" خادم العميل. في برنامج نموذجي، قد ترى صفحة استعلام، وصفحة التحقق من الصحة، وصفحة إدراج قاعدة البيانات، وصفحة تحديث قاعدة البيانات، وما إلى ذلك.
في المقالة السابقة، ناقشنا كيفية تضمين JDBC في كل صفحة للتأكد من أن بنية البرنامج أكثر معقولية. ومع ذلك، فإن إنشاء أوامر SQL قابلة للتنفيذ، بالإضافة إلى المتغيرات التي يتم تمريرها عبر أوامر JDBC، قد يؤدي أيضًا إلى زيادة تعقيد البرنامج.
عمليات JSP التي صممها JDBC
هناك طريقة أخرى لعمليات قاعدة بيانات JSP وهي إنشاء مجموعة من العمليات لقاعدة البيانات دون استخدام JDBC. باستخدام هذا النهج، يمكنك الحصول على فائدتين: أولاً، يمكنك التخلص من الحاجة إلى استخدام JDBC، مما يبسط الكثير من العمل؛ ثانيًا، يكون تصميمك وتنظيم التعليمات البرمجية أكثر منطقية (مثل سهولة القراءة والأداء المرن وقابلية الصيانة).
لا تزال بحاجة إلى بعض برامج التشغيل، ولكن عليك تبسيط ما ورد أعلاه أولاً. العمليات في برنامج JSP عبارة عن كتل منطقية يتم كتابتها واستخدامها عادةً من قبل مطوري برامج JSP الآخرين، ولكن يمكنك استخدامها كإجراءات فرعية. تكمن أهمية استخدام عمليات JSP في توحيد وظائف معينة وتقليل كمية تعليمات Java البرمجية المضمنة في JSP.
يوفر JSP مجموعة من فئات الامتداد القياسية. من خلال هذه الفئات، يمكنك تحديد عملية من خلال معالج العلامات. هناك واجهتان محددتان بواسطة JSP: واجهة Tag وواجهة BodyTag، والتي يتم تنفيذها بواسطة فئة TagSupport وفئة BodyTagSupport على التوالي.
يمكنك إنشاء مكتبة علامات لأغراض JSP العامة، ويمكنك أيضًا تنفيذ معالجات العلامات لتوسيع دعم الفئة. فيما يلي خطوات تنفيذ هذه العمليات.
أولاً، قم بتنفيذ فئة إدارة العلامات:
packagecom.myactions;
(بيانات الاستيراد تذهب هنا)
الطبقة العامة MyActionTag تمتد TagSupport {
...
}
بعد ذلك، قم بتجميع هذا الرمز ووضع ملف الفئة في مكتبة فئة البرنامج. بعد ذلك، ستحتاج إلى ملف واصف مكتبة العلامات (TLD)، وهو ملف XML يطابق اسم الإجراء الخاص بك وفئة مدير العلامات المقابلة.
<العلامة>
<name>MyAction</name>
<tagclass>com.myactions.MyActionTag</tagclass>
<bodycontent> (أيا كان) </bodycontent>
<attribute>بياناتي</attribute>
</tag>
</tag>
البرامج التجريبية ذات الصلة
افترض أنك قمت بإنشاء إجراء باسم MyAction، وهو TLD يتطابق مع فئة com.myactions.MyActionTag. يجب أن يكون ملف TLD موجودًا في مسار TLDs الخاص بالبرنامج.
عند استدعاء عملية من صفحة JSP، يخبر TLD JSP بالفئة الصحيحة لاستخدام العملية. وهذا يوفر راحة كبيرة ولا يتطلب سوى كمية صغيرة من التعليمات البرمجية.
ولكن أين يمكن تقديم SQL؟ أولاً، تحتاج إلى إنشاء إمكانية الوصول إلى قاعدة البيانات مع إمكانيات الاتصال. يمكنك القيام بذلك باستخدام واجهة javax، المتوفرة في مربع الأدوات الاختياري JDBC 2.0. توفر فئة javax.sql.DataSource الخاصة بـ JDBC 2.0 الاتصال الذي تحتاجه.
أين يقع SQL في هذه المرحلة؟ انها في الفول. يمكنك استخدام JDBCcreateStatement وPreparedStatement لإنشاء طريقة في إحدى الحبات. اجعل هذه الطريقة متجهة عامة وقم بتمرير عبارات SQL الخاصة بك إلى هذه الطريقة بشكل صحيح.
ملخص تقوم وحدة قاعدة البيانات الخاصة بك بتنفيذ عبارة SQL مضمنة في نص الإجراء. يمكنك تمرير عبارة إلى عبارة SQL، أو استخدامها لإجراء عملية مسبقة. يمكنك تنفيذ أفعالك من خلال مدير العلامات. نظرًا لأن JDBC مضمن في كود المكتبة، فلن تتمكن من استخدامه بشكل صريح في برنامج JSP.
للوهلة الأولى، قد يبدو هذا الأسلوب أكثر تعقيدًا من SQL المضمن في JDBC، وJDBC المضمن في JSP، ولكن نظرًا لأنك تقوم ببناء عمليات SQL وتخزينها في TLD، فما عليك سوى القيام بها مرة واحدة، في جميع برامج JSP التي يمكنك الوصول إليها هذه العمليات. هذه هي ميزة هذا النهج.
في المرة القادمة، سنتحدث عن نقل البيانات بين صفحات وجلسات JSP.