Я начал свое приключение с помощью Spring MVC. Мой текущий фон - скорее приложения Adobe CQ5. Большинство статей, учебников и книг, которые я читаю, охватывают простые примеры взглядов, а затем они переключаются на интеграцию db и так далее.
Я хотел бы создать простое приложение, которое станет интерфейсом для моего основанного на OSGI приложения. Поэтому важно, чтобы каркас работал на OSGI. (Мне удалось запустить Spring MVC на Apache Felix - Karaf)
Итак, я хотел бы иметь компоненты, разделяемые между страницами, например:
и несколько компонентов, специфичных для страницы. Я знаю, что приложение, о котором я упоминал, не является сложным, но это всего лишь пример.
На мой взгляд, каждый из этих элементов должен иметь отдельную модель, представление и контроллер. Эти компоненты должны иметь доступ к сеансу определенного типа. И я не вижу способа сделать это в Spring MVC.
Является ли Spring MVC хорошим решением для того, чего я хочу достичь? Я дошел до сути, где, кажется, я принял плохое решение. Я чувствую себя немного обманутым, так как есть много примеров того, как Spring MVC делает веб-страницы (например, PetClinic), но кажется, что делать более сложные вещи было бы болью.
У меня есть еще два вопроса. Что такое Spring MVC? Есть ли у вас какие-либо предложения о том, какие рамки я должен искать вместо этого?
Короткий ответ: вы не просто полагаетесь на Spring MVC, чтобы помочь вам в детализации и правильности сложности.
Попросив отдельную модель, View & Controller на данном "компиляционном представлении", вы, по сути, просите архитектуру на основе компонентов.
Spring MVC основан на запросах, а не на основе компонентов, поэтому ваш выбор структуры не выравнивается. Это не значит, что вы не можете сделать Spring MVC модульным. Вы должны использовать JSP или JSTL. JSP-трюки, чтобы упростить создание шаблонов? ,
Вы можете получить доступ к HttpSession путем инъекции метода. Просто добавьте это как параметры, как показано ниже:
public JsonResponse getSessionIncontroller
(@RequestBody String jsonReqString ,HttpSession session)
{
session.setAttribute("success" , "successfully accessed");
return jsonResponse;
}
Однако я давно отказался от разработки веб-приложений. Я советую вам сложить все сложности на столе и искать структуру для решения всех вопросов, которые помогут вам изящно покорить ваши сложности. Поэтому позвольте мне познакомить вас с другими альтернативами. Пойдите для одного из следующего: -
Приложения для одной страницы
Вы можете разрабатывать небольшие приложения очень быстро. Рассмотрим AngularJS, EmberJS, KnowkoutJS или Backbone.js. Независимо от того, меняется ли ваше Меню динамически или остается тем же, что у вас есть Javascript на стороне клиента, и отправляйте свой объект авторизации JSON один раз.
Компонентная арка.
Перейдите по маршруту JSF через PrimeFaces или аналогичную библиотеку. С помощью встроенной консоли вы сможете создавать компиляционные представления, т.е. Ваш заголовок, нижний колонтитул теперь просто фрагмент/часть вашего представления, и у вас есть ваши обработчики. (Я бы не пошел по этому пути как по вкусу.)
GWT
Оформить заказ GWT. Они позволяют создавать ваши представления и объекты Java, а код получает сгенерированную серверную часть в Javascript и т.д. Рассмотрите этот вариант, если вы очень боитесь Javascript. (На стороне крайней заметки, если вы боитесь Javascript, пожалуйста, не создавайте веб-приложения.)
Удачи.
Большинство функций веб-приложения, которые вас интересуют, выходят за рамки ванильного Spring MVC, который на самом деле является более функциональной базой. Однако вы можете выполнить большинство этих функций, используя дополнительные технологии Java.
Надеюсь это поможет.