ما هي أفضل طريقة لجعل وحدات جافا تطبيق ويب [مغلقة]

StackOverflow https://stackoverflow.com/questions/71692

  •  09-06-2019
  •  | 
  •  

سؤال

أنا بناء موقع ويب صغير في جافا (الربيع MVC مع JSP وجهات النظر) و أنا أحاول العثور على أفضل حل بالنسبة القرارات ، بما في ذلك عدد قليل من وحدات قابلة لإعادة الاستخدام (مثل "آخر الأخبار" "الأحداث القادمة"...).

لذا فإن السؤال هو:مداخل بلاط أو التكنولوجيا ؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم الربيع MVC, ثم أود أن أوصي باستخدام المداخل.في الربيع ، المداخل فقط خفيفة الوزن تحكم لأنها هي المسؤولة الوحيدة عن جزء من صفحة كاملة ، من السهل جدا أن أكتب.إذا كنت تستخدم الربيع 2.5, ثم يمكنك التمتع بجميع المزايا الجديدة الشرح الدعم ، وأنها تناسب بشكل جيد في كل ربيع التطبيق مع حقن التبعية وغيرها من الفوائد من استخدام الربيع.

مدخل تحكم هو الى حد كبير نفس بريمج تحكم هنا مثال بسيط:

@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} في JSP.الربيع سوف نبحث عن عرض اسمه الأخبار.jsp على أساس قيمة الإرجاع من طريقة.على RequestMapping يقول الربيع أن هذا contoller هو وضع عرض المدخل.

تكوين XML يحتاج فقط إلى تحديد مكان عرض تحكم الموقع:

<!-- 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>

إذا كنت ترغب في تضمين ببساطة المداخل الموجودة في القائمة الخاصة بك التطبيق ، يمكنك حزمة مدخل الحاوية ، مثل eXo, الشمس, أو أباتشي.إذا كنت ترغب في بناء التطبيق الخاص بك على أنها مجموعة من المداخل ، قد ترغب في النظر في مهب كامل portlal الحل ، مثل Liferay البوابة.

نصائح أخرى

البلاط يمكن أن يكون الألم.تحسنا ما جاء قبل (أيلا شيء) ، بل يحد.

النصيبه قد يكون أكثر ما تبحث عنه, إلا إذا كنت قد استقر على JSP.

لا نوصي باستخدام المداخل إلا إذا كان التطبيق الخاص بك هو حقا البوابة الإلكترونية.

إذا كنت ترغب فقط "مكونات قابلة لإعادة الاستخدام" use JSP tagfiles, هم أموات بسيطة لكنها قوية للغاية, لأنها هي نفسها العادية صفحات jsp.

لقد كان تجربة استخدام البلاط و التعقيد الذي ينطوي ببساطة لا يستحق ذلك.

أنا مروحة كبيرة من GWT.فإنه يتيح لك كتابة مكونات طبيعية فئات Java ثم يمكنك إدراجها في صفحات موقعك في الإرادة.كل شيء ينتهي المترجمة إلى جافا سكريبت.

هنا مثال:

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);
    }
}

كان لدي الكثير من الخبرة مع مداخل بالتزامن مع اياكس JSF (IceFaces) و Liferay البوابة وأنا لن يوصي بها لأي شخص - كل شيء يبدو جيدا عند قراءة البرنامج التعليمي الجحيم الحقيقي في الممارسة العملية.بالطبع أعتقد أنهم أكثر من ذلك بكثير مريحة وخفيفة الوزن مع الربيع MVC و JSP, ولكن على أي حال ، المداخل ليست مدعومة بشكل جيد التكنولوجيا imho.

أنا لست متأكدا 100 ٪ ما "مكونات قابلة لإعادة الاستخدام" تعني في هذا السياق ، ولكن إذا كنت تقصد أنك تريد بعض العناصر المشتركة تظهر على كل صفحة ، مثل شعار تذييل الصفحة ارتباطات التنقل ، وما إلى ذلك ، ثم ننظر إلى أبعد من SiteMesh.فريقي استخدمت بنجاح على زوجين من تدويل تطبيقات الويب.

نسيج هو جافا ويب إطار التطبيق مع التركيز على سهولة إنشاء مكونات قابلة لإعادة الاستخدام.

لقد استخدمت sitemesh و هو جيد بالنسبة التفاف مجموعة من الصفحات في مستوى الرؤوس والتذييلات ، ولكن النسيج هو أفضل خلق من المكونات التي تستخدم في العديد من الصفحات ، ربما عدة مرات في الصفحة الواحدة.نسيج المكونات يمكن أن تأخذ المكونات الأخرى كما المعلمات ، مما يسمح Sitemesh نمط التفاف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top