2009-03-13 15 views
5

फ़ाइल में सहेजें, मुझे एक ऐसी साइट बनाने की कोशिश करने का काम सौंपा गया है जो कस्टम HTML टेम्पलेट्स बनाएगा। अनुकूलन उपयोगकर्ता इनपुट पर आधारित अनुकूलित हैं। मैं वर्तमान में बाकी के अंत के लिए टोमकैट/जेएसपी का उपयोग कर रहा हूं। मैं जो करना चाहता हूं वह जेएसपी में सशर्त HTML कोड आउटपुट करने के लिए HTML टेम्पलेट्स बना रहा है, लेकिन उपयोगकर्ता को यह HTML आउटपुट प्रदर्शित करने के बजाय, मैं इस कोड को कई फाइलों में सहेजना चाहता हूं (जिसे तब ज़िपित किया जाएगा और वितरित किया जाएगा छवियों, सीएसएस फाइलों, जेएस फाइलों के साथ उपयोगकर्ता)। मुझे एक नकली कंटेनर बनाने का तरीका पता होना चाहिए जो एक जेएसपी फ़ाइल निष्पादित करेगा (प्रक्रिया में चर शामिल हैं और मूल्यांकन)।जेएसपी आउटपुट कैप्चर करें,

मैं जेएसपी कोड के आउटपुट को रोकने के लिए सर्वर फ़िल्टर का उपयोग करने के बारे में पढ़ता हूं, लेकिन मुझे यकीन नहीं है कि यह काम करेगा क्योंकि ए) मुझे कई HTML फाइलें बनाने की ज़रूरत है और बी) मुझे उपयोगकर्ता को अलग-अलग सामग्री प्रदर्शित करने की आवश्यकता है (यानी) यहां आपकी ज़िप फ़ाइल है, इसे डाउनलोड करें) जेएसपी संसाधित होने के आउटपुट नहीं।

धन्यवाद!

उत्तर

4

यहां एक विचार है। सर्वलेट उपयोग java.net से उपयोगकर्ता से इनपुट स्वीकार करने के लिए एक सर्वलेट बनाएं। JSP पृष्ठ पर इनपुट पास करने और परिणाम प्राप्त करने के लिए HttpURLConnection।

URL urlPage = new URL(url); 
HttpURLConnection conn = (HttpURLConnection)urlPage.openConnection(); 
conn.connect(); 
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

//then loop through lines of webpage with br.readLine(); 

फिर अपने सर्वलेट में आप सभी फ़ाइलें आप खींच ज़िप सकता है और यह उपयोगकर्ता

0

क्यों wget का उपयोग नहीं करते? आप पृष्ठों को वास्तविक कंटेनर में लोड कर सकते हैं और फिर wget का उपयोग कर कंटेनर से जेनरेट किए गए पृष्ठ पुनर्प्राप्त कर सकते हैं।

--input-file=FILE read URLs from file. 

wget में इस विकल्प का उपयोग करते हुए एक फ़ाइल से यूआरएल की एक सूची लेने के लिए और बस के रूप में पाठ ब्राउज़र को देखते-src में प्रदर्शित किया जाएगा आप के लिए उन्हें डाउनलोड करेगा।

भी Windows और लिनक्स के लिए wget उपलब्ध है।

+0

विचार के लिए धन्यवाद, मुझे wget पसंद है, लेकिन यह मेरी आवश्यकताओं के अनुरूप नहीं है –

+0

@ रॉय को ज़िपिंग बिट के साथ क्या करना है ना? – leeand00

+0

@ leeand00 विशेष रूप से नहीं, इस तथ्य के साथ मोरसो कि यह एक जावा पर्यावरण है जिसे कई वातावरण में काम करना है, और हमारे पास एक ही कोडबेस पर काम कर रहे विंडोज़, मैक और लिनक्स डेवलपर्स हैं, इसलिए समाधान को जावा आधारित होना चाहिए –

1

आपके पास एक सर्वलेट हो सकता है जो एक यूआरएल कनेक्शन खोलकर जेएसपी को कॉल करता है और फिर आउटपुट में एक अस्थायी फ़ाइल या बफर में पढ़ता है। इसके बाद यह ज़िप होगा और ज़िप को लिख देगा।

1

मैं सच में यकीन है कि मैं अपने प्रश्न समझ में नहीं कर रहा हूँ करने के लिए वापस, लेकिन मैं इसे एक चाकू ले जाएगा। एक सर्वलेट क्यों नहीं बना सकते हैं और यह निम्नलिखित का उपयोग कर अपने jsp फ़ाइल फोन:


    RequestDispatcher d = getServletContext().getRequestDispatcher(jspName); 
    d.forward(request, response); 

jsp प्रपत्र/उपयोगकर्ता इनपुट मूल्यों के साथ सामने के छोर दिखाने लो। जब फॉर्म पूरा हो जाए, तो फॉर्म जमा करें। उस बिंदु पर जेएसपी सर्वलेट पर संदर्भ वापस कर देगा जहां आप मानों को पार्स कर सकते हैं, यह निर्धारित कर सकते हैं कि कौन सी फाइलें बनाने और उपयोगकर्ता को वापस लौटना है। एक बार जब आप यह निर्धारित कर लें कि आप उपयोगकर्ता को क्या दिखाना चाहते हैं, तो इसे किसी अन्य जेएसपी में फेंक दें और संदर्भ को उस जेएसपी पर पास कर दें।

आप इसे 2 तरीकों से कर सकते हैं। आप अलग-अलग फाइल प्रकारों के लिए एक अलग जेएसपी बना सकते हैं जिन्हें आप वापस करना चाहते हैं और बस उचित कॉल करें। या आप अनुरोध में एम्बेड करके और फिर उन्हें अपने जेएसपी में प्राप्त करके अपने जेएसपी में जो भी संरचनाएं/मूल्य चाहते हैं उसे पास कर सकते हैं। आप इस तथ्य का उपयोग एक जेएसपी बनाने के लिए कर सकते हैं जो पास पैरामीटर (अनुरोध के भीतर एम्बेडेड) के आधार पर उचित जानकारी प्रदर्शित करेगा।

यदि मैं पूरी तरह से आपके प्रश्न के बिंदु को याद करता हूं, तो इस प्रतिक्रिया को हटाने के लिए स्वतंत्र महसूस करें।

संपादित करें: किसी भी तरह से आपको अनुरोध के भीतर अपने मूल्यों को एम्बेड करना होगा।

0

आप कुछ ऐसे हल्के टेम्पलेट इंजनों का उपयोग करने का भी प्रयास कर सकते हैं जिन्हें विशेष रूप से इस तरह के नौकरी के लिए डिजाइन किया गया था। मैंने यही किया जब मैंने समान कार्य किया और कभी पीछे नहीं देखा। उदाहरण के लिए Velocity देखें।

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