2010-08-18 9 views
6

मुझे अपने जावा एप्लिकेशन सर्वर के साथ मल्टीपार्ट/फॉर्म-डेटा अनुरोधों से निपटने में बहुत कठिन समय है। जो मैंने पाया है, से सर्वलेट 3.0 विनिर्देश HttpServletRequest.getParts() जैसी विधियां प्रदान करता है, जो मेरे सर्वलेट पर अपलोड किए गए फॉर्म डेटा को प्रोसेस करने के लिए आदर्श होगा।मैं अपने जावा सर्वलेट में मल्टीपार्ट/फॉर्म-डेटा POST अनुरोधों को कैसे प्रबंधित कर सकता हूं?

हालांकि, यह विधि 3.0 सर्वलेट विनिर्देश का हिस्सा है, और मेरा एप्लिकेशन सर्वर (टॉमकैट 6) अभी तक इसका समर्थन नहीं करता है। यहां तक ​​कि एक वैध 3.0 web.xml फ़ाइल और जावा ईई 6 libs के साथ, मैं निम्नलिखित अपवाद है जब getParts कॉल करने के लिए (कोशिश कर) मिलती है:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection; 

स्विचिंग आवेदन सर्वर वास्तव में इस परियोजना के लिए एक व्यवहार्य विकल्प नहीं है। क्या जावा सर्वलेट्स के भीतर मल्टीपार्ट/फॉर्म-डेटा प्रोसेसिंग के लिए कोई तीसरी पार्टी लाइब्रेरी उपलब्ध है?

+2

तुम सिर्फ जावा ईई 6 libs के खिलाफ संकलन नहीं कर सकते हैं और यह बिलाव 6 के साथ काम करने की उम्मीद - जावा ईई 6 libs केवल इंटरफेस प्रदान करते हैं, तो आपको एक अनुप्रयोग सर्वर की जरूरत है कि वास्तव में उन इंटरफेस लागू करता है। – Jesper

उत्तर

11

Apache Commons Fileupload देखें। यह आपको एक मल्टीपार्ट अनुरोध को पार्स करने के लिए एक प्रोग्रामेटिक एपीआई देता है, और इसके हिस्सों के माध्यम से अलग-अलग होता है।

मैंने इसे अतीत में सीधे मल्टीपार्ट प्रोसेसिंग के लिए उपयोग किया है और यह अत्यधिक जटिल होने के बिना नौकरी ठीक है।

+0

हां! मुझे ठीक इसी की आवश्यकता थी। –

5

Tomcat 6 does not and will not support Servlet Specification 3.0। आपको टॉमकैट 7 पर ऐसा करने का प्रयास करना चाहिए, लेकिन मुझे सच में यकीन नहीं है कि यह कार्यक्षमता वर्तमान में उपलब्ध बीटा रिलीज में मौजूद है या नहीं। यद्यपि उत्पादन रिलीज में कार्यक्षमता मौजूद होने की उम्मीद है।

आप अन्य जवाब में पोस्ट की तरह अपाचे कॉमन्स फ़ाइल अपलोड का उपयोग जारी रख सकते हैं, या आप ग्लासफ़िश का उपयोग कर सकते हैं (वर्तमान चरण और आपके प्रोजेक्ट के प्रकार के आधार पर)।

1

जब हम डेटा की तुलना में पोस्ट विधि का उपयोग करते हैं तो एन्क्रिप्ट किया जाता है, इसलिए हमें अनुरोध डेटा प्राप्त करने के लिए servletfileupload का उपयोग करना होगा और FileItemIterator का उपयोग करके हम सभी फॉर्म डेटा प्राप्त कर सकते हैं।

मैं पहले से ही इस लिंक पर जवाब देने के How to process a form sent Google Web Toolkit in a servlet

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