Voici le code complet de toute l'action:
package cn.ysh.studio.struts2.json.demo.action; Importer java.io.ioException; import java.io.printwriter; import java.util.hashmap; importation java.util.map; import javax.servlet.http.httpservletResponse; import org.apache.struts2.ServletActionContext; importer net.sf.json.jsonObject; Importer cn.ysh.studio.struts2.json.demo.bean.user; Importer com.opensymphony.xwork2.actionsupport; La classe publique UserAction étend ActionSupport {/ ** * * / private static final long SerialVersionUID = 1l; // Objet qui sera sérialisé par Struts2 dans une carte privée JSON String <String, Object> DataMap; / ** * constructeur * / public userAction () {// initialiser l'objet map dataMap = new hashmap <string, objet> (); } / ** * Le test renvoie les données JSON dans une vue via l'action * @return * / public string testyjsp () {user user = new User (); user.setid ("123"); user.setName ("jsonActionJSP"); user.setpassword ("123"); User.SetSay ("Hello World!"); JSONObject JSONObject = new JSONObject (); jsonObject.Accumulate ("utilisateur", utilisateur); jsonObject.accumulate ("succès", vrai); // Voici une données dans l'objet de demande, il ne peut donc pas y avoir de type = "redirection" dans la configuration des résultats de Struts ServletActionContext.getRequest (). SetAttribute ("Data", JSonObject.ToString ()); retourner le succès; }; / ** * Test Renvoie les données JSON dans Struts2 par défaut * @return * / public String TestByAction () {// Les données du DATAMAP seront converties en une chaîne JSON par Struts2, vous devez donc d'abord effacer les données dans informatique DataMap.Clear (); Utilisateur utilisateur = nouveau utilisateur (); user.setid ("123"); user.setName ("JSONActionStruts2"); user.setpassword ("123"); User.SetSay ("Hello World!"); dataMap.put ("utilisateur", utilisateur); // a mis dans une identité si l'opération est réussie dataMap.put ("succès", vrai); // Renvoie le succès du rendement des résultats; } / ** * Renvoie les données JSON de la manière traditionnelle à travers l'action * @throws ioException * / public void doaction () lève ioException {httpServletResponse réponse = servletActionContext.getResponse (); // le code suivant copié à partir de json.java réponse.setContentType ("text / html"); Printwriter out; out = réponse.getWriter (); // l'objet à retourner à l'utilisateur client utilisateur = new user (); user.setid ("123"); user.setName ("jsonActionGener"); user.setpassword ("json"); User.SetSay ("Bonjour, je suis une action pour imprimer un JSON!"); JsonObject JSON = new JSONObject (); JSON.Accumulate ("Success", vrai); json.accumulate ("utilisateur", utilisateur); out.println (json.toString ()); // Parce que les données JSON sont transmises sous la forme d'une chaîne normale pendant le processus de livraison, nous pouvons également épisser manuellement des chaînes conformes aux spécifications de syntaxe JSON et les diffuser au client // La fonction des deux phrases suivantes est la même que la fonction des lignes 38-46, qui renverra un objet utilisateur et un champ de réussite au client // chaîne du client // jsonstring = "{/" user / ": {/" id / ": /" 123 / ", /" name / ": /" jsonActionGeneral / ", /" Say / ": /" Bonjour, je suis une action pour imprimer un json! / ", /" mot de passe / ": /" JSON / "}, /" SUCCH / ": true}";; // out.println (jsonstring); out.flush (); out.close (); } / ** * Lorsque Struts2 sérialise un attribut spécifié, il doit y avoir une méthode Getter pour cet attribut. En fait, s'il n'y a pas d'attribut, seule la méthode Getter est OK * @return * / public map <string, object> getDatamap () {return dataMap; }}Le fichier de configuration complet Struts.xml est le suivant:
<? 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 nom = "json" extension = "jsonaul namespace = "/ test"> <action name = "testyaction" method = "testbyaction"> <result type = "json"> <! - Ici, vous spécifiez les attributs qui seront sérialisés par Struts2. Cet attribut doit avoir une méthode Getter correspondante dans l'action -> <! - Par défaut, les valeurs de toutes les méthodes Getter avec des valeurs de retour seront séquencées, que la méthode ait des propriétés correspondantes -> <param name = "root"> dataMap </ param> <! - Spécifiez si pour sérialiser les propriétés vides -> <! DATAMAP sera sérialisé -> <! - Spécifiez quelles propriétés dans le DataMap seront exclues du DATAMAP. Ces propriétés exclues ne seront pas sérialisées, et la moitié n'apparaîtra pas en même temps que la configuration des paramètres ci-dessus -> <! - <Param name = "ExcludeProperties"> Success </ Param> -> </sult> </ Action> </ Package> <Package Name = "Default" ExtendS = "StrUts-Default" Namespace = "> <Action Name =" TestJsonFromaS </ action> <action name = "testbyjsp" méthode = "testbyjsp"> <résultat name = "Success"> / actionjsp.jsp </cult> </ action> </ package> </ Struts>
L'exemple ci-dessus de la sortie des données JSON en action dans Struts2 est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.