أپاتشي سترتس
ساهم بشكل رئيسي في تحرير هذا الموضوع |
أپاتشي سترتس Apache Struts | |
---|---|
طوره | Apache Software Foundation |
أحدث إصدار | 2.2.1 / 16 أغسطس 2010 |
مكتوب بلغة | جاڤا |
نظام التشغيل | Cross-platform |
النوع | إطار تطبيق الوب |
الرخصة | رخصة أپاتشي 2.0 |
مسقط وب | http://struts.apache.org/ |
أپاتشي سترتس هوweb application framework مفتوح المصدر يستخدم لتطوير java EE web application. وهويستخدم ال java servlet Avdk pi لتشجيع المطورين لتبني ال MVC.
وسمي Struts لأن هذه البيئة تعني التزويد بالمساعدة غير المرئية invisible underpinning التي تدعم تطوير المشاريع الاحترافية struts تؤمن الرابط بين مكونات متنوعة تحت بيئة
جافا لتشكل منهم وحدة متكاملة
الهدف الأساسي هوجعل المقاييس الموجودة حاليا تسيطر بواسطة إنتاج البتر المفقودة التي
نحتاجها لإنتاج التطبيقات enterprise-grade التيقد يكون من السهل الحفاظ عليها مع مرور
الوقت وهوفي الأصل صمم من قبل craig mcclanahan ومنح ل Apache Foundation في أيار عام ال2000
سابقا كان يتوضع تحت ال Apache Jakarta project ويعهد باسم Jakarta struts واصبح
المشروع الأعلى مستوى بين مشاريع Apache عام ال 2005.
نظرة شاملة عن ال struts والهدف من تصميمه
في ال java EE web application القياسية الزبون يرسل معلومات إلى ال server عبر
قابلة التطبيق وهذه المعلومات تسلم إلى ال java servlet الذي يعالجها ويتفاعل مع
قواعد المعطيات وينتج الرد بصيفة HTML أوتعطى لصفحة Java sever pages وهي تعبير عن
مزيج من كود JAVA, HTML
كلا الطريقتين السابقتين تعتبر غير كافية لتطبيق المشاريع الكبيرة لأنها تخلط منطقية
المشروع مع العرض وتجعل الصيانة صعبة
الهدف من ال struts هوفصل ال model (منطق المشروع الذي يتعامل مع قواعد المعطيات )
عن ال view (صفحات ال HTML التي تعرض للمستخدم ) وال CONTROLLER ( النموذج الذي
يمرر المعلومات بين ا لmodel وال view ) Struts
تؤمن ل controller (servlet يسمى ب actionservlet) وكذلك تسهل كتابة قوالب لطبقة
العرض والإظهار (نموذجيا بلغة jps , ولكن لغة xml/xsltوvelocity أيضا مدعومة )
ال web application مسؤول عن كتابة ال model وعن تكوين ملف تشكيلة رمزي (central configuration file) يدعى stuts –config.xml الذي يربط بين ال view,model,controller معا
طلب المستخدم يرسل إلى ال controller بصيغة action معهد في ملف التشكيلة , وإذا
استقبل ال controller طلب من هذا الشكل يستدعي ال action Class المناسب الذي يتفاعل
مع جزء model code المناسب من التطبيق
ال model code يعيد Action forward وهي تعبير عن string تخبر ال controller أي
صفحة إ ظهار يجب إرسالها للمستخدم .
المعلومات تمرر بين ال model وال view على شكل صيغة خاصة من ال javaBeans . Custom tag library
تسمح بالقراءة والكتابة لمحتويات هذه ال beans من طبقة العرض بدون الحاجة لأي سطر java code .
وتحتوي أيضا على آلية لتشكيل القوالب تدعى tiles والتي تسمح _على سبيل المثال _ لطبقة
العرض بأن تتكون من header وfooter ومحتويات الصفحة بحيث تكون هذه المكونات جميعها
مستقلة بعضها عن بعض .
بنية ال struts :
يتكون ال struts من ثلاثة مكونات مفتاحية :
- Request handler والذي يطلب من مطور المشروع , ويستخدم لتصفح url الخاص2
- Response handlerالذي يستخدم لنقل التحكم لمورد آخرقد يكون مسؤول عن إكمال
الطلب
- Tag library والتي تساعد المطورين من إنتاج مشاريع معتمدة على القابلات
التفاعلية مع صفحات السيرفر
وال struts تتكون تقريبا من 300 صف وقابلة مرتبين ب 12 packages برفقة الخدمات
والصفوف المساعدة وهذه البنية تؤمن الصفوف والقابلات للتعامل مع ال controller وال presentation
بمساعدة custom type libraries
the struts controller components
عندما يطلب مستخدم شيئا ما يتحول الطلب إلى struts action servlet الذي يعترض ال url
ويعتمد على ال struts configuration files ويعطى لل action class . Action class
هوجزء من ال controller المسؤول عن الاتصال مع طبقة ال model . The struts view component
وهوالمسؤول عن معلومات العرض للمستخدم ويستقبل منه المدخلات وهومسؤول عن إظهار
المعلومات المزودة من قبل ال model
غالبا ما نستخدم ال jsp لعرض الإظهار , ولزيادة القدرة الإظهارية نستطيع استخدام custom tags,java script
The struts model component
الذي يؤمن ال business logic والتعامل مع قواعد الممطيات أوأنظمة ال back-ends
وهوفي الغالب صف جافا ,ولا يوجد صيغة محددة لشكل ال model component هذا يعني
إمكانية استخدام ال java code المكتوب لتطبيق آخر .
علينا اختبار ال model حسب متطلبات الزبون التي لدينا.
إعداد بيئة عمل ال struts
- تنزيل ال JDK : قم بتنزيل ال JDK 1.4 أونسخة أحدث
- تنزيل ال Tomcat :قم بتحميل ال tomcat من مسقط Apache نسخة Jakarta-tomcat-5.0.4
مثلا , ثم قم بتنزيله ,للتأكد من حتى تنزيله قد تم بشكل سليم : افتح مجلد التنزيل /bin وولد تعليمة بدء التشغيل لتشغيل السيرفر ,افتح المتصفح الخاص بك واخط العنوان التالي http://localhost:8080
/ لاختبار السيرفر يفترض أن تظهر صفحة ترحيب
تنزيل تطبيق ال struts : قم بتحميل النسخة الأخيرة من ال struts من المسقط
الرسمي لها http://jakarta.apache.org/struts , قم بفك ضغط الملف في المسار الذي
تريده , ثم قم بنسخ الملفات struts-blank.war,struts-documenatation.war,struts-example.war
من مجلد
"Jakarta-struts-1.1\webapps" إلى مجلد "Jakarta-tomcat-5.0\webapps"
Struts-documentation.war :ويحوي ال API والمستندات الأساسية لتطوير ال struts application . Struts-blank.war : وهوstruts application فارغ ,وهومفيد في البدء بتطبيق struts
معد مسبقا Struts-example.war :وهوتطبيق mail reader demonstration سهل 4
- البدء بتطوير ال struts application الأول : قم بتغيير اسم struts-blank .war
إلى struts-tutorial.war في ال Jakarta –tomcat-5.0.4\webapps ثم انسخ الملف إلى Jakarta-tomcat-5.0.4\webapps Tomcat يقوم تلقائيا بفك ضغط الملف وتحميل التطبيق
==كيف يعمل ال struts== : 1- أي تطبيق تقوم بتطويرهقد يكون له واصف انتشار (deployment descriptor )مثل
WEB-INF/web.xml
وهذا الملف الذي يقرأه ال container ,ويحتوي على معلومات التشكيل التي عهدناها لل
web application الخاص بنا وهذه المعلومات تتضمن ملف ال index وصفحة الترحيب
الافتراضية
وخارطة ال servlet الخاص بنا متضمنا المسار واسم الامتداد وكل المتحولات الابتدائية
والمعلومات المتعلقة بعناصر السياق
في ملف ال WEB-INF/web.xml الخاص بتطبيقات ال sturts نحن بحاجة لأن نصمم ال
struts action servlet الذي يسلم جميع الطلبات الصادرة من المتصفح إلى خريطة المسقط
Struts action servlet هوالعنصر الرئيسي لل controller في ال struts وهذا الservlet يرث من ال httpservlet
وهذا ال SERVLET يؤمن خدمتين أساسيتين :
- عندما يبدأ عمل ال container يقرأ ملف التشكيلة الخاص بال struts ويحمله
للذاكرة بواسطة التابع init()
- يعترض طلبات ال H ttp بواسطة التابعين doGet(),doPost() ويعالجهم بالشكل السليم
2- في ال struts لدينا ملف xml آخر هوملف التشكيلة لل struts ويدعى struts.config.xml واسم هذا الملف قابل للتغيير ويمكن حتى يذكر في ملف web.xml
هذا الملف يتوضع تحت مجلد ال web-inf الخاص بالتطبيق وهذا الملف هوملف xml يصف جميع أجزاء تطبيق ال struts وهذا الملف يحوي معلومات عن عدة أنواع من ال struts ويصف تفاعلاتهم وأعمالهم ,ويستخدم هذا الملف لربط المسارات مع مكونات ال controller الخاص بالتطبيق والتي تعهد ب action path
3- في جميع action يجب تزويد ال struts بأسماء صفحات النتائج التي ستعرض كنتيجة لل action في المشروع الواحد قد تتواجد أكثر من صفحة عرض ,وتعرض حسب نتيجة ال action وال struts يعهد كيف من الممكن أن يوجه الصفحة المناسبة للوجهة السليمة ,وال model المناسب يتم استنادىؤه من قبل المكونات الداخلية لل controller
4- ال action ممكن حتى تتشارك مع ال javabeans في ملف التشكيلة للstruts
5- للإظهار في الstruts نستخدم صفحات ال jsp أوقوالب ال velocity أوصفحات ال HTML ولكن سيئة هذه اللغة أننا لا نستطيع الاستفادة من الميزات الكاملة للأدوات المرفقة مع البيئة
ويوجد أيضا مجموعة من ال custom tag library والتي تسهل إنشاء قابلات تفاعلية بشكل أنيق مع الaction form beans
ال struts jsp taglibs تملك عددا من ال tags التي تمكننا من التعامل مع المعطيات الديناميكية في الإظهار وهذه ال tags تمكننا من التفاعل مع ال controller بدون كتابة الكثير من سطور الجافا .
تنافس بنى ال mvc
على الرغم من حتى ال struts موثقة بشكل جيد وناضجة وتعتبر بنية معروفة لبناء front ends لتطبيقات الجافا لكنها الآن تقابل تحديات جديدة من بنى جديدة وخفيفة الوزن مثل tapestry,spring mvc,stripes
مقاييس ال xform والبنى الجديدة قد تصبح خيار آخر لبناء مصداقية قابلات التطبيق المعقدة مع ال struts في المستقبل
بنى ال webwork صممت باستخدام apache struts لعدة سنوات مضت طموحا لتقديم الزيادة والتحسين مع ثبات نفس البنية العامة لل struts الأصلي .
وقد تم الإعلان عن إعادة دمج ال struts مع ال webwork في كانون الأول عام 2005
webwork2.2 اعتمدت ك struts2 التي بلغت إصدارها الكامل في شباط 2007
مؤخرا قدمت شركة sun إضافات جديدة ل java plat form تدعى java server faces , بالإضافة إلى البنية الأساسية قدم
إلى غير ذلك نرى حتى ال apache struts project يقدم نسختين رئيسيتين من بنية ال struts :
- struts1 :وتعتبر ال web application framework الأكثر انتشارا للجافا ,وهذه النسخة تعتبر كاملة ,موثقة بشكل جيد ومدعومة بشكل كبير , وتعتبر الخيار الأمثل للذين يفضلون الحلول الأكيدة للمشاكل العامة
- struts2 :وبشكل عام تعهد ب web work2 .بعد العمل بشكل منفصل لعدة سنوات تم الدمج بين بين ال webwork وال struts communities ليقدموا ال struts 2 والذي يعتبر الخيار الأمثل للذين يفضلون الحلول الأنيقة للمشاكل الصعبة
بنى mvc آخرى لا تعتمد على j2EE:
castle monorail for Asp.Net ,TurboGears,Catalyst,Django,WebObject, Ruby on Rails ,SYmfony (for php)cakephp
وأيضا struts4php وهي نسخة من ال struts مخصصة لل php
انظر أيضا
- Model-view-controller
- مشروع جاكرتا
- Java EE
- JavaServer Faces
- Stripes
- Comparison of web application frameworks
- ZK Framework
المصادر
قائمة المراجع
- James Holmes: Struts: The Complete Reference, McGraw-Hill Osborne Media, ISBN 0-07-223131-9
- Bill Dudney and Jonathan Lehr: Jakarta Pitfalls, Wiley, ISBN 978-0-471-44915-7
- Bill Siggelkow: Jakarta Struts Cookbook, O'Reilly, ISBN 0-596-00771-X
- James Goodwill, Richard Hightower: Professional Jakarta Struts, Wrox Press, ISBN 0-7645-4437-3
- John Carnell and Rob Harrop: Pro Jakarta Struts, Second Edition, Apress, ISBN 1-59059-228-X
- John Carnell, Jeff Linwood and Maciej Zawadzki: Professional Struts Applications: Building Web Sites with Struts, ObjectRelationalBridge, Lucene, and Velocity, Apress, ISBN 1-59059-255-7
- Ted Husted, etc: Struts in Action, Manning Publications Company, ISBN 1-930110-50-2
- Struts View Assembly and Validation, (PDF format).
- Stephan Wiesner: Learning Jakarta Struts 1.2, Packt Publishing, 2005 ISBN 1-904811-54-X
وصلات خارجية
- Official website
- Struts 2 Plugin Registry
- Struts2 Tutorial
- Struts tutorial on JBoss
- How to Test Struts 2 Actions Without a Container
نطقب:Application frameworks