2010-04-04 4 views
8

मैं एक जेएसपी/सर्वलेट वेब ऐप (कोई ढांचा नहीं) विकसित कर रहा हूं। मैं एमवीसी पैटर्न का उपयोग करना चाहता हूं। मैं इस तरह अपने प्रोजेक्ट डिजाइन करने के लिए जा रहा हूँ:एमवीसी पैटर्न का उपयोग कर जेएसपी/सर्वलेट्स वेब ऐप कैसे विकसित करें?

  1. नियंत्रक: एक सर्वलेट कि एक अनुरोध पढ़ता है, मूल्यों के अर्क, मॉडल वस्तुओं के साथ संचार और एक JSP पृष्ठ पर जानकारी देता है।
  2. देखें: जेएसपी पेजेस।
  3. मॉडल: जावा क्लासेस/जावा बीन्स .. आदि

समस्या:Index.jsp अपने वेब साइट में प्रारंभिक बिंदु (डिफ़ॉल्ट पेज) है। इसलिए, Index.jsp अनुरोध को पार्स करने के लिए नियंत्रक बन जाता है। उदाहरण के लिए, निम्न अनुरोध:

index.jsp?section=article&id=10 

निम्नलिखित के रूप में index.jsp में पार्स किया गया है:

<div class="midcol"> 
<!-- Which section? --> 
<%String fileName = request.getParameter("section"); 
if (fileName == null) { 
fileName = "WEB-INF/jspf/frontpage.jsp"; 
} else { 
fileName = "WEB-INF/jspf/" + fileName + ".jsp"; 
} 
%> 
<jsp:include page='<%= fileName%>' /> 
</div> 

यहाँ, मैं एक नियंत्रक होने के लिए सर्वलेट बाध्य नहीं कर सकता, क्योंकि index.jsp नियंत्रक है यहां से यह शुरुआती बिंदु है।

क्या index.jsp से सर्वलेट में अनुरोध अग्रेषित करने का कोई समाधान है और फिर index.jsp पर वापस जाएं? या कोई समाधान जो एमवीसी लक्ष्य प्राप्त करता है - सर्वलेट नियंत्रक होना चाहिए?

मैं डिफ़ॉल्ट के बजाय पृष्ठ index.jsp के रूप में एक FrontPageController सर्वलेट बनाने की सोच रहा हूँ, लेकिन अगर यह एक आदर्श विचार है मैं नहीं जानता?

उत्तर

11

index.jsp से छुटकारा पाएं और बस नियंत्रक सर्वलेट को ब्याज के विशिष्ट url-pattern पर सुनें। नियंत्रक को RequestDispatcher का उपयोग करके ब्याज के जेएसपी पृष्ठ पर अनुरोध अग्रेषित करना चाहिए।

request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 

वैकल्पिक रूप से आप index.jsp आगे जाने या URL नहीं जो नियंत्रक सर्वलेट जो बारी में "डिफ़ॉल्ट" पेज (जो frontpage.jsp हो रहा है) से पता चलता द्वारा कवर किया जाता रीडायरेक्ट कर सकते हैं।

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

घरगुती एमवीसी दृष्टिकोण के संबंध में, आपको this answer और this article भी उपयोगी हो सकता है।

+0

धन्यवाद @ बाल्लूसी। क्या आपके पहले पैराग्राफ का मतलब था कि मेरी वेबसाइट में अगला पृष्ठ एक सर्वलेट होना चाहिए जैसे:/default-servlet? जब कोई मेरी वेबसाइट पर जाता है और केवल डोमेन xyz.com/ दर्ज करता है तो क्या मुझे डिफ़ॉल्ट पृष्ठ "डिफ़ॉल्ट-सर्वलेट" बनाने के लिए कुछ करना चाहिए? – Abdullah

+1

यदि आप असली 'स्वागत-फ़ाइल' चाहते हैं, तो आप 'इंडेक्स' रख सकते हैं।jsp', लेकिन इसके बजाए इसे वांछित डिफ़ॉल्ट पृष्ठ पर अग्रेषित या रीडायरेक्ट करने दें। दुर्भाग्यवश 'स्वागत-फ़ाइल' सर्वलेट नहीं हो सकती है। इस बिंदु को कम से कम स्पष्ट होना चाहिए: जैसा कि आपने जेएसपी में लिखा था नियंत्रक तर्क जेएसपी में नहीं है। यह सर्वलेट में है। – BalusC

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