أپاتشي سترتس

إيمان سعد الدين
ساهم بشكل رئيسي في تحرير هذا المقال
أپاتشي سترتس
Apache Struts
لوجو أپاتشي سترتس
طوره Apache Software Foundation
أحدث إصدار 2.2.1 / 16 أغسطس 2010; منذ 10 سنين (2010-08-16
مكتوب بلغة جاڤا
نظام التشغيل 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 من 3 مكونات مفتاحية :

- 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


انظر أيضا

المصادر

قائمة المراجع

  • 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


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

وصلات خارجية

قالب:Application frameworks