2008-09-16 85 views
6

मैं जावा में छोटी वेबसाइट (जेएसपी विचारों के साथ स्प्रिंग एमवीसी) का निर्माण कर रहा हूं और कुछ पुन: प्रयोज्य मॉड्यूल (जैसे "नवीनतम समाचार" सहित) के लिए सबसे अच्छा समाधान खोजने की कोशिश कर रहा हूं। "आने वाले कार्यक्रम"...)।मॉड्यूलर जावा वेब एप्लिकेशन बनाने के लिए सबसे अच्छा तरीका क्या है

तो सवाल यह है: पोर्टल, टाइल्स या कुछ अन्य तकनीक?

उत्तर

4

आप वसंत MVC उपयोग कर रहे हैं, तो मैं Portlets का उपयोग कर की सिफारिश करेंगे:

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

एक portlet नियंत्रक काफी एक सर्वलेट नियंत्रक के रूप में एक ही है, यहाँ है एक सरल उदाहरण है:

@RequestMapping("VIEW") 
@Controller 
public class NewsPortlet { 

    private NewsService newsService; 

    @Autowired 
    public NewsPortlet(NewsService newsService) { 
     this.newsService = newsService; 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public String view(Model model) { 
     model.addAttribute(newsService.getLatests(10)); 
     return "news";   
    } 
} 

यहाँ, एक NewsService स्वचालित रूप से नियंत्रक में इंजेक्शन दिया जाएगा। दृश्य विधि मॉडल में एक सूची वस्तु जोड़ती है, जो जेएसपी में $ {newsList} के रूप में उपलब्ध होगी। स्प्रिंग विधि के वापसी मूल्य के आधार पर news.jsp नामक एक दृश्य की तलाश करेगा। RequestMapping वसंत को बताता है कि यह contoller पोर्टलेट के दृश्य मोड के लिए है।

एक्सएमएल विन्यास केवल जहां दृश्य और नियंत्रकों स्थित हैं निर्दिष्ट करने के लिए की जरूरत है:

<!-- look for controllers and services here --> 
<context:component-scan base-package="com.example.news"/> 

<!-- look for views here --> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/news/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

बस अपने मौजूदा आवेदन में portlets एम्बेड करने के लिए आप चाहते हैं, तो आप इस तरह के eXo के रूप में एक portlet कंटेनर बंडल कर सकते हैं, , , या Apache। यदि आप पोर्टल के सेट के रूप में अपना आवेदन बनाना चाहते हैं, तो आप Liferay Portal जैसे पूर्ण उड़ा पोर्टल समाधान पर विचार करना चाहेंगे।

+0

thnx, क्या आपको स्प्रिंग पोर्टल एमवीसी के साथ कोई अनुभव है? कुछ ट्यूटोरियल, गाइड? शायद एक पोर्टल सर्वर की सिफारिश कर सकते हैं? – moriarty

+0

उन्हें विकसित करना मेरा प्राथमिक काम है इसलिए मेरे पास बहुत अनुभव है। यद्यपि ऑनलाइन बहुत विशिष्ट दस्तावेज नहीं है। आप स्प्रिंग एमवीसी दस्तावेज का पालन करके बहुत दूर हो सकते हैं क्योंकि पोरलेट ढांचा लगभग समान है। Liferay एक अच्छा पोर्टल है, लेकिन आपकी आवश्यकता से अधिक हो सकता है। – pjesi

2

टाइल्स दर्द हो सकता है। पहले जो आया था (यानी कुछ भी नहीं) पर भारी सुधार, बल्कि सीमित है।

Wicket जो भी आप खोज रहे हैं, उतना अधिक हो सकता है, जब तक आप जेएसपी पर बस गए हों।

+0

क्या आप टिप्पणी कर सकते हैं कि "टाइल्स दर्द हो सकता है" क्यों? –

0

Tapestry जावा वेब ऐप फ्रेमवर्क है जो आसानी से पुन: प्रयोज्य घटकों को बनाने पर जोर देता है।

मैंने साइटमैश का उपयोग किया है, और यह मानक शीर्षलेखों और पाद लेखों में पृष्ठों के एक सेट को लपेटने के लिए अच्छा है, लेकिन टेपेस्ट्री उन घटकों को बनाने के लिए बेहतर है जो कई पृष्ठों पर संभवतः प्रति पृष्ठ कई बार उपयोग किए जाते हैं। टेपेस्ट्री घटक अन्य घटकों को पैरामीटर के रूप में ले सकते हैं, जो साइटमैश स्टाइल रैपिंग की अनुमति देता है।

+0

हम्म, टेपेस्ट्री होनहार लग रहा है ... वे अच्छे स्क्रीनकास्ट है ... http://tapestry.apache.org/tapestry5/screencast.html यह बाहर की जाँच करेंगे, एक बहुत thnx। उपयोगी उत्तर के लिए – moriarty

1

मैं GWT का बड़ा प्रशंसक हूं। यह आपको अपने घटकों को सामान्य जावा कक्षाओं के रूप में लिखने देता है और फिर आप उन्हें अपने पृष्ठों में इच्छानुसार डाल सकते हैं। पूरी चीज जावास्क्रिप्ट में संकलित हो जाती है।

public class MyApplication implements EntryPoint, HistoryListener 
{ 
    static final String INIT_STATE = "status"; 

    /** 
    * This is the entry point method. Instantiates the home page. 
    */ 
    public void onModuleLoad() 
    { 
     RootPanel.get().setStyleName ("root"); 
     initHistorySupport(); 
    } 

    private void initHistorySupport() 
    { 
     History.addHistoryListener (this); 

     // check to see if there are any tokens passed at startup via the browser’s URI 
     String token = History.getToken(); 
     if (token.length() == 0) 
     { 
      onHistoryChanged (INIT_STATE); 
     } 
     else 
     { 
      onHistoryChanged (token); 
     } 
    } 


    /** 
    * Fired when the user clicks the browser's 'back' or 'forward' buttons. 
    * 
    * @param historyToken the token representing the current history state 
    */ 
    public void onHistoryChanged (String historyToken) 
    { 
     RootPanel.get().clear(); 
     Page page; 
     if (Page1.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page1(); 
     } 
     else if (Page2.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page2(); 
     } 
     else if (Page3.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page3(); 
     } 
     RootPanel.get().add (page); 
    } 
} 
0

मुझे 100% यकीन नहीं है कि इस संदर्भ में "पुन: प्रयोज्य घटक" का अर्थ क्या है, लेकिन यदि आप का मतलब है कि आप प्रत्येक पृष्ठ पर बैनर, पाद लेख, नेविगेशन लिंक इत्यादि जैसे कुछ आम तत्व दिखाना चाहते हैं, तो फिर SiteMesh से आगे नहीं देखें। मेरी टीम ने इसे दो अंतर्राष्ट्रीयकृत वेब अनुप्रयोगों पर सफलतापूर्वक उपयोग किया है।

2

मैं पोर्टलेट का उपयोग करने की अनुशंसा नहीं करता जब तक कि आपका एप्लिकेशन वास्तव में web portal नहीं है।

यदि आप सिर्फ "पुन: प्रयोज्य घटक" JSP tagfiles का उपयोग करना चाहते हैं, तो वे मृत सरल लेकिन बेहद शक्तिशाली हैं, क्योंकि वे नियमित जेएसपी के समान हैं।

मुझे टाइल्स का उपयोग करने का अनुभव हुआ है और इसमें शामिल जटिलता बस इसके लायक नहीं है।

1

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