2010-03-22 11 views
5

मैं reading this page था और मैं निम्नलिखित बयान पाया:जावा बीन्स में व्यापार तर्क रखें?

Java सर्वर पेजेज़

अब जब हम एक सुविधाजनक architucture दृश्य अलग करने के लिए है में MVC, कैसे हम उस का लाभ उठाने कर सकते हैं? जावा सर्वर पन्ने (जेएसपी) अधिक दिलचस्प बन जाता है क्योंकि HTML सामग्री जावा व्यवसाय ऑब्जेक्ट से अलग हो सकती है। जेएसपी जावा बीन्स का भी उपयोग कर सकता है। जावा बीन्स के अंदर व्यापार तर्क रखा जा सकता है। यदि डिज़ाइन सही ढंग से आर्किटेक्टेड है, तो वेब डिज़ाइनर जेएसपी साइट पर HTML के साथ काम कर सकता है बिना जावा डेवलपर के साथ हस्तक्षेप किए।

दिलचस्प बात यह है मेरी पाठ्यपुस्तक में मैं निम्नलिखित उद्धरण खींच लिया:

MVC वास्तुकला में ... मूल अनुरोध हमेशा एक सर्वलेट द्वारा नियंत्रित किया जाता। सर्वलेट व्यापार तर्क और डेटा एक्सेस कोड का आह्वान करता है और परिणामों का प्रतिनिधित्व करने के लिए सेम बनाता है (वह मॉडल है)। फिर, सर्वलेट तय करता है कि कौन सा जावा सर्वर पृष्ठ उन विशेष परिणामों को प्रस्तुत करने के लिए उपयुक्त है और आगे अनुरोध (जेएसपी दृश्य है)। सर्वलेट तय करता है कि कौन सा व्यवसाय तर्क कोड लागू होता है और जेएसपी परिणाम प्रस्तुत करना चाहिए ( सर्वलेट नियंत्रक है)।

दो कथन थोड़ा विरोधाभासी प्रतीत होते हैं। सेम का उपयोग करने का सबसे अच्छा तरीका क्या है: क्या हमें उनमें व्यावसायिक तर्क रखना चाहिए या क्या हमें केवल उन परिणामों को ही रखना चाहिए? क्या ऐसे तरीके हैं जिनमें मॉडल का प्रतिनिधित्व करने के लिए बीन्स अपर्याप्त हैं?

उत्तर

4

यह प्रबंधक तर्क के लिए कक्षाओं में व्यावसायिक तर्क के लिए भी बहुत आम है। हालांकि कुछ लोग डेटा ऑब्जेक्ट बीन पर व्यवसाय तर्क डालते हैं, लेकिन मुझे यह सबसे अच्छा लगता है जब डेटा ऑब्जेक्ट पर विधियां केवल सरल कार्य करती हैं जो किसी बाहरी निर्भरता पर भरोसा नहीं करती हैं। व्यवसाय के तर्क का पालन करने के लिए मैं कई डेटा ऑब्जेक्ट javabeans और अन्य बाहरी निर्भरताओं का उपयोग करने में सक्षम है, जो एक प्रबंधक बीन में रखे गए सभी व्यवसाय तर्क। तो उदाहरण के लिए एक खाताबीन में खाता फ़ील्ड और शायद कुछ सरल विधियां होंगी जो उन फ़ील्ड का उपयोग गणना करने और मूल्य वापस करने या फ़ील्ड को प्रारूपित करने के लिए करती हैं। सभी व्यवसाय तर्क एक प्रबंधक, संभवतः एक खाता प्रबंधक बन जाएगा।

+0

क्या आपका जेएसपी प्रबंधक बीन का उपयोग करता है या क्या यह केवल मॉडल बीन का उपयोग करता है? – Kiril

+0

आपके विचार की आशा है कि जेएसपी के पीछे स्ट्रैट्स इट्स एंड एक्शन क्लास में कुछ जगहों पर, यह एक सर्वलेट क्लास है, अन्य ढांचे अन्य चीजों का उपयोग करते हैं। उस जावा क्लास में आप अपने डेटा बीन को पास करने, अपडेट करने, जोड़ने, हटाने के लिए प्रबंधक का उपयोग कर सकते हैं। जेएसपी में जितना संभव हो उतना जावा इसे बाहर रखना सबसे अच्छा है, इसलिए मैं वहां केवल दृश्य डेटा जावबीन का उपयोग करता हूं और प्रबंधक को बाहर रखता हूं। –

3

दूसरा कथन मूल रूप से दो जावबीन के बारे में बता रहा है: एक व्यवसाय तर्क के लिए और मॉडल के लिए अन्य। तो, हाँ व्यापारिक तर्क अभी भी जावबीन में रखा जा सकता है। व्यापार तर्क के लिए जावबीन मॉडल के लिए जवाबीन को अपनी संपत्ति के रूप में समाहित कर सकता है।

public class User { 
    private Long id; 
    private String name; 
    // ... 
} 

public class UserManager { 
    private User user; 
    // ... 

    public void login() { 
     // ... 
    } 

    public void logout() { 
     // ... 
    } 
} 
+0

क्या आप किसी भी परिस्थिति के बारे में जानते हैं जहां बीन मॉडल पेश करने के लिए उपयुक्त नहीं हो सकता है? मुझे एक अच्छा उदाहरण रखने के लिए पर्याप्त परिस्थितियों का सामना नहीं हुआ है, लेकिन बीन्स के लिए अनुपयुक्त मॉडल का उदाहरण क्या होगा? – Kiril

+0

इसके अतिरिक्त: जेएसपी में इस्तेमाल किए जाने वाले व्यावसायिक सेम एक मॉडल बीन की तरह ही उपयोग किए जाते हैं? – Kiril

+0

मुझे ऐसी स्थितियां नहीं दिखाई देती हैं जहां एक बीन मॉडल का प्रतिनिधित्व करने के लिए उपयुक्त नहीं हो सकता है। और हाँ, आप इसे उसी तरह जेएसपी में उपयोग कर सकते हैं; गुणों का उपयोग करने के लिए।अनुरोध के आधार पर नियंत्रक द्वारा किए जाने वाले कार्यों को लागू किया जाना है। – BalusC

संबंधित मुद्दे