Как упоминалось ранее, тег <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 . Это создаст следующий экран.
Введите значение «Struts2» и отправьте страницу. Вы должны увидеть следующую страницу.
Как вы можете видеть, это в точности то же самое, что и представление 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 для лучшего понимания.