Action Element Syntax in JSP

Action Element Syntax in JSP – हालांकि हम हमारे JSP Page में पिछले Chapter में Discuss किए गए विभिन्न प्रकार के Scriptlets, ExpressionsDeclaration Elements का प्रयोग करते हुए Java Codes को Use कर सकते हैं लेकिन इन Elements का प्रयोग करते हुए जब हम कोई JSP Page Create करते हैं, तो Presentation Layer में Java Code को Specify करते हुए हम Implementation Layer को Mix कर देते हैं, जिससे न केवल JSP Page को Manage व Maintain करना कठिन हो जाता है बल्कि हम Presentation Layer में Specify किए गए Java Codes को फिर से Reuse भी नहीं कर सकते। इसलिए ReusabilityEasy Maintainability की सुविधा प्राप्त करने हेतु Java Developers ने JSP Bean Actions नाम के Concept को Develop किया। जिसके परिणामस्वरूप JavaBeans के Codes को Component Model के अन्तर्गत बार-बार Reuse किया जाना सम्भव हो सका।

इनके अलावा Java Developers ने pageinclude Directives को भी Define किया, जिससे Create किए गए JSP Pages के माध्‍यम से Underlying Java Programs में भी Changes किया जाना सम्भव हो गया क्‍योंकि JSP Page भी जब JSP Engine पर Parse होते हैं, तो वे एक प्रकार से Servlet Program में Convert होने के बाद ही JVM पर Run होते हैं।

अत: हम किसी भी JSP Page को एक प्रकार का Servlet भी कह सकते हैं, जो कि Java Programming Codes के माध्‍यम से Webpage व Web Application Develop करने से सम्बंधित विभिन्न प्रकार की सुविधाऐं Provide करते है।

Action Element Syntax

Action Element, Scripting Elements की तुलना में एकदम भिन्न होते हैं, क्‍योंकि Action Element के लिए केवल एक ही Syntax होता है और ये Syntax भी निम्नानुसार XML Standard को Follow करता है-

        Syntax:                 <jsp:action_name />

Action Elements वास्तव में Predefined Functions होते हैं और JSP Specification के साथ भी हमें बहुत सारे Built-In Functions प्राप्त होते हैं, जिन्हें हम अपने JSP Page में Directly Use करते हुए Specific Type की Requirements को पूरा कर सकते हैं। जबकि jsp:taglib Directive का प्रयोग करते हुए हम हमारे स्वयं के Custom Tags भी Create कर सकते हैं, जो कि हमारे Application Specific Requirements को पूरा करने में सक्षम होते हैं।

Action Element का प्रयोग करके हम out Stream को भी Modify कर सकते हैं। साथ ही हम हमारी जरूरत के अनुसार अपने Application Specific अन्‍य प्रकार के Objects को भी Create व Use कर सकते हैं। Action Element का एक और Interesting Feature ये है कि JSP Page का request Object अपने Actions को Directly उपयोग में ले सकता है, जिसके लिए किसी अन्‍य Extra Syntax की जरूरत नहीं होती।

XML Standard को Follow करने की वजह से Action Element के साथ Attributes को भी Specify किया जा सकता है। जबकि अन्‍य JSP Element के साथ हम किसी Attribute को Specify नहीं करते। Attributes किसी Action Element Tag का एक महत्वपूर्ण Part होते हैं, जिन्हें निम्नानुसार Specify किया जाता है-

        Syntax:                 <jsp:action_name attribute=”value” />

Action Element के साथ Attribute के रूप में सामान्यत: idscope नाम के दो अन्‍य Special Attributes को उपयोग में लिया जाता है, जिनका Description निम्नानुसार है-

id Attribute

इस Attribute का प्रयोग JSP Page पर किसी Specific Action Element को Uniquely Identify करने के लिए किया जाता है। साथ ही ये Attribute, Action को Current JSP Page के अन्दर Reference करने की सुविधा भी Provide करता है।

यदि Action Element किसी Object का Instance Create करता है, तो id Value को PageContext नाम के Implicit Object के माध्‍यम से इस Newly Create होने वाले Instance को Reference करने के लिए Use किया जा सकता है।

scope Attribute

ये Attribute Action Element के Lifecycle को Identify करता है। idscope दोनों Attributes एक दूसरे से Directly Related हैं, जहां scope Attribute उस Object के Life Time को निश्चित करता है, जो किसी Specific id Attribute से Associated होता है।

scope Attribute में हम मूलत: चार Values page, request, session या application में से किसी एक को Set कर सकते हैं जहां इनमें से प्रत्येक Value, JSP Page के एक Implicit Object को ठीक उसी तरह से Refer करता है, जिस तरह से out Object को पिछले Chapter के कुछ Programs में हमने JSP Page पर Output Display करने के लिए print() / println() Method के साथ Refer किया था।

जब हम scope Attribute में Value के रूप में “page” मान Set करते हैं, तो Action Tag द्वारा Instantiate होने वाला Object, page नाम के Implicit Object के साथ Bind हो जाता है। जब हम किसी Action Element को page Scope के साथ Bind करते हैं, तब हम इसे एक One Time Object की तरह Represent कर सकते हैं जो कि हर Separate JSP Page Request के साथ Create होता है और हर नए JSP Page Request के साथ Destroy हो जाता है।

यानी “page” Value से Specified scope Attribute वाले Objects केवल उसी JSP Page के एक Part के रूप में Available होते हैं, जिसने उन Objects को Create किया होता है। जबकि जिन Objects के scope Attribute में page मान Specify किया गया होता है, वे Objects तब Release होते हैं, जब Response को फिर से Request Perform करने वाले Client को Send कर दिया जाता है अथवा Request को किसी अन्‍य Page पर Forward कर दिया गया होता है।

यहां ये बात भी ध्‍यान देने वाली है कि जिन Objects के scope Attribute में page मान Specify किया गया होता है, वे Objects pageContext नाम के Object में Store होते हैं।

request Object के साथ Specified, scope Attribute नाम का Named Object, ServletRequest Object के माध्‍यम से Use होने के लिए Available होता है, जिसे getAttribute() Method द्वारा Access किया जा सकता है।

जिन Objects के scope Attribute में request मान Specify किया गया होता है, वे Objects उन Pages द्वारा Accessible रहते हैं, जो कि समान Request को उसी Page पर Process कर रहे होते हैं जिस पर उन्हें Create किया गया होता है। जब Request Process हो जाता है, तब जो भी Objects, request scope के साथ Specify किए गए होते हैं, वे Release हो जाते हैं।

request” Scope कुछ हद तक “page” Scope के समान ही होता है लेकिन request Scope वाले Objects उन JSP Pages में भी Available व Accessible रहते हैं, जिनमें request Object को Pass किया जाता है। यहां ये बात भी ध्‍यान देने वाली है कि जिन Objects के scope Attribute में page मान Specify किया गया होता है, वे Objects request नाम के Object में Store होते हैं।

जब हम scope Attribute में Value के रूप में session मान Specify करते हैं, तो इस Action Element के साथ Associated Object, Current JSP Page में तब तक Available व Alive रहता है, जब तक हमारे JSP Page का Session Valid रहता है। यानी जिन Objects के scope Attribute में session मान Specify किया गया होता है, वे Objects उन सभी JSP Pages में Accessible रहते हैं, जो समान Session में Available होते हैं।

लेकिन इससे पहले कि हम किसी Object को session Scope के साथ Create करें, ये जरूरी होता है कि JSP Page को page Directive के साथ Create किया गया हो, जो कि JSP Page के Session Aware रहने के लिए जरूरी होता है।

जिन Objects के scope Attribute में session मान Specify किया गया होता है, वे Objects तब Release होते हैं, जब Associated Session का अन्त होता है। यहां ये बात भी ध्‍यान देने वाली है कि जिन Objects के scope Attribute में session मान Specify किया गया होता है, वे Objects session नाम के Object में Store होते हैं और session नाम का ये Named Object भी हमें ServletRequest Object के माध्‍यम से ही Access करने के लिए प्राप्त होता है। इसके मान को हम GetValue() Method द्वारा Retrieve कर सकते हैं।

इसी तरह से जब हम scope Attribute में Value के रूप में application मान Specify करते हैं, तो इस Action Element के साथ Associated Object, Current JSP Page में तब तक Available रहता है, जब तक हमारा Current JSP Web Application या Servlet Alive रहता है और Current Application सामान्यत: तब तक Alive रहता है, जब तक कि jspDestroy() Method को Call नहीं किया जाता, JSP Page या Associated Class Files में Change नहीं किया जाता अथवा JSP Engine को Restart नहीं किया जाता। application नाम का ये Named Object भी हमें ServletContext Object के माध्‍यम से Manipulate करने के लिए उपलब्ध होता है। यहां ये बात भी ध्‍यान देने वाली है कि जिन Objects के scope Attribute में session मान Specify किया गया होता है, वे Objects application नाम के Object में Store होते हैं।