Является ли Spring MVC хорошим решением для написания приложений для веб-страниц?

1

Я начал свое приключение с помощью Spring MVC. Мой текущий фон - скорее приложения Adobe CQ5. Большинство статей, учебников и книг, которые я читаю, охватывают простые примеры взглядов, а затем они переключаются на интеграцию db и так далее.

Я хотел бы создать простое приложение, которое станет интерфейсом для моего основанного на OSGI приложения. Поэтому важно, чтобы каркас работал на OSGI. (Мне удалось запустить Spring MVC на Apache Felix - Karaf)

Итак, я хотел бы иметь компоненты, разделяемые между страницами, например:

  • автопопуленное, динамическое меню
  • бар, который ведет себя по-разному в зависимости от того, кто зарегистрирован
  • footer & header (также может быть динамическим)

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

На мой взгляд, каждый из этих элементов должен иметь отдельную модель, представление и контроллер. Эти компоненты должны иметь доступ к сеансу определенного типа. И я не вижу способа сделать это в Spring MVC.

Является ли Spring MVC хорошим решением для того, чего я хочу достичь? Я дошел до сути, где, кажется, я принял плохое решение. Я чувствую себя немного обманутым, так как есть много примеров того, как Spring MVC делает веб-страницы (например, PetClinic), но кажется, что делать более сложные вещи было бы болью.

У меня есть еще два вопроса. Что такое Spring MVC? Есть ли у вас какие-либо предложения о том, какие рамки я должен искать вместо этого?

  • 1
    Ваши требования, кажется, больше о front-end. Весна на самом деле не поможет вам ни с одним из этих вопросов. Также говорить, что документация Spring устарела, просто бессмысленно. Даже на их собственном веб-сайте есть много свежих учебных пособий, которые помогут со всем, а также полные примеры кода в Git.
  • 0
    Ну, я не сказал, что документация устарела, но в Интернете есть множество статей, которые относятся к Spring за пару лет до этого. (Это огромное количество времени в ИТ). Это запутывает вещи, так как многие подходы или практики устарели, нужно быть осторожным.
Теги:
spring
spring-mvc
web-applications

2 ответа

2

Короткий ответ: вы не просто полагаетесь на 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, пожалуйста, не создавайте веб-приложения.)

Удачи.

  • 0
    Спасибо, это многое проясняет. Что касается GWT и тому подобного - мне не нравятся эти решения. Такое ощущение, что у меня руки крепко сжаты, а разработка на заказ кажется сложной, а код не чистым. Это похоже на написание настольного приложения. Таким образом, единственный путь может быть одностраничным приложением. Еще одно ограничение заключается в том, что фреймворк должен быть прост в настройке и использовании в контейнере OSGI. Я чувствую себя обманутым, так как множество примеров в Интернете указывает на то, что вы можете создавать веб-страницы с помощью Spring MVC, но когда это становится сложным - это довольно бесполезно.
  • 1
    Я с вами в отношении GWT и разделяю те же чувства по отношению к Spring MVC. Я использую Spring MVC для @RestController - другая альтернатива использует Джерси. Но я все чаще использую Micro SOA с сервисами REST, обслуживающими объекты JSON. К вашему сведению - SPA даже не нуждаются ни в каком контейнере - разверните материал на своем веб-сервере. Используйте Yeoman / Lineman для создания проекта, используйте Grunt для ведения домашнего хозяйства. OSGI - Ваш уровень сервера совместим с OSGI. Никогда не думал о клиенте, но кое-что, что я читал в прошлом, возможно, modio.io/angularjs-using-the-http-whiteboard-service
0

Большинство функций веб-приложения, которые вас интересуют, выходят за рамки ванильного Spring MVC, который на самом деле является более функциональной базой. Однако вы можете выполнить большинство этих функций, используя дополнительные технологии Java.

  1. Для аутентификации пользователей и сеансов просмотрите Spring Security.
  2. Для заголовков, нижних колонтитулов, навигационных панелей и т.д. Вы должны изучить создание повторяющихся тегов с помощью JSTL и Spring Expression Language.
  3. Вы можете использовать отличные рамки HTML/CSS, такие как Twitter Bootstrap.

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню