На высоком уровне, как работает struts2?Я прихожу с фоном MVC - PullRequest
3 голосов
/ 16 июля 2010

На высоком уровне, как работает struts2?Я из mvc background

Глядя на пример проекта, я вижу множество этих классов типов ___action.

Это просто ссылка на действие на действие контроллера?т.е. ответ на конкретный URL на основе get / post?

Ответы [ 2 ]

4 голосов
/ 17 июля 2010

Типичный рабочий процесс 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() будет вызывать уровень обслуживания.

Итак, не очень понятно, если действие - модель «контроллер или контроллер +», я бы сказалпозже, потому что он не только имеет логику для обработки запроса, но также действует как контейнер данных (вход и результат).Но только во время запроса.

0 голосов
/ 16 июля 2010

Я всегда понимал, что действия - это ваши контролеры. Вы нажимаете на URL, отображаете его на действие, ваше действие контролирует, что происходит с бизнес-логикой, например, «загрузить объект домена» или «просто перейти к jsp».

JSPS ваши взгляды. Я думаю, что если вы создаете RIA, где действия обрабатывают xhrs и возвращают json, компонент V MVC находится за пределами фреймворка - это ваши extjs или все, что вы используете для презентации.

Struts всегда казался действительно средой VC, потому что вы не определяете свою модель с помощью Struts. Вы делаете это сами. Хотя вы используете модель в стойках, когда вы конвертируете свою модель в то, что нужно вашей презентации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...