2011-11-04 19 views
8

मैं स्ट्रैट्स 2 का उपयोग कर रहा था, लेकिन कुछ कारणों से मैं स्ट्रैट्स 1 (पीछे) स्थानांतरित कर रहा हूं। मैं प्रोग्रामिक लाभप्रदताओं और सामान्य प्रवाहों के बारे में उनके बीच प्रमुख अंतर जानना चाहता हूं।स्ट्रूट्स 1 और स्ट्रूट्स 2 के बीच अंतर?

+0

काश तुम संदर्भ के माध्यम से जाने http://www.ollahero.com/2011/09/15/struts1-vs-struts2/ http://www.java-samples.com/showtutorial .php? tutorialid = 200 –

+3

मुझे उम्मीद है कि आप स्ट्रूट्स 1 पर वापस जाने का एकमात्र कारण यह है कि आपकी कंपनी आपको बना रही है - वहां कोई * तरीका नहीं है जिसमें तकनीकी/उत्पादकता दृष्टिकोण से यह एक पसंदीदा विकल्प है। –

+0

@ डेव न्यूटन आपके साथ सहमत हैं क्योंकि मैं स्ट्रैट्स 1 से struts2 के लिए जाने का कारण देख सकता हूं लेकिन इसके विपरीत नहीं। –

उत्तर

2

Here एक त्वरित और पूर्ण उत्तर है। दूसरे शब्दों में, यदि आप, Struts भूल सकता है और केवल struts2 का उपयोग करें ...

1

क्या कारण हैं जो आपको स्ट्रूट 1 पर वापस जाने के लिए मजबूर कर रहे हैं जो सक्रिय विकास में अब और नहीं है?

हो सकता है कुछ एक मतभेदों के बारे में अपने कारणों को हल करने में मदद कर सकते हैं यहाँ आप निम्नलिखित धागा Struts2 Vs Struts1

मैं भी आप अधिक जानकारी के लिए एसओ खोज करने के लिए सुझाव है के माध्यम से जाना। मुझे पता है कि स्ट्रूट 2 डिज़ाइन और वर्कफ़्लो स्ट्रैट्स 1 से अलग है और इसे खाते में भी ले लिया गया है, जो कि स्ट्रैट्स 1 की सीमाएं भी हैं।

11

हमें struts 1.x के बीच घटक और कार्यात्मक अंतर देखते हैं और 2.x struts

In struts 1.x front controller is ActionServlet 
    In 2.x front controller is FilterDispatcher 

In struts 1.x we have RequestProcessor class 
    In 2.x we have Interceptors instead RequestProcessor will see about this concept later just remember as of now 

In struts 1.x we have multiple tag libraries like, html, logic, bean..etc 
    In 2.x we do not have multiple libraries, instead we have single library which includes all tags 

In struts 1.x the configuration fine name can be [any name].xml and we used to place in web-inf folder 
    In 2.x the configuration file must be struts.xml only and this must be in classes folder 

In struts 1.x we have form beans and Action classes separately 
    In 2.x form bean, Action classes are combinedly given as Action class only, of course we can take separately if we want ;) 

In struts 1.x properties file must be configured in struts-config.xml 
    But in 2.x we need to configure our resource bundle(s) in struts.properties file 

In struts 1.x we have programmatic and declarative validations only 
    In 2.x we have annotations support too along with programmatic and declarative validations 

कार्यात्मक अंतर

Struts के रचनाकारों द्वारा Struts 1 और 2 की
In struts 1.x declarative validations are done by using validation frame work 
    In 2.x, declarative validations are done by using xwork2 frame work by webwork the reason being, its support valuations through Annotations 

In struts 1.x an Action class is a single ton class, so Action class object is not a thread safe, as a programmer we need to make it as thread safe by applying synchronization 
    In 2.x an Action class object will be created for each request, so it is by default thread safe, so we no need to take care about safety issues here 

In struts 1.x we have only jsp as a view technology 
    In 2.x we have support of multiple view technologies like velocity, Freemarker, jasper reports, jsp bla bla 

In struts 1.x Action class is having servlet dependency, because in execute() method accepts req, res parameter right ! so. 
    In 2.x Action class doesn’t have any servlet dependency, because its execute() method doesn’t accepts any parameters, however we can access all servlet objects with dependency injection 
2

तुलना (Apache सॉफ्टवेयर फाउंडेशन)

Comparing Struts 1 and Struts 2

उपर्युक्त लिंक पर उपलब्ध सामग्री यहां दी गई है, अगर वे लिंक को बदलने या भविष्य में पृष्ठ को हटाने का निर्णय लेते हैं।

  1. कार्रवाई कक्षा

    • Struts 1
      कार्रवाई कक्षाएं आवश्यक है एक सार आधार वर्ग का विस्तार करने के। स्ट्रूट्स 1 में एक आम समस्या इंटरफेस के बजाय अमूर्त कक्षाओं में प्रोग्रामिंग कर रही है।
    • स्ट्रूट 2
      क्रिया वैकल्पिक और कस्टम सेवाओं को सक्षम करने के लिए अन्य इंटरफेस के साथ एक एक्शन इंटरफ़ेस लागू कर सकती है। स्ट्रूट्स 2 आमतौर पर प्रयुक्त इंटरफेस को लागू करने के लिए बेस एक्शनस्पोर्ट क्लास प्रदान करता है। हालांकि, एक्शन इंटरफ़ेस आवश्यक नहीं है। निष्पादित हस्ताक्षर वाले किसी भी POJO ऑब्जेक्ट को स्ट्रूट्स 2 एक्शन ऑब्जेक्ट के रूप में उपयोग किया जा सकता है।
  2. थ्रेडिंग मॉडल

    • Struts 1
      क्रिया एकमात्र कर रहे हैं और धागा होने चाहिए के बाद से वहाँ केवल कि कार्रवाई के लिए सभी अनुरोधों को संभालने के लिए एक वर्ग का एक उदाहरण होगा। सिंगलटन रणनीति स्ट्रैट्स 1 क्रियाओं के साथ क्या किया जा सकता है, इस पर प्रतिबंध लगाता है और इसे विकसित करने के लिए अतिरिक्त देखभाल की आवश्यकता होती है। कार्य संसाधन थ्रेड-सुरक्षित या सिंक्रनाइज़ होना चाहिए।
    • Struts 2
      कार्रवाई वस्तुओं प्रत्येक अनुरोध के लिए instantiated कर रहे हैं, इसलिए कोई धागे की सुरक्षा के मुद्दों कर रहे हैं। (व्यवहार में, सर्वलेट कंटेनर अनुरोध के अनुसार कई थ्रो-दूर की वस्तुओं को उत्पन्न, और एक और वस्तु निष्पादन दंड या प्रभाव कचरा संग्रहण लागू नहीं करता।)
  3. सर्वलेट निर्भरता

    • स्ट्रेट्स 1
      क्रियाओं में सर्वलेट एपीआई पर निर्भरता है क्योंकि HttpServletRequest और HttpServletResponse को क्रिया लागू होने पर निष्पादन विधि में पास किया जाता है।
    • स्ट्रूट 2
      क्रियाएं एक कंटेनर के साथ नहीं हैं। अक्सर सर्वलेट संदर्भों को सरल मानचित्र के रूप में दर्शाया जाता है, जिससे अलगाव में क्रियाओं का परीक्षण किया जा सकता है। यदि आवश्यक हो तो स्ट्रूट 2 क्रियाएं मूल अनुरोध और प्रतिक्रिया तक पहुंच सकती हैं। हालांकि, अन्य वास्तुकला तत्व सीधे HttpServetRequest या HttpServletResponse तक पहुंचने की आवश्यकता को कम या खत्म कर देते हैं।
  4. Testability

    • Struts 1
      एक बड़ी बाधा परीक्षण करने के Struts 1 कार्यवाहियां निष्पादित विधि सर्वलेट एपीआई को उजागर करता है। एक तृतीय पक्ष एक्सटेंशन, स्ट्रूट्स टेस्टकेस स्ट्रैट्स के लिए नकली ऑब्जेक्ट का एक सेट प्रदान करता है।
    • स्ट्रूट 2
      इंटरसेप्टर स्टैक्स के माध्यम से प्रति कार्य आधार पर विभिन्न जीवन-वस्तुएं बनाने का समर्थन करता है। कस्टम स्टैक्स को आवश्यकतानुसार विभिन्न क्रियाओं के साथ बनाया और इस्तेमाल किया जा सकता है।
      स्ट्रेट्स 2 क्रियाओं को क्रिया, त्वरित गुणों और आविष्कार विधियों को तुरंत चालू करके परीक्षण किया जा सकता है। निर्भरता इंजेक्शन समर्थन भी परीक्षण को आसान बनाता है।
  5. फसल काटने वाले इनपुट

    • Struts 1
      इनपुट पर कब्जा करने के ActionForm वस्तु का उपयोग करता है। क्रियाओं की तरह, सभी एक्शनफॉर्मों को बेस क्लास का विस्तार करना होगा। चूंकि अन्य जावाबीन एक्शनफॉर्म के रूप में उपयोग नहीं किए जा सकते हैं, डेवलपर्स अक्सर इनपुट कैप्चर करने के लिए अनावश्यक कक्षाएं बनाते हैं। डायनाबीन पारंपरिक एक्शनफॉर्म कक्षाएं बनाने के विकल्प के रूप में उपयोग किया जा सकता है, लेकिन यहां भी, डेवलपर्स मौजूदा जावाबीन का पुन: वर्णन कर सकते हैं।
    • Struts 2
      , इनपुट गुण के रूप में कार्रवाई गुण का उपयोग करता है गुण object.Input एक दूसरे इनपुट के लिए की जरूरत अमीर वस्तु प्रकार जो अपने ही गुण हो सकता है हो सकता है को नष्ट करने। एक्शन गुणों को टैगलिब्स के माध्यम से वेब पेज से एक्सेस किया जा सकता है। स्ट्रूट्स 2 एक्शनफॉर्म पैटर्न, साथ ही पीओजेओ फॉर्म ऑब्जेक्ट्स और पीओजेओ एक्शन का भी समर्थन करता है। व्यापार या डोमेन ऑब्जेक्ट्स सहित समृद्ध ऑब्जेक्ट प्रकारों को इनपुट/आउटपुट ऑब्जेक्ट्स के रूप में उपयोग किया जा सकता है। ModelDriven सुविधा POJO इनपुट ऑब्जेक्ट्स के टैगलब संदर्भ को सरल बनाता है।
  6. अभिव्यक्ति बोली
    • Struts 1
      JSTL के साथ एकीकृत करता है, तो यह JSTL ईएल उपयोग करता है। ईएल में मूल ऑब्जेक्ट ग्राफ़ ट्रैवर्सल है, लेकिन अपेक्षाकृत कमजोर संग्रह और अनुक्रमित संपत्ति समर्थन है।
    • Struts 2
      JSTL उपयोग कर सकते हैं, लेकिन ढांचा भी एक अधिक शक्तिशाली और लचीला अभिव्यक्ति "वस्तु ग्राफ संकेतन भाषा" (OGNL) कहा जाता है भाषा का समर्थन करता है।
  7. दृश्य
    • Struts 1
      में बाध्यकारी मान पहुँच के लिए पेज संदर्भ में वस्तुओं बंधन के लिए मानक JSP तंत्र का उपयोग करता है।
    • स्ट्रूट्स 2
      एक "वैल्यूस्टैक" तकनीक का उपयोग करता है ताकि टैगलिब ऑब्जेक्ट प्रकार को आपके दृश्य को जोड़कर मूल्यों तक पहुंच सकें। वैल्यूस्टैक रणनीति उन प्रकारों के विचारों का पुन: उपयोग करने की अनुमति देती है, जिनके पास समान संपत्ति का नाम हो सकता है लेकिन विभिन्न संपत्ति प्रकार हो सकते हैं।
  8. प्रकार रूपांतरण
    • Struts 1
      ActionForm गुण आम तौर पर सभी स्ट्रिंग्स हैं। स्ट्रूट्स 1 टाइप रूपांतरण के लिए कॉमन्स-बीनटिल का उपयोग करता है। कन्वर्टर्स प्रति-वर्ग हैं, और प्रति उदाहरण कॉन्फ़िगर करने योग्य नहीं हैं।
    • स्ट्रूट 2
      टाइप रूपांतरण के लिए ओजीएनएल का उपयोग करता है। ढांचे में बुनियादी और सामान्य वस्तु प्रकारों और प्राइमेटिव के लिए कन्वर्टर्स शामिल हैं।
  9. मान्यता
    • Struts 1
      , या कॉमन्स सत्यापनकर्ता के लिए एक विस्तार के माध्यम से ActionForm पर एक मान्य विधि के माध्यम से मार्गदर्शन सत्यापन समर्थन करता है। कक्षाओं में एक ही कक्षा के लिए अलग-अलग सत्यापन संदर्भ हो सकते हैं, लेकिन उप-वस्तुओं पर सत्यापन के लिए श्रृंखला नहीं बना सकते हैं।
    • स्ट्रूट 2
      मान्य विधि और एक्सवर्क्स सत्यापन ढांचे के माध्यम से मैन्युअल सत्यापन का समर्थन करता है। एक्सवर्क वैलिडेशन फ्रेमवर्क गुण वर्ग प्रकार और सत्यापन संदर्भ के लिए परिभाषित मान्यताओं का उपयोग करके उप-गुणों में चेनिंग सत्यापन का समर्थन करता है।
      कार्रवाई निष्पादन
      • Struts 1
        के
    • नियंत्रण प्रत्येक मॉड्यूल के लिए अलग अनुरोध प्रोसेसर (lifecycles) का समर्थन करता है, लेकिन मॉड्यूल के सारे क्रिया एक ही जीवन चक्र साझा करना होगा।
    • स्ट्रूट 2
      इंटरसेप्टर स्टैक्स के माध्यम से प्रति कार्य आधार पर विभिन्न जीवन चक्र बनाने का समर्थन करता है। कस्टम स्टैक्स को आवश्यकतानुसार विभिन्न क्रियाओं के साथ बनाया और इस्तेमाल किया जा सकता है।