Основной поток стоек

#struts #struts-validation #struts-config

#стойки #struts-проверка #struts-конфигурация

Вопрос:

Ну, я хочу изучить Struts, поэтому я собираюсь начать со Struts 1, я хотел бы знать общий поток. Какие файлы требуются?

Какова функция struts-config.xml ? validation.xml ? validation-rules.xml Что происходит, когда вы посещаете свою страницу JSP и запускается действие? Что делает класс Action и Form? Какой класс вызывается первым при запуске действия.

Я только что скачал образец формы, и все эти файлы поначалу сбивают с толку. Я хотел бы знать, что происходит, чтобы получить лучшее представление о Struts.

Ответ №1:

Вам следует начать с руководства по Struts, которое облегчит понимание: D. Вы можете найти много в Интернете, особенно для Struts 1. Вот, например, отправная точка.

Но просто ради этого, вот презентация в формате high view.

Сначала вы добавляете Struts ActionServlet в свой web.xml файл и настраиваете его на прием запросов, соответствующих определенному отображению. Для Struts это *.do (у вас может быть все, что вы хотите для этого, *.do это просто соглашение в сообществе Struts).

Теперь все, что поступает на сервер с таким *.do шаблоном URL, отправляется на ActionServlet .

Теперь в игру вступает содержимое struts-config.xml файла. ActionServlet Это внешний контроллер, который просто отправляет данные на другие, более подходящие ресурсы для конкретной обработки. Этими конкретными ресурсами являются Action классы.

У вас может быть, например, a, LoginAction который должен обрабатывать запросы, поступающие по login.do пути. В struts-config.xml вы указываете это: все, что приходит по login пути, должно быть отправлено в LoginAction класс.

И у вас может быть столько объявлений, сколько вы хотите, для x вызова XAction пути, для y вызова YAction и т.д. И т.п.

Обычно ваш клиент отправляет данные на сервер, данные, которые он вводит в HTML-форму. Эти данные вам нужно обработать в вашем Action классе. Теперь введите ActionForm .

ActionForm — это компонент, который платформа Struts заполняет данными из HTML-формы. Вместо выполнения request.getParameter("foo") вы можете работать с такими объектами, как formBean.getFoo() например.

После того, как вы выполните свою обработку в Action классе, используя ActionForm , вы должны представить результаты в некотором представлении (кстати, Struts — это платформа MVC, поэтому вы также должны знать пару вещей об этом).

Представления обычно представляют собой файлы JSP. Когда вы возвращаетесь из своего Action , вы указываете местоположение «вперед» по имени (т. Е. к какому представлению перейти). Теперь снова информация находится в struts-config.xml файле, где имя представления сопоставлено с местоположением JSP.

Затем фреймворк перенаправит управление этому JSP, JSP представляет данные, которые затем отправляются клиенту в виде HTML (клиенту больше не нужно будет обращаться к JSP напрямую — они должны быть скрыты фреймворком Struts).

На новой странице клиент снова выполняет некоторые запросы, и процесс повторяется.

Что ж, это примерно самое высокое представление, какое только может быть. Конечно, есть и другие варианты, но вы узнаете о них, изучая Struts.

Что касается validator-rules.xml и validation.xml , то они используются фреймворком Validator, который вы можете интегрировать со Struts с помощью плагина (в Struts есть плагины, которые вы можете использовать для добавления в него новых элементов), чтобы также добавить проверку к вводимым пользователем данным.

Что ж, примерно так. В Интернете вы можете найти множество руководств, предлагающих более подробную информацию, но, надеюсь, это поможет вам лучше начать.

Удачи!

Ответ №2:

  1. Когда пользователь отправил страницу jsp. эта страница, имеющая (атрибут ) action="login.do" . контейнер вызовет web.xml . в нем web.xml есть два раздела servlet и servlet mapping (отображение сервлета)
  2. При отображении сервлета его находят *.do в шаблоне url. если обнаружено, что он принимает имя servlet. и проверьте соответствующий класс. в разделе servlet. этот класс является ActionServlet .
  3. ActionServlet является контроллером архитектуры модуля Struts. в действии сервлет, имеющий метод обслуживания. в этом методе мы создаем RequestPrecessor экземпляр класса
  4. Service(req,res) RequestPrecessor rp = new RequestPrecessor();
  5. Мы вызываем метод обработки RequestProcessor класса через экземпляр rp.process(req,res)
  6. В классе обработчика запросов есть метод process с параметром req,res. тогда у него есть 1 условие if в этом классе. это условие всегда возвращает значение true. потому что это фиктивный метод.

Внутри этого условия выполняется 6 шагов

  1. Создайте экземпляр сопоставления действий в Struts- Config.xml . он сохранит все детали пути сопоставления действия, значения, типа forward, validation=true/false , input
    ="*.jsp"
    и т.д., Которые были созданы этим r экземпляром
  2. Затем он создаст экземпляр класса Form, прежде чем проверять, совпадают имя сопоставления действия и имя формы или нет, если это одно и то же, он создаст экземпляр form
  3. Затем он перейдет к ActionMapping экземпляру, в котором упоминается ris или нет, validate =true/false если false, он не выполнит этот шаг, иначе он выполнит этот шаг.
  4. Затем он создаст экземпляр действия
  5. Далее потребуется четыре параметра метода execute, который вернет ActionErrors экземпляр. если он не пуст. он перейдет на страницу ошибки, в противном случае он попадет на соответствующую страницу. else, если он пуст, if пойдет дальше и отобразит соответствующее значение страницы в представлении jsp.Это поток struts.

Комментарии:

1. @Tiny Я предполагаю, что PrepareAndExecuteFilter — это новый actionservlet..is это правильно? если да, то когда он вызывается / вызывается / инициализируется?

Ответ №3:

Модель Struts MVC

Модель


Struts не поддерживает модель напрямую. Однако действия Struts и файл конфигурации предоставляют вам возможность реализовать его самостоятельно.

Вид


1) Сформируйте компонент, который расширяет org.apache.struts.action.ActionForm, который используется двумя способами во время выполнения:

  • Когда страница JSP подготавливает соответствующую HTML-форму для отображения,
    страница JSP обращается к компоненту, который содержит значения, подлежащие помещению в
    форму. Эти значения предоставляются из бизнес-логики или из предыдущего пользовательского ввода.
  • Когда пользовательский ввод возвращается из веб-браузера, компонент проверяет и сохраняет этот ввод либо для использования бизнес-логикой, либо (если проверка не удалась) для последующего повторного отображения.

2) Библиотеки тегов Struts, такие как bean, logic, html и плагин tiles

Контроллер


  1. Сервлет действий Struts обрабатывает события времени выполнения в соответствии с набором правил, которые предоставляются во время развертывания. Эти правила содержатся в файле конфигурации Struts и определяют, как сервлет реагирует на каждый результат, полученный из бизнес-логики. Изменения в потоке управления требуют изменений только в файле конфигурации.
  2. Действие Struts расширяет org.apache.struts.action.Экшен. Во время выполнения говорят, что сервлет action «выполняет действия», что означает, что сервлет вызывает метод execute каждого из созданных экземпляров классов action. Объект, возвращаемый из метода execute, направляет сервлет действия относительно того, к какому действию или файлу JSP обращаться следующим. Для облегчения повторного использования вызывайте бизнес-логику из класса action, а не включайте бизнес-логику в этот класс.

Смотрите пример Struts 1.3

Для вашего сравнения и справки, вот демонстрационная версия Struts 2.3