завел мой врач издалека.
410013796724260
• Webmoney
R335386147728
Z369087728698
Действия actions Struts2Фреймворк Struts2 ориентирован на действия (action), которые являются его основным элементом, т.е. ядром фреймворка. Действия обрабатывают запросы пользователей и определяют результат его выполнения. Struts2 назначает каждому action свой уникальный URL и набор результатов. Фреймворк включает пять констант, которые определяют результат выполнения действия и которые можно использовать в приложении :
Если этих констант будет недостаточно, то можно дополнительно определить любые свои. Действие в Struts2 представляет простой java-класс (action-класс), который должен наследовать свойства класса com.opensymphony.xwork2.ActionSupport. Класс ActionSupport содержит виртуальную функцию execute(), возвращающую строковое значение. Именно в этой функции определяется результат выполнения действия, или результат обработки запроса HttpServletRequest. Примечание : В последних версиях Struts2 действие в виде java-класса может не наследовать свойства класса ActionSupport. Но этот класс (действие) должен содержать метод execute() и должен быть описан в файле конфигурации struts.xml. Действия в Struts2 выполняют функцию обработки и передачи данных для дальнейшего их представления в JSP-странице или других вариантах отображения страницы пользователю. Кроме того, action указывает фреймворку какой результат необходимо отобразить пользователю. Struts2 приложение авторизацииСоздадим простейшее Struts2 приложение авторизации. Для разработки будет использоваться среда Eclipse, а в качестве браузера - Internal Web Browser. В приложении создадим действие LoginAction.java. Основная функция данного action будет заключаться в том, чтобы проверить заполнение текстовых полей страницы index.jsp. Если пользователь заполнит текстовые поля, то метод execute() вернет строковое значение "success", если не заполнит - то "error". В зависимости от результата действия фреймворк будет открывать либо страницу success.jsp, либо error.jsp. На следующем скриншоте представлена структура проекта StrutsAction. ![]() Дескриптор приложения web.xml не описывается на странице. Листинг web.xml можно увидеть на странице Пример Struts2, где рассматривается вопрос кодировки передаваемых серверу сообщений. Листинг action классa LoginAction.javapackage example; public class LoginAction { private String userName = null; private String password = null; private String message = null; public LoginAction() {} public String execute() { if ((getUserName().trim().length() > 0) && (getPassword().trim().length() > 0)) { setMessage ("Добро пожаловать, " + getUserName()); return "SUCCESS"; } else { setMessage ("Не заполнено одно из обязательных полей"); return "ERROR"; } } public String getMessage() { return message; } public void setMessage ( String message ) { this.message = message; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } Действие LoginAction переопределяет функцию execute. Как только будет обращение к этому действию Struts2 сразу же вызовет его метод execute, который проверит поля "userName" и "password", и, в зависимости от состояния, вернет либо "success", либо "error". На странице проверки данных показано, как использовать метод validate() для проверки введенных данных пользователя. Листинг JSP-страницы index.jspНа этой странице оператор должен ввести "Логин", "Пароль" и нажать кнопку Submit. По нажатию на кнопку серверу передается информация страницы (userName, password) и вызывается действие "login". <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <html> <head> <title>Страница авторизации</title> </head> <body> <s:form action="login" > <s:textfield name="userName" label="Логин"/> <s:password name="password" label="Пароль"/> <s:submit /> </s:form> </body> </html> В строке <%@ taglib uri="/struts-tags" prefix="s" %> подключаются теги Struts2, после чего обращение к объектам фреймворка производится через префикс "s". В теле страницы определено несколько тегов Struts2. В первом теге формы <s:form ... > определяется действие action="login", отвечающее за обработку данных. Далее в теле формы установлены текстовые поля "userName" и "password". При нажатии на кнопку <s:submit /> управление передается серверу и вызывается действие login. Интерфейс страницы представлен на следующем скриншоте. ![]() Файл конфигурации struts.xmlВ struts.xml необходимо определить связь страницы index.jsp с действием "login". <?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> <package name="default" namespace="" extends="struts-default"> <action name="login" class="example.LoginAction"> <result name="SUCCESS">/success.jsp</result> <result name="ERROR">/error.jsp</result> </action> </package> </struts> В файле конфигурации определено, что действие "login" связано с классом example.LoginAction. В зависимости от результата (result) выполнения действия будет открыта либо страница success.jsp, либо error.jsp. Листинг страницы success.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Страница приветствия</title> </head> <body> <h1>Struts2 приветствует Вас</h1> <i><s:property value="message" /></i><br/> </body> </html> В случае успешного выполнения действия "login" сервер откроет страницу success.jsp, интерфейс которой представлен на следующем скриншоте. ![]() JSP-страница success.jsp использует теги Struts2, для отображения сообщения действия. Следует отметить, что фреймворк передает данные через свой внутренний объект ValueStack, к которому мы имеем доступ на странице JSP через тег <s:property ... />. Но это уже отдельный вопрос и он рассмотрен на странице Представление OGNL. Листинг страницы error.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Страница ошибки/title> </head> <body> <h2>Ошибка авторизации</h2> <i><s:property value="message" /></i> </body> </html> Страница ошибки error.jsp выполняет только одну функцию - сообщает пользователю, что одно из полей осталось не заполнено. ![]() Скачать примерыИсходные коды рассмотренного примера можно скачать здесь (5.35 Мб). |