2010-01-20 9 views
5

के अंदर जावा को संदर्भित करने के लिए सर्वश्रेष्ठ अभ्यास मैं जेएसपी में जावा कोड (मेरे मामले में एक एनम वैल्यू) के संदर्भ में कुछ राय मांग रहा हूं।मेरे जेएसपी

<c:if test="${actionBean.order.status eq 'complete'}">  
    show some stuff 
</c:if> 

अब, 'पूर्ण' मेरी codebase में एक enum के साथ जुड़े एक मूल्य है:

मैं वर्तमान की तरह मेरे JSP में सशर्त तर्क है। क्या मेरे जेएसपी के अंदर enum संदर्भ करना बेहतर होगा? यदि हां, तो कैसे?

मुझे लगता है कि यह एक अच्छी बात हो सकती है क्योंकि: अगर enum बदलता है, तो जेएसपी टूट नहीं जाता है।

क्या जावा कोड को जेएसपी में मिलाकर खराब अभ्यास है? या 'पूर्ण' के मूल्य को डुप्लिकेट करना बदतर है?

अग्रिम धन्यवाद।

उत्तर

1

क्या जावा कोड को जेएसपी में मिलाकर खराब अभ्यास है? या 'पूर्ण' के मूल्य को डुप्लिकेट करना बदतर है?

मेरे राय है कि आप JSPs साथ जावा कोड मिश्रण से बचना चाहिए, भले ही यह प्रतीक/मूल्यों के कुछ सीमित दोहराव का मतलब है।

इस बारे में सोचें: जावा पक्ष पर कई सारे बदलाव किए जा सकते हैं जो जेएसपी को "तोड़" सकते हैं। इस मामले में, उदाहरण के लिए, "एक्शनबीन" का नाम, getOrder() या getStatus() विधियां बदल सकती हैं। या getOrder()null या किसी भिन्न प्रकार का कुछ लौटा सकता है। यदि आप उन सभी चीजों के बारे में चिंतित हैं जो जावा पक्ष में बदल सकते हैं, तो आप टैगलिब्स का उपयोग नहीं कर पाएंगे।

0

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

1

जेएसपी में आप जिस एनम वैल्यू की तुलना कर रहे हैं वह वास्तव में String.valueOf(enum) जैसा ही है और यह डिफ़ॉल्ट रूप से enum नाम से है। तो यदि आप enum का नाम बदलते हैं, तो आपको वास्तव में जेएसपी कोड भी बदलना चाहिए। तो मुझे वास्तविक enum ऑब्जेक्ट के विरुद्ध तुलना करने के लिए कोई लाभ नहीं दिख रहा है। इसे String पर String.valueOf(enum) के साथ भी जोड़ा जाएगा और आप प्रभावी रूप से दो String एस की तुलना एक दूसरे के साथ तुलना करेंगे। बस इसे वैसे ही रखें।

एक JSP फ़ाइल में जावा कोड का संदर्भ के संबंध में:

  • आप preprocess अनुरोध करना चाहते हैं, HttpServlet#doGet() का उपयोग करें।
  • यदि आप पोस्टप्रोसेस अनुरोध करना चाहते हैं, तो HttpServlet#doPost() का उपयोग करें।
  • यदि आप प्रवाह या आउटपुट को नियंत्रित करना चाहते हैं, तो taglibs जैसे JSTL core का उपयोग करें।
  • यदि आप फ़ंक्शंस को आमंत्रित करना चाहते हैं, तो EL functions जैसे JSTL functions का उपयोग करें।

सभी जावा कोड जो है (में) सीधे HttpServlet में संदर्भित अधिक विभाजन हो सकता है:

  • आप फ़िल्टर करना अनुरोध/प्रतिक्रियाओं, एक Filter class का उपयोग करें।
  • यदि आप किसी डेटाबेस से बातचीत करना चाहते हैं, तो DAO class का उपयोग करें।
  • यदि आप डेटा स्टोर/ट्रांसफर/एक्सेस करना चाहते हैं, तो Javabean (DTO) class का उपयोग करें।
  • यदि आप व्यवसाय तर्क निष्पादित करना चाहते हैं, तो एक डोमेन (बीओ) वर्ग (रणनीति पैटर्न पर विचार करें) का उपयोग करें।
  • यदि आप पुन: प्रयोज्य स्थिर उपकरण का उपयोग/उपयोग करना चाहते हैं, तो उपयोगिता वर्ग (अंतिम श्रेणी, निजी निर्माता) का उपयोग करें।