Aquí está el código completo para toda la acción:
paquete cn.ysh.studio.struts2.json.demo.action; import java.io.ioException; import java.io.printwriter; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpservletResponse; importar org.apache.struts2.servletactionContext; importar net.sf.json.jsonObject; import cn.ysh.studio.struts2.json.demo.bean.user; import com.opensymphony.xwork2.ActionSupport; Public ClassationAction extiende ActionSupport { / ** * * / Private static final Long SerialVersionUid = 1l; // Objeto que será serializado por Struts2 en una cadena JSON String Private Map <String, Object> DataMap; / *** constructor*/ public userAction () {// Inicializar el objeto MAP Datamap = new HashMap <String, Object> (); } / *** Test Devuelve los datos JSON en una vista a través de la acción* @return* / public string testByjsp () {user user = new User (); user.setId ("123"); user.setName ("JSONACTIONJSP"); user.setPassword ("123"); user.setsay ("¡Hola mundo!"); JsonObject jsonObject = new JsonObject (); jsonObject.Accumulate ("Usuario", usuario); jsonObject.acumulate ("éxito", verdadero); // Aquí hay datos en el objeto de solicitud, por lo que no puede ser tipo = "redirección" en la configuración de resultados de STRUTS ServLetActionContext.getRequest (). SetAttribute ("Data", jsonObject.ToString ()); devolver el éxito; }; / *** Test Devuelve los datos de JSON en Struts2 por defecto* @return*/ public String testByAction () {// Los datos en el DataMap se convertirán en una cadena JSON por Struts2, por lo que primero debe borrar los datos en IT DataMap.clear (); Usuario user = nuevo usuario (); user.setId ("123"); user.setName ("JSONACTIONSTRUTS2"); user.setPassword ("123"); user.setsay ("¡Hola mundo!"); datAMAP.put ("usuario", usuario); // Pon en una identidad si la operación es exitosa datAMAP.put ("éxito", verdadero); // devuelve el éxito de retorno de resultados; } / *** return JSON Data de manera tradicional a través de la acción* @throws ioexception* / public void doaction () lanza ioexception {httpServletResponse respuesta = servletactionContext.getResponse (); // El siguiente código copiado de json.java respuesta.setContentType ("text/html"); PrintWriter Out; out = respuesta.getWriter (); // El objeto que se devolverá al usuario del cliente user = new User (); user.setId ("123"); user.setName ("JSONACTIONGENERAL"); user.setPassword ("json"); user.setsay ("Hola, soy una acción para imprimir un JSON!"); JsonObject json = new JsonObject (); json.acumulate ("éxito", verdadero); json.acumulate ("usuario", usuario); out.println (json.ToString ()); // Debido a que los datos JSON se pasan en forma de una cadena normal durante el proceso de entrega, también podemos empalmar manualmente las cadenas que cumplen con las especificaciones de la sintaxis JSON y las transferirán al cliente // la función de las siguientes dos oraciones es la misma que la función de las líneas 38-46, que devolverá un objeto de usuario y un campo de éxito al cliente // jsonstring = "{/" user/": {/" id/":/" 123/",/" name/":/" jsonactionGeneral/",/" say/":/" Hola, soy una acción para imprimir un json!/",/" contraseña/":/" json/"},/" éxito/": true}"; // out.println (jsonstring); out.flush (); out.close (); } /*** Cuando Struts2 esializa un atributo especificado, debe haber un método Getter para ese atributo. De hecho, si no hay atributo, solo el método getter está bien * @return */ public map <string, object> getDatamap () {return dataMap; }}El archivo de configuración completo de Struts.xml es el siguiente:
<? xml versión = "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.dtdd"> <truts> <pack name = "json" extends "json" json "json" json "json" json " Namespace = "/test"> <Action name = "testByAction" método = "testByAction"> <result type = "json"> <!- Aquí especifica los atributos que se serializarán por Struts2. Este atributo debe tener un método getter correspondiente en la acción-> <!--Por defecto, los valores de todos los métodos getter con valores de retorno se secuenciarán, independientemente de si el método tiene propiedades correspondientes-> <param name = "root"> dataMap </param> <!-Especifique si es serializar las propiedades vacías-> <!-<param name = "excludenullproperties"> verdadero </verdadero>-<! se serializará-> <!-Especifique qué propiedades en el DatAMAP se excluirán del 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="struts-default" namespace="/"> <action name="testJSONFromActionByGeneral" method="doAction"> </action> <Action name = "testbyjsp" método = "testbyjsp"> <resultado name = "éxito">/ActionJsp.jsp </ resultado> </action> </paquete> </struts>
El ejemplo anterior de la producción de datos JSON en acción en Struts2 es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.