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