2012-03-17 17 views
8

मेरे पास एक सर्वलेट नाम एडिटवेन्ट और एक जेएसपी है जिसमें दो रूप हैं। नई घटना जोड़ने के लिए, दूसरा एक घटना को हटाने के लिए है।एकाधिक पोस्ट अनुरोधों को संभालने वाला सर्वलेट

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

चियर्स

उत्तर

10

ही सर्वलेट द्वारा कई अनुरोधों को संभालने के लिए आप 'कार्रवाई' की तरह एक अनुरोध पैरामीटर के लिए एक अनुबंध करना है। फिर अपने रूपों में इसे 'एडीडी' और 'रिमूव' जैसे मानों के साथ छिपे हुए फ़ील्ड के रूप में जोड़ें। तो, doPost() में आप इस पैरामीटर मान को देख सकते हैं और उसी सर्लेट में संबंधित हैंडलिंग विधियों का आह्वान कर सकते हैं।

class YourServlet extends HttpServlet{ 

     public void doPost(HttpReq req, HttpResp resp){ 
       String action = reg.getParameter('ACTION'); 
       if('ADD'.equals(action)){ 
        addEvent(); 
       } 
       if('REMOVE'.equals(action)){ 
        removeEvent() 
       } else { 
        defaultAction(); 
       } 
     } 

} 
+0

छिपे हुए क्षेत्र का उपयोग करने का चालाक विचार। –

+2

छुपा हुआ क्षेत्र अनावश्यक है। बस दबाए गए बटन के नाम का प्रयोग करें। मैंने सोचा कि यह स्पष्ट/छोटा था, लेकिन स्पष्ट रूप से नहीं, इसलिए मैंने HTML के उदाहरण के साथ अपना जवाब संपादित किया। – BalusC

9

यह अपने सभी विकल्प है। यह वर्तमान और भविष्य की कार्यात्मक आवश्यकताओं पर निर्भर करता है।

if (request.getParameter("add") != null) { 
    // Perform add. 
} 
else if (request.getParameter("remove") != null) { 
    // Perform remove. 
} 

यह सोचते हैं कि बटन इस तरह दिखेगा:

<input type="submit" name="add" value="Add" /> 
<input type="submit" name="remove" value="Remove" /> 

एक जटिल विकल्प है एक सामान्य विकल्प सिर्फ सर्वलेट में एक या दो if ब्लॉक लागू करने के लिए जिसमें आप की जाँच जो बटन दबाया गया है एक सामान्य एमवीसी ढांचे पर कदम उठाने के लिए जहां आपको केवल विशिष्ट क्रिया विधियों को निर्दिष्ट करना होगा। उदाहरण के लिए, JSF के लिए:

<h:commandButton value="Add" action="#{bean.add}" /> 
<h:commandButton value="Remove" action="#{bean.remove}" /> 
संबंधित मुद्दे