Что лучший способ состоит в том, чтобы сделать модульное веб-приложение Java [закрытым]

Я бы предложил использовать бинарный протокол webservice, аналогичный Hessian . Он работает очень хорошо, и у них есть реализация android. Это может быть немного тяжело, но зависит от приложения, которое вы строите. Надеюсь, это поможет.

6
задан Vadim Kotov 6 September 2017 в 20:30
поделиться

7 ответов

Если бы Вы используете Spring MVC, то я рекомендовал бы использовать Портлеты. В Spring портлеты являются просто легкими контроллерами, так как они только ответственны за фрагмент целой страницы и очень легки записать. Если Вы используете Spring 2.5, то можно пользоваться всеми преимуществами новой поддержки аннотации, и они подходят приятно к целому приложению Spring с внедрением зависимости и другими преимуществами использования Spring.

Контроллер портлета является в значительной степени тем же как контроллером сервлета, вот простой пример:

@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. Spring будет искать представление, названное news.jsp на основе возвращаемого значения метода. RequestMapping говорит Spring, что этот contoller для режима VIEW портлета.

Конфигурация 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, Sun или Apache. Если Вы хотите создать свое приложение как ряд портлетов, Вы могли бы хотеть рассмотреть полноценное portlal решение, такое как Портал Liferay.

4
ответ дан 10 December 2019 в 00:46
поделиться

Мозаики могут быть болью. Значительное улучшение по сравнению с тем, что прибыло прежде (т.е. ничто), а скорее ограничение.

Калитка могла бы быть больше, что Вы ищете, если Вы не обосновались на JSP.

2
ответ дан 10 December 2019 в 00:46
поделиться

Я не рекомендую использовать Портлеты, если Ваше приложение не является действительно веб-порталом.

Если Вы просто хотите "допускающие повторное использование компоненты", используют JSP tagfiles, они очень просты все же чрезвычайно мощные, так как они совпадают с регулярным JSPs.

У меня был опыт с помощью мозаик, и сложность, включенная просто, не стоит того.

2
ответ дан 10 December 2019 в 00:46
поделиться

Я - большой поклонник GWT. Это позволяет Вам записать свои компоненты как нормальные классы Java, и затем можно вставить их в страницы по желанию. Все это заканчивает тем, что было скомпилировано в JavaScript.

Вот пример:

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);
    }
}
1
ответ дан 10 December 2019 в 00:46
поделиться

Гобелен является платформой веб-приложения Java с акцентом на легкое создание допускающих повторное использование компонентов.

Я использовал sitemesh, и это хорошо для обертывания ряда страниц в стандартных заголовках и нижних колонтитулах, но Гобелен лучше для создания компонентов, которые используются на многих страницах, возможно много раз на страницу. Компоненты гобелена могут взять другие компоненты в качестве параметров, который позволяет обертывание стиля Sitemesh.

0
ответ дан 10 December 2019 в 00:46
поделиться

Я не на 100% уверен, что "допускающие повторное использование компоненты" означает в этом контексте, но если Вы подразумеваете, что хотите, чтобы определенные общие элементы появились на каждой странице, такой как баннер, нижний колонтитул, навигационные ссылки, и т.д., затем смотрят не далее, чем SiteMesh. Моя команда использовала его успешно на нескольких интернационализировавших веб-приложениях.

0
ответ дан 10 December 2019 в 00:46
поделиться

У меня был большой опыт работы с портлетами в сочетании с Ajax JSF (IceFaces) и Liferay Portal, и я бы никому их не рекомендовал - все выглядит хорошо при чтении учебника и на самом деле ад на практике. Конечно, я думаю, что они намного удобнее и легче с Spring MVC и JSP, но в любом случае портлеты плохо поддерживают технологию imho.

1
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: