Действие Struts (Struts1 / Struts classic) больше привязано к сервлету. В Struts2 все совсем по-другому. Действие Struts2 - это просто POJO (простой класс Java), полностью отделенный от Servlet API. Это разделение облегчает тестирование.
В типичном рабочем процессе веб-приложения Struts2 для каждого запроса будет создаваться действие, которое будет связано с сервлетом (он может реализовывать интерфейс ServletAware
, если ему необходимо знать об этой ассоциации; обычно это не так. необходимо или не желательно).
Важное концептуальное различие с сервлетами (и с действиями Struts) заключается в том, что действия Struts2 не используются повторно для разных запросов и, следовательно, являются потокобезопасными: скажем, может случиться, что три http-запроса (одновременные или нет) обслуживаются одним экземпляр сервлета; но в этом случае у нас все еще будет три разных экземпляра действия Struts2, по одному для каждого запроса.