Типичный рабочий процесс Struts2 (имейте в виду, что Struts2 чрезвычайно настраиваем, его части хорошо отделены)
struts.xml
=> определяет «отображения»:
- , которые
action
выполняется для каждого URL - один или несколько
results
: какой ресурс (обычно JSP) генерирует представление для каждого результата, возвращаемого действием
Следовательно, например,скажем, struts.xml
содержит
<action name="add" class="example.SumAction">
<result name="error">/Error.jsp</result>
<result name="success">/SumResult.jsp</result>
</action>
А ваше действие Java:
public class SumAction {
private int x;
private int x;
private int z;
// getters and setters ommited
public String execute() {
z = x + y;
return "success";
}
}
Тогда запрос http://mysite.com/mywebapp/add.action?x=10&y=20
заставит Struts2 создать объект SumAction
, установить x
и y
свойств и вызовите метод execute
.Если возвращается «success», то это поместит действие в некоторую «область», перенаправив в «/SumResult.jsp», в котором обычно используется какой-либо тег struts2, чтобы показать результат, вытягивая его из объекта действия.
Result: <b><s:property value="z" /></b>
Конечно, в менее тривиальных сценариях метод execute()
будет вызывать уровень обслуживания.
Итак, не очень понятно, если действие - модель «контроллер или контроллер +», я бы сказалпозже, потому что он не только имеет логику для обработки запроса, но также действует как контейнер данных (вход и результат).Но только во время запроса.