アクション全体の完全なコードは次のとおりです。
パッケージcn.ysh.studio.struts2.json.demo.action; java.io.ioexceptionをインポートします。 java.io.printwriterをインポートします。 java.util.hashmapをインポートします。 java.util.mapをインポートします。 javax.servlet.http.httpservletResponseをインポートします。 Import org.apache.struts2.servletactionContext; net.sf.json.jsonobjectをインポートします。 cn.ysh.studio.struts2.json.demo.bean.userをインポートします。 com.opensymphony.xwork2.actionsupportをインポートします。 Public Class UseractionはActionSupport { / ** * * / private static final long serialversionuid = 1l;を拡張します。 // struts2によってシリアル化されるオブジェクトは、json文字列プライベートマップ<string、object> datamap; / *** constructor*/ public useraction(){//マップオブジェクトの初期化dataMap = new Hashmap <string、object>(); } / ***テストjsonデータをアクションを介してビューでjsonデータを返します* @return* / public string testbyjsp(){user user = new user(); user.setId( "123"); user.setname( "jsonactionjsp"); user.setPassWord( "123"); user.setsay( "Hello World!"); jsonobject jsonobject = new jsonobject(); jsonobject.accumulate( "user"、user); jsonobject.accumulate( "success"、true); //ここにリクエストオブジェクトのデータがあるため、struts servletactioncontext.getRequest()。setAttribute( "data"、jsonobject.tostring())の結果構成にtype = "redirect"がありません。成功を返す; }; / ***テストはデフォルトでstruts2のjsonデータを返します* @return*/ public string testbyaction(){//データマップのデータはstruts2によってjson文字列に変換されるため、最初にdatamap.clear()のデータをクリアする必要があります。 user user = new user(); user.setId( "123"); user.setname( "jsonactionstruts2"); user.setPassWord( "123"); user.setsay( "Hello World!"); datamap.put( "user"、user); //操作が成功しているかどうかをIDに入れます。 //結果を返しますreturn success; } / ***アクションを通じてJSONデータを従来の方法で返します* @Throws IOException* / public void doaction()throws ioexception {httpservletResponse response = servletactionContext.getResponse(); // json.java Response.setContentType( "Text/HTML")からコピーされた次のコード。 printwriter out; out = response.getWriter(); //クライアントに返されるオブジェクトユーザー= new user(); user.setId( "123"); user.setname( "jsonactiongeneral"); user.setPassWord( "json"); user.setsay( "こんにちは、私はjsonを印刷するためのアクションです!"); jsonobject json = new jsonobject(); json.accumulate( "success"、true); json.accumulate( "user"、user); out.println(json.tostring()); // JSONデータは配信プロセス中に通常の文字列の形で渡されるため、JSON構文の仕様に準拠し、クライアントに出力する文字列を手動でスプライスすることもできます//次の2つの文の関数は、ユーザーオブジェクトとクライアントに成功フィールドを返します。 jsonstring = "{/" user/":{/" id/":/" 123/"、/" name/":/" jsonactiongeneral/"、/" say/":/" hello、私はjson! // out.println(jsonstring); out.flush(); out.close(); } /*** struts2が指定された属性をシリアル化する場合、その属性にはゲッターメソッドが必要です。実際、属性がない場合、getterメソッドのみがOK * @return */ public Map <string、object> getDatamap(){return datamap; }}完全なstruts.xml構成ファイルは次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype struts public " - // apacheソフトウェア財団// dtdストラット構成namespace = "/test"> <action name = "testbyaction" method = "testbyaction"> <result type = "json"> <! - ここで、struts2によってシリアル化される属性を指定します。この属性には、アクションに対応するゲッターメソッド - > <! - デフォルトでは、メソッドに対応するプロパティがあるかどうかに関係なく、返品値を持つすべてのゲッターメソッドの値がシーケンスされます - > <param name = "root"> datamap </param> <!シリアル化されます - > <! - データマップ内のどのプロパティがデータマップから除外されるかを指定します。これらの除外されたプロパティはシリアル化されず、半分は上記のパラメーター構成と同時に表示されません - > <! - <param name = "excludeproperties"> success </param> - > </result> </action> </package> <package name = "default" extends = "struts-default" namespace = " <アクションname = "testbyjsp" method = "testbyjsp"> <result name = "success">/actionjsp.jsp </result> </action> </package> </struts>
Struts2で動作しているJSONデータを出力する上記の例は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。