Ответ 1
Основное отличие состоит в том, что в Struts1.x запрос напрямую переходит к сервлету, тогда как в Struts2.x трафик запроса и ответа, хотя стек перехватчика или фильтр. Регулярная логика может быть помещена в классы фильтров, и разработчик может сосредоточиться на бизнес-логике. Помимо этого существуют и различия в структуре каталогов.
Лучше узнать различия между темами Struts1.x и Struts2.x. Здесь приведена ссылка http://www.geekinterview.com/question_details/64360:
1. Классы действий
В Struts 1.x классы действий должны расширять класс Action (или DispatchAction), а метод execute имеет номер параметра и возвращаемый тип ActionForward, но In struts 2.x класс действия также может быть простым pojo с использованием метода execute, возвращающего только строку без какого-либо входного параметра.
2. Зависимость сервлета
Контейнер не обрабатывает Struts2.x, в отличие от Struts1.x, действия как пара запроса/ответа и struts2.x действие все равно может получить доступ к исходному запросу и ответу.
3. Получение ввода
- В Struts1.x форма beans используются для определения свойств, геттеров и сеттеров, в struts2.x геттеры/сеттеры определены в самих классах действий.
- Класс Struts1.x beans должен расширять ActionForm или ValidatorForm, но Struts2.x beans также может быть POJO.
4. Тестируемость
- В методе Struts1.x execute() выдает API сервлета для тестирования.
- Struts2.x Зависимость впрыска используется для упрощения процесса тестирования.
5. Языки выражений
- Struts1.x JSTL как язык выражения, где Struts2.x использует OGNL (язык графических обозначений объектов) в качестве языка выражения который очень силен, чем JSTL.
- Struts2.x также может использовать JSTL.
6. Преобразование типов
- В свойствах Struts1.x находятся почти в форме String, конвертеры относятся к классу, которые не настраиваются.
- Struts 2.x использует OGNL для преобразования типов
7. Проверка
Проверка на стороне сервера производится в классах действий в Struts2.x гораздо проще.