Разница между Struts 1 и Struts 2? - PullRequest
9 голосов
/ 04 ноября 2011

Я использовал распорки 2, но по нескольким причинам я перехожу (обратно) на распорки 1. Я хотел бы знать основные различия между ними, как, например, в отношении программной доступности и общих потоков.

Ответы [ 4 ]

12 голосов
/ 21 ноября 2012

Давайте посмотрим на компонент и функциональные различия между стойками 1.x и стойками 2.x

 In struts 1.x front controller is ActionServlet
    In 2.x front controller is FilterDispatcher

In struts 1.x we have RequestProcessor class
    In 2.x we have Interceptors instead RequestProcessor will see about this concept later just remember as of now

In struts 1.x we have multiple tag libraries like, html, logic, bean..etc
    In 2.x we do not have multiple libraries, instead we have single library which includes all tags

In struts 1.x the configuration fine name can be [any name].xml and we used to place in web-inf folder
    In 2.x the configuration file must be struts.xml only and this must be in classes folder

In struts 1.x we have form beans and Action classes separately
    In 2.x form bean, Action classes are combinedly given as Action class only, of course we can take separately if we want ;)

In struts 1.x properties file must be configured in struts-config.xml
    But in 2.x we need to configure our resource bundle(s) in struts.properties file

In struts 1.x we have programmatic and declarative validations only
    In 2.x we have annotations support too along with programmatic and declarative validations

Функциональные различия

In struts 1.x declarative validations are done by using validation frame work
    In 2.x, declarative validations are done by using xwork2 frame work by webwork the reason being, its support valuations through Annotations

In struts 1.x an Action class is a single ton class, so Action class object is not a thread safe, as a programmer we need to make it as thread safe by applying synchronization
    In 2.x an Action class object will be created for each request, so it is by default thread safe, so we no need to take care about safety issues here

In struts 1.x we have only jsp as a view technology
    In 2.x we have support of multiple view technologies like velocity, Freemarker, jasper reports, jsp bla bla

In struts 1.x Action class is having servlet dependency, because in execute() method accepts req, res parameter right ! so.
    In 2.x Action class doesn’t have any servlet dependency, because its execute() method doesn’t accepts any parameters, however we can access all servlet objects with dependency injection
4 голосов
/ 04 ноября 2011

В http://www.java -samples.com вы можете найти быстрый и полный ответ.Другими словами, если можете, забудьте о Struts и используйте только Struts2 ...

Это таблица сравнения с сайта Учебников по программированию, упомянутая выше: enter image description here

Выпуск End-Of-Life Struts 1 был представлен в декабре 2008 года и является версией 1.3.10.Вы все еще можете получить его, и он все еще будет работать, но поддержки или дальнейшего развития нет.Вы сами по себе там.

3 голосов
/ 29 октября 2016

Сравнение Struts 1 и 2 создателями Struts (программная основа Apache)

Сравнение распорок 1 и распорок 2

Вот содержимое, доступное по вышеупомянутой ссылке, в случае, если они решат изменить ссылку или удалить страницу в будущем.

  1. Классы действий

    • Распорки 1
      Требуются классы действий для расширения абстрактного базового класса. Распространенной проблемой в Struts 1 является программирование абстрактных классов вместо интерфейсов.
    • Struts 2
      Action может реализовывать интерфейс Action вместе с другими интерфейсами для включения дополнительных и пользовательских сервисов. Struts 2 предоставляет базовый класс ActionSupport для реализации часто используемых интерфейсов. Хотя интерфейс Action не требуется. Любой объект POJO с подписью выполнения может использоваться в качестве объекта действия Struts 2.
  2. Модель резьбы

    • Struts 1
      Действия являются одиночными и должны быть поточно-ориентированными, поскольку будет только один экземпляр класса для обработки всех запросов для этого действия. Стратегия Singleton накладывает ограничения на то, что можно сделать с помощью Struts 1 Actions, и требует особой осторожности при разработке. Ресурсы действий должны быть поточно-ориентированными или синхронизированными.
    • Struts 2
      Объекты действий создаются для каждого запроса, поэтому проблем с безопасностью потоков нет. (На практике контейнеры сервлетов генерируют много одноразовых объектов за запрос, и еще один объект не налагает снижения производительности и не влияет на сборку мусора.)
  3. Зависимость сервлета

    • Struts 1
      Действия зависят от API сервлета, поскольку HttpServletRequest и HttpServletResponse передаются методу execute при вызове Action.
    • Struts 2
      Действия не связаны с контейнером. Чаще всего контексты сервлетов представляются в виде простых карт, позволяющих тестировать действия изолированно. Действия Struts 2 по-прежнему могут обращаться к исходному запросу и ответу, если это необходимо. Однако другие архитектурные элементы уменьшают или исключают необходимость прямого доступа к HttpServetRequest или HttpServletResponse.
  4. Тестируемость

    • Struts 1
      Основным препятствием для тестирования действий Struts 1 является то, что метод execute предоставляет API-интерфейс сервлета. Стороннее расширение Struts TestCase предлагает набор фиктивных объектов для Struts 1.
    • Struts 2
      Поддерживает создание различных жизненных циклов для каждого действия через стеки перехватчиков. Пользовательские стеки могут создаваться и использоваться с различными Действиями по мере необходимости.
      Struts 2 Действия могут быть протестированы путем создания экземпляра Action, настройки свойств и вызова методов. Поддержка внедрения зависимостей также упрощает тестирование.
  5. Сбор урожая

    • Struts 1
      Использует объект ActionForm для захвата ввода. Как и Действия, все ActionForms должны расширять базовый класс. Так как другие JavaBeans не могут использоваться в качестве ActionForms, разработчики часто создают избыточные классы для захвата ввода. DynaBeans можно использовать в качестве альтернативы созданию обычных классов ActionForm, но и здесь разработчики могут переписывать существующие JavaBeans.
    • Struts 2
      Использует свойства Action в качестве входных свойств, устраняя необходимость во втором входном объекте. Входные свойства могут быть объектами с расширенным набором типов, которые могут иметь свои собственные свойства. Свойства Action могут быть доступны с веб-страницы через taglibs. Struts 2 также поддерживает шаблон ActionForm, а также объекты форм POJO и действия POJO. Богатые типы объектов, включая бизнес-объекты или объекты домена, могут использоваться в качестве объектов ввода / вывода. Функция ModelDriven упрощает ссылки taglb на объекты ввода POJO.
  6. Языки выражения
    • Struts 1
      Интегрируется с JSTL, поэтому он использует JSTL EL. EL имеет базовый обход графов объектов, но относительно слабую поддержку сбора и индексирования свойств.
    • Struts 2
      Может использовать JSTL, но платформа также поддерживает более мощный и гибкий язык выражений, называемый "Язык нотации графа объекта" (OGNL).
  7. Связывание значений в представлениях
    • Struts 1
      Использует стандартный механизм JSP для привязки объектов к контексту страницы для доступа.
    • Struts 2
      Использует технологию "ValueStack", чтобы теги-теги могли получать доступ к значениям, не связывая ваше представление с типом объекта, который он отображает. Стратегия ValueStack позволяет повторно использовать представления различных типов, которые могут иметь одинаковое имя свойства, но разные типы свойств.
  8. Преобразование типов
    • Struts 1
      Свойства ActionForm обычно представляют собой все строки. Struts 1 использует Commons-Beanutils для преобразования типов. Конвертеры для каждого класса и не настраиваются для каждого экземпляра.
    • Struts 2
      Использует OGNL для преобразования типов. Каркас содержит конвертеры для базовых и общих типов объектов и примитивов.
  9. проверка
    • Struts 1
      Поддерживает ручную проверку с помощью метода validate в ActionForm или через расширение для Commons Validator. Классы могут иметь разные контексты проверки для одного и того же класса, но не могут связываться с проверками на подобъектах.
    • Struts 2
      Поддерживает ручную проверку с помощью метода validate и платформы XWork Validation. Платформа Xwork Validation Framework поддерживает проверку цепочки на подчиненные свойства, используя валидации, определенные для типа класса свойств и контекста валидации.
  10. Контроль выполнения действий
    • Struts 1
      Поддерживает отдельные обработчики запросов (жизненные циклы) для каждого модуля, но все действия в модуле должны иметь один и тот же жизненный цикл.
    • Struts 2
      Поддерживает создание разных жизненных циклов для каждого действия через стеки перехватчиков. Пользовательские стеки могут быть созданы и использованы с различными Действиями по мере необходимости.
1 голос
/ 04 ноября 2011

Каковы причины, которые заставили вас вернуться к Struts1, который больше не находится в активной разработке?

может быть кто-то может помочь вам в решении ваших причин относительно различий, перейдите по следующей теме Struts2 Vs Struts1

Я также предлагаю вам поискать SO для более подробной информации.То, что я знаю, дизайн и рабочий процесс Struts2 полностью отличаются от Struts1, и он был разработан с учетом также ограничений, которые имеют Struts1.

...