Вот полный код для всего действия:
Пакет cn.ysh.studio.struts2.json.demo.action; импортировать java.io.ioexception; Импорт java.io.printwriter; импортировать java.util.hashmap; импортировать java.util.map; Импорт javax.servlet.http.httpservletresponse; Импорт org.apache.struts2.servletactionContext; Импорт net.sf.json.jsonobject; Импорт cn.ysh.studio.struts2.json.demo.bean.user; Import Com.OpensyMphony.xwork2.ActionsUpport; открытый класс UserAction Extends ActionSupport { / ** * * / Private Static Long Long SerialVersionUID = 1L; // объект, который будет сериализован Struts2 в строку JSON Private Map <String, Object> DataMap; / *** Constructor*/ public userAction () {// Инициализировать объект карты dataMap = new hashmap <string, object> (); } / *** Тест возвращает данные JSON в представлении через действие* @return* / public String testbyjsp () {user user = new user (); user.setid ("123"); user.setName ("jsonActionJsp"); user.setpassword ("123"); user.setsay («Привет, мир!»); JsonObject jsonObject = new jsonObject (); jsonobject.accumulate («Пользователь», пользователь); jsonobject.ccumulate («успех», правда); // Вот данные в объекте запроса, поэтому не может быть типа = "перенаправить" в конфигурации результата struts servletactionContext.getRequest (). SetAttribute ("data", jsonObject.toString ()); вернуть успех; }; / *** Тест возвращает данные JSON в Struts2 по умолчанию* @return*/ public String testbyAction () {// Данные в DataMap будут преобразованы в строку JSON с помощью StrUTS2, поэтому сначала необходимо очистить данные в IT DataMap.Clear (); Пользователь пользователь = новый пользователь (); user.setid ("123"); user.setName ("jsonActionStruts2"); user.setpassword ("123"); user.setsay («Привет, мир!»); dataMap.put ("user", user); // Поместите личность, является ли операция успешной dataMap.put («успех», true); // Возврат успеха возврата результата; } / *** Возвращает данные JSON традиционным способом через действие* @Throws IOException* / public void doAction () Throws IOException {httpservletresponse response = servletactionContext.getResponse (); // Следующий код, скопированный из json.java response.setContentType ("text/html"); PrintWriter Out; out = response.getWriter (); // объект, который будет возвращен клиентскому пользователю пользователь = новый пользователь (); user.setid ("123"); user.setName ("jsonActionGeneral"); user.setpassword ("json"); user.setsay («Привет, я действие для печати JSON!»); JsonObject json = new jsonObject (); json.ccumulate («успех», правда); json.accumulate («Пользователь», пользователь); out.println (json.tostring ()); // Поскольку данные JSON передаются в форме нормальной строки в процессе доставки, мы также можем вручную сплачивать строки, которые соответствуют спецификациям синтаксиса JSON, и выводить их клиенту // Функция следующих двух предложений такая же, как и функция строк 38-46, что вернет объект пользователя и полю успешного поля клиента // строки строк. jsonstring = "{/" user/": {/" id/":/" 123/",/" name/":/" jsonActionGeneral/",/" say/":/" Привет, я - действие для печати json!/",/" пароль/":/" json/"},/" успех/": true}"; // out.println (jsonstring); out.flush (); out.close (); } /*** Когда Struts2 сериализует указанный атрибут, должен быть метод Getter для этого атрибута. На самом деле, если нет атрибута, только метод getter - это нормально * @return */ public map <string, объект> getDatamap () {return dataMap; }}Полный файл конфигурации struts.xml выглядит следующим образом:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // DTD Конфигурация Struts 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <name name "json" extends = "extends =" extends = "extends =" zon "veledends =" json "veledends =" json "veledends =" json "json". namespace = "/test"> <name = "testbyAction" method = "testbyAction"> <result type = "json"> <!- Здесь вы указываете атрибуты, которые будут сериализованы Struts2. Этот атрибут должен иметь соответствующий метод Getter в действии-> <!-По умолчанию значения всех методов Getter с возвращающими значениями будут секвенированы, независимо от того, есть ли метод соответствующие свойства-> <param name = "root"> DataMap </param> <!-Укажите, является ли Serialize Pement Parteries-> <!-<param name = exkemanlulpertores '>->->-<!-</param name = exkemanullPerties ">->->->->-<! DataMap будет сериализован-> <!-Укажите, какие свойства в DataMap будут исключены из DataMap. These excluded properties will not be serialized, and half will not appear at the same time as the above parameter configuration --> <!-- <param name="excludeProperties"> SUCCESS </param> --> </result> </action> </package> <package name="default" extends="structs-default" namespace="/"> <action name="testJSONFromActionByGeneral" method="doAction"> </action> <name = name = "testbyjsp" method = "testbyjsp"> <name name = "успех">/actionjsp.jsp </result> </action> </package> </struts>
Приведенный выше пример вывода данных JSON в действии в StrUTS2 - все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.