فيما يلي الرمز الكامل للإجراء بأكمله:
حزمة 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 ؛ استيراد com.opensymphony.xwork2.actionsupport ؛ يمتد معامل مستخدم الفئة العامة Actionupport { / ** * * / private static Final Long SerialVersionuid = 1L ؛ // كائن سيتم تسلسله بواسطة struts2 في خريطة json سلسلة خاصة <string ، object> datamap ؛ / *** Constructor*/ public useraction () {// تهيئة datamap كائن MAP = new hashmap <string ، Object> () ؛ } / *** اختبار إرجاع بيانات JSON في طريقة عرض من خلال الإجراء* regurn* / 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 ("المستخدم" ، المستخدم) ؛ jsonobject.accumulate ("النجاح" ، صحيح) ؛ // فيما يلي بيانات في كائن الطلب ، لذلك لا يمكن أن يكون هناك نوع = "إعادة التوجيه" في تكوين النتيجة لـ Struts ServleTActionContext.getRequest (). العودة النجاح } ؛ / *** الاختبار إرجاع بيانات JSON في Struts2 بشكل افتراضي* regurn*/ السلسلة العامة testbyaction () {// سيتم تحويل البيانات الموجودة في datamap إلى سلسلة JSON بواسطة Struts2 ، لذلك يجب عليك أولاً مسح البيانات في datamap.clear () ؛ مستخدم المستخدم = مستخدم جديد () ؛ user.setId ("123") ؛ user.setName ("jsonactionStruts2") ؛ user.setPassword ("123") ؛ user.setsay ("Hello World!") ؛ datamap.put ("المستخدم" ، المستخدم) ؛ // ضع في هوية ما إذا كانت العملية ناجحة datamap.put ("النجاح" ، صحيح) ؛ // إرجاع النجاح الناجح للعودة ؛ } / *** إرجاع بيانات JSON بالطريقة التقليدية من خلال الإجراء* throws ioException* / public void doaction () يلقي ioException {httpservletresponse = servleTactionContext.getResponse () ؛ // الكود التالي تم نسخه من json.java response.setContentType ("text/html") ؛ PrintWriter خارج. out = response.getWriter () ؛ // الكائن المراد إرجاعه إلى مستخدم العميل = مستخدم جديد () ؛ user.setId ("123") ؛ user.setName ("jsonactiongeneral") ؛ user.setPassword ("json") ؛ user.setsay ("مرحبًا ، أنا إجراء لطباعة json!") ؛ jsonobject json = new jsonobject () ؛ json.accumulate ("النجاح" ، صحيح) ؛ json.accumulate ("المستخدم" ، المستخدم) ؛ Out.println (json.toString ()) ؛ // نظرًا لأن بيانات JSON يتم تمريرها في شكل سلسلة عادية أثناء عملية التسليم ، يمكننا أيضًا تقسيم السلاسل يدويًا التي تمتثل لمواصفات بناء جملة JSON وإخراجها إلى العميل // وظيفة الجملتين التاليتين هي نفس وظيفة الأسطر 38-46 ، والتي ستعود إلى كائن المستخدم وحقل النجاح إلى العميل // jsonstring = "{/" user/": {/" id/":/" 123/"،/" name/":/ // out.println (jsonstring) ؛ out.flush () ؛ out.close () ؛ } /*** عندما يقوم Struts2 بتسلسل سمة محددة ، يجب أن يكون هناك طريقة getter لتلك السمة. في الواقع ، إذا لم يكن هناك سمة ، فإن طريقة getter هي موافق * @RETURN */ MAP Public <String ، Object> getDatamap () {return datamap ؛ }}ملف تكوين struts.xml الكامل هو كما يلي:
<؟ مساحة الاسم = "/test"> <Action name = "testbyaction" method = "testByAction"> <result type = "json"> <!- هنا تحدد السمات التي سيتم تسلسلها بواسطة Struts2. يجب أن تحتوي هذه السمة على طريقة getter المقابلة في الإجراء-> <!-افتراضيًا ، سيتم تسلسل قيم جميع طرق getter مع قيم الإرجاع ، بغض النظر عما إذا كانت الطريقة لها خصائص مقابلة-> <param name = "root" سيتم تسلسل Datamap-> <!-حدد الخصائص الموجودة في Datamap سيتم استبعادها من Datamap. لن يتم تسلسل هذه الخصائص المستبعدة ، ولن تظهر نصفها في نفس الوقت مثل تكوين المعلمة أعلاه-> <!-<param name = "excludeproperties"> النجاح </param>-> </result> </action> </package> <package name = "default" extends = </sace> <action name = "testbyjsp" method = "testbyjsp"> <result name = "success">/actionjsp.jsp </redres
المثال أعلاه لإخراج بيانات JSON في العمل في Struts2 هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.