Struts срещу Struts2
Struts (известен също като Apache Struts или Struts 1) е междуплатформена рамка с отворен код, написана на Java, която е предназначена за разработване на уеб приложения на Java EE. Това беше една от първоначалните рамки за уеб приложения на Java EE. Но няколко години по-късно пристигна Struts2 (или Struts версия 2) и тя беше съвсем различна и много подобрена рамка за уеб приложения. В него бяха разгледани няколко въпроса, които в първоначалната версия бяха възприети като недостатъци. Сега Struts2 се използва много силно за разработване на Java EE приложения в света.
Какво е Struts?
Рамка Struts (Struts 1) беше една от първоначалните рамки за уеб приложения за разработване на уеб приложения на Java EE. Структурната рамка насърчава използването на MVC (Model-View-Controller) архитектура. Това е разширение на Java Servlet API. Craig McClanahan е оригиналният създател на Struts. Първоначално той е бил известен като Джакарата Струц и е поддържан по проект на Джакарта на софтуерната фондация Apache. Той е издаден под Apache License 2.0. Структурната рамка се нарича рамка, базирана на заявка, и се състои от три основни компонента: обработващ заявката, обработващ отговор и библиотека с тагове. Стандартният URI (Унифициран идентификатор на ресурс) е картографиран към обработващ заявка. Обработващият отговор отговаря за прехвърлянето на контрол. За да създадете интерактивни приложения с формуляри, функциите, предлагани от библиотеката с тагове, могат да бъдат използвани. Подпорите поддържат REST приложения и различни технологии като SOAP, AJAX и т.н..
Какво е Struts2?
Смята се, че структурата на Struts съдържа определени ограничения (главно липсата на разделяне между презентационния слой, слой за обработка на заявки и модела) от разработчиците на Java EE по това време и следователно няколко години по-късно пристига Struts2. Всъщност Struts2 беше напълно различен от Struts. Всъщност те дори не споделят една и съща кодова база, защото Struts2 е просто резултат от преименуване на рамката WebWork 2.2 (т.е. общностите на WebWork и Struts, които работиха отделно известно време, в крайна сметка се присъединиха към ръцете, за да излязат с Struts2). Нейната текуща стабилна версия е версия 2.2.3, която беше пусната през май 2011 г..
Каква е разликата между Struts и Struts2?
Един от многото проблеми на структурата на Struts беше необходимостта от програмиране на абстрактни класове вместо интерфейси. Това беше решено от структурата на Struts2. Например, структурата на Struts изисква класовете Action да бъдат разширени от абстрактните базови класове, но Struts2 Actions може да реализира интерфейс за действие. Поради разликите в модела на резба между двете версии, проблемите с безопасността на нишките, възникнали в рамките на Struts по отношение на обектите Action, не се срещат в структурата на Struts2. Причината е, че обектите на Struts2 Action се създават поотделно за всяка заявка, докато действие в рамките на Struts има само един екземпляр за обработка на всички заявки за това действие. За разлика от действията в структурата на Struts, действията на Struts2 не зависят от API на Servlet.
Проверчивостта на рамката на Struts2 е сравнително по-висока от рамката на Struts. Можете да тествате Struts2 Actions просто като следвате трите стъпки: инстанция, настройка на свойства и извикване на методи. Събирането на вход е по-лесно в структурата на Struts2, тъй като свойствата Action се използват като входни свойства, без да се налага да запазвате втори входен обект. Освен подкрепата за JSTL интеграция (която присъства в Struts), структурата Struts2 може да използва по-мощен и изразителен OGNL (Object Graph Notation Language). За преобразуване на тип Strut и Strut2 използват съответно Commons-Beanutils и OGNL. Поради тези подобрения, структурата на Struts2 се счита за високо зряла рамка и е много популярна сред Java EE програмистите. От друга страна, рамката на Struts сега се счита за остаряла.