Учебники

Struts 2 — результаты и типы результатов

Как упоминалось ранее, тег <results> играет роль представления в среде Struts2 MVC. Действие отвечает за выполнение бизнес-логики. Следующим шагом после выполнения бизнес-логики является отображение представления с использованием тега <results> .

Часто к результатам прилагаются некоторые правила навигации. Например, если метод действия заключается в аутентификации пользователя, возможны три результата.

  • Успешный вход в систему
  • Неудачный вход в систему — Неверное имя пользователя или пароль
  • Учетная запись заблокирована

В этом сценарии метод действия будет настроен с тремя возможными последовательностями результатов и тремя различными представлениями для отображения результата. Мы уже видели это в предыдущих примерах.

Но Struts2 не связывает вас с использованием JSP в качестве технологии просмотра. В конце концов, вся цель парадигмы MVC состоит в том, чтобы разделять слои и настраивать их. Например, для клиента Web2.0 вы можете захотеть вернуть XML или JSON в качестве вывода. В этом случае вы можете создать новый тип результата для XML или JSON и добиться этого.

Struts поставляется с несколькими предопределенными типами результатов, и все, что мы уже видели, было диспетчером типов результатов по умолчанию, который используется для отправки на страницы JSP. Struts позволяет вам использовать другие языки разметки для технологии представления, чтобы представить результаты, и популярный выбор включает Velocity, Freemaker, XSLT и Tiles .

Тип результата Диспетчер

Тип результата диспетчера является типом по умолчанию и используется, если не указан другой тип результата. Он используется для пересылки на сервер сервлету, JSP, HTML-странице и т. Д. Он использует метод RequestDispatcher.forward () .

Мы видели сокращенную версию в наших предыдущих примерах, где мы указали путь JSP в качестве тела тега результата.

<result name = "success">
   /HelloWorld.jsp
</result>

Мы также можем указать файл JSP, используя тег <param name = «location»> внутри элемента <result …> следующим образом:

<result name = "success" type = "dispatcher">
   <param name = "location">
      /HelloWorld.jsp
   </param >
</result>

Мы также можем предоставить параметр разбора , который по умолчанию имеет значение true. Параметр parse определяет, будет ли анализироваться параметр местоположения для выражений OGNL.

Тип результата FreeMaker

В этом примере мы увидим, как мы можем использовать FreeMaker в качестве технологии просмотра. Freemaker — это популярный шаблонизатор, который используется для генерации выходных данных с использованием предопределенных шаблонов. Теперь давайте создадим файл шаблона Freemaker под названием hello.fm со следующим содержимым:

Hello World ${name}

Приведенный выше файл является шаблоном, где name — это параметр, который будет передан извне с помощью определенного действия. Вы сохраните этот файл в своем CLASSPATH.

Далее, давайте изменим struts.xml, чтобы указать результат следующим образом:

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name = "struts.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">

      <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction"
         method = "execute">
         <result name = "success" type = "freemarker">
            <param name = "location">/hello.fm</param>
         </result>
      </action>
      
   </package>

</struts>

Давайте сохраним наши файлы HelloWorldAction.java, HelloWorldAction.jsp и index.jsp, как мы их создали в главе с примерами.

Теперь щелкните правой кнопкой мыши на имени проекта и выберите « Экспорт»> «Файл WAR», чтобы создать файл «War».

Затем разверните эту WAR в каталоге веб-приложений Tomcat. Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресу http: // localhost: 8080 / HelloWorldStruts2 / index.jsp . Это создаст следующий экран.

Hello World Struts 4

Введите значение «Struts2» и отправьте страницу. Вы должны увидеть следующую страницу.

Hello World Struts 5

Как вы можете видеть, это в точности то же самое, что и представление JSP, за исключением того, что мы не привязаны к использованию JSP в качестве технологии представления. В этом примере мы использовали Freemaker.

Тип результата перенаправления

Тип результата перенаправления вызывает стандартный метод response.sendRedirect () , в результате чего браузер создает новый запрос к указанному местоположению.

Мы можем указать местоположение либо в теле элемента <result …>, либо в качестве элемента <param name = «location»>. Redirect также поддерживает параметр parse . Вот пример, настроенный с использованием XML:

<action name = "hello" 
   class = "com.tutorialspoint.struts2.HelloWorldAction"
   method = "execute">
   <result name = "success" type = "redirect">
      <param name = "location">
         /NewWorld.jsp
      </param >
   </result>
</action>

Так что просто измените свой файл struts.xml, чтобы определить тип перенаправления, как упомянуто выше, и создайте новый файл NewWorld.jpg, куда вы будете перенаправлены всякий раз, когда действие приветствия вернет успех. Вы можете проверить пример Struts 2 Redirect Action для лучшего понимания.