لقد بدأت مؤخرًا في الاتصال بإطار SPRINGMVC. هذا الإطار مناسب للغاية للاستخدام. بعد بناء الإطار ، يكون الرمز هو نفس النمط تقريبًا. بالطبع ، للوصول إلى هذه النقطة ، يجب عليك التأكد من اكتمال التكوين المتعلق بـ SpringMVC وأن التكوين صحيح!
بصفتي مدونتي الأولى حول S-flat RingMVC ، تتحدث هذه المدونة بشكل أساسي عن كيفية تكوين SpringMVC ويمكن أن تجعلها تعود إلى كيان الفول بشكل طبيعي. يتم إرجاع كيان الفول هنا بشكل عام إلى الواجهة الأمامية في شكل سلسلة JSON.
أداة التطوير المستخدمة هي Eclipse ، وهي أيضًا أداة تطوير شائعة نسبيًا. يمكن اعتباره يستخدمه الجميع ، لكن مستوى الكفاءة مختلف!
التكوين المحدد هو كما يلي:
web.xml:
<؟ xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" XSI: Schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframeworg http://www.springframework.org/schema/context/spring-context-4.0.xsd id = "webapp_id" version = "3.1"> <context-param> <param-name> contextConfigLocation </param-name> <Param-value> classPath: ApplicationContext.xml </param-value> </ context-param> <StaNerer> </stanker> <simplay-name> returnjsondemo </isplay-name> <-list-file-list> <lisplip-file> index.jsp </iship-file> </iship-file-lister> <Servlet> <Servlet-name> dispatcher </isher-name> <servlet-class> org.springframework.web.displet <Param-name> contextConfigLocation </parm-name> <Parm-value> classpath: dispatcher-servlet.xml </parm-value> </ith-param> </radlet> <cervlet mapping> <servlet-name> مرسل </servlet-name>
المرسل servlet.xml:
<؟ xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" XSI: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframewok.or http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <mvc:default-servlet-handler /> <context:component-scan base-package="com.zyq.springmvc.controller"> <context:exclude-filter type="annotation" expression = "org.springframework.steretype.service"/> </context: component-scan> <context: annotation-config/> <mvc: enclued-driven end> <mvc: charset> </charset> <bean> <property name = <Vale> text/html ؛ charset = utf-8 </value> </list> </property> </bean> <bean> <property name = "supportedediatepes"> <list> <value> application/json ؛ charset = utf-8 </value> <value> application/x-www-form-urlencoded ؛ charset = utf-8 </value> </list> </property> </bean> </mvc: message-converters> </mvc: readiation-scarive> </bans>
يوجد أيضًا ApplicationContext.xml ، لكنني لا أكتب أي شيء فيه ، لذلك لن أعطيه!
قم بإنشاء index.jsp جديد ، والذي يتم استخدامه كواجهة رئيسية لاختبار ما إذا كانت قيمة الإرجاع لكل واجهة طبيعية! يرد الرمز أيضًا هنا:
أقل "http://www.w3. Action = "/returnjsondemo/first"> <input type = "submit" value = "first"/> </form> <form Action = "/returnjsondemo/second"> <input type = "submit" value = "second"/> </form> <type type = "إرسال" value = "الرابع"/> </form> </body> </html>
في هذه المرحلة ، يتم إكمال جميع التكوينات بشكل أساسي ، ثم يتم الإعلان عن وحدة تحكم. الكود المحدد بسيط نسبيًا ، وهي أساسًا بتنسيق ثابت!
MainController.java
package com.zyq.springmvc.controller ؛ import java.text.simpleDateFormat ؛ import java.util.arraylist ؛ import java.util.hashmap ؛ import java.util.list ؛ import java.util.map org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.responsebody ؛ استيراد com.zyq.springmvc.bean.commonbean requestMapping ("/first") responsebody publicbean getFirst () {commonbean bean = new CommonBean () ؛ Bean.SetResultCode ("النجاح") ؛ Bean.SettImestamp (SimpleDateFormat جديد ("Yyyy/Mm/DD HH: MM: SS"). Format (System.CurrentTimeMillis ())) ؛ Bean.setData ("هذه هي الرسالة الأولى") ؛ عودة الفول } @requestmapping ("/second") responsebody publicbean getSecond () {commonbean bean = new CommonBean () ؛ Bean.SetResultCode ("SS") ؛ Bean.SettImestamp (SimpleDateFormat جديد ("Yyyy/Mm/DD HH: MM: SS"). Format (System.CurrentTimeMillis ())) ؛ قائمة <Tring> data = new ArrayList <> () ؛ data.add ("java") ؛ data.add ("C") ؛ Data.add ("Python") ؛ data.add ("C ++") ؛ Bean.setData (البيانات) ؛ عودة الفول } @requestmapping ("/third") responsebody publicbean getthird () {commonbean bean = new CommonBean () ؛ Bean.SetResultCode ("النجاح") ؛ Bean.SettImestamp (SimpleDateFormat جديد ("Yyyy/Mm/DD HH: MM: SS"). Format (System.CurrentTimeMillis ())) ؛ خريطة <string ، string> data = new HashMap <> () ؛ Data.put ("First" ، "Java") ؛ Data.put ("Second" ، "Python") ؛ Data.put ("Tirl" ، "C ++") ؛ Data.put ("الرابع" ، "C") ؛ Bean.setData (البيانات) ؛ عودة الفول } @requestmapping ("/fourth") responsebody publicbean getFourth () {commonbean bean = new CommonBean () ؛ Bean.SetResultCode ("النجاح") ؛ Bean.SettImestamp (SimpleDateFormat جديد ("Yyyy/Mm/DD HH: MM: SS"). Format (System.CurrentTimeMillis ())) ؛ Sonbean Sonbean = New Sonbean () ؛ sonbean.setage (25) ؛ sonbean.setname ("Hacker's Pleash") ؛ sonbean.setgender ("ذكر") ؛ Bean.SetData (Sonbean) ؛ عودة الفول }}تأثير تشغيل الكود كما يلي:
يبدو أن المتصفحات المختلفة لديها عمليات طلب مختلفة للواجهات. عند استخدام واجهة طلب Eclipse ، سيتم تنزيل ملف JSON ، ومحتوى الملف هو سلسلة JSON.
عند تكوين مشروع كامل ، تحتاج إلى استخدام حزمة JAR Springframework وحزمة JAR ذات الصلة من Jackson. tomcat8.5 أستخدم مطالبات خطأ عند التشغيل ، وتحتاج إلى تقديم حزمة جرة السطوع المشترك.
عند إعلان واجهة تُرجع سلسلة JSON ، تأكد من استخدام شرح @ResponseBody ، والذي سيكتب بيانات الإرجاع الخاصة بالواجهة إلى منطقة الجسم في الاستجابة ، والتي تتمثل في إرجاعها إلى الواجهة الأمامية.
عندما كنت أختبر ، واجهت مشكلة. عند إرجاع الفاصوليا ، لا يمكنني إلا إرجاع حزم الفصل ، ولكن ليس وراثة الفئة أو ميراث الواجهة. على سبيل المثال:
إذا قمت بإرجاع أحد الوالدين ، والذي يحتوي على طفل في الداخل ، فهذا جيد!
إذا كانت الواجهة محددة ، فإن الفئة الأصل التي تم إرجاعها هي الفئة الفرعية الفعلية التي تم إرجاعها ، ويتم الإبلاغ عن الخطأ في هذا الوقت ، ولا يمكن تحويل الفئة الفرعية إلى فئة Parent ، فهذا يعني أنه لا يمكنك تحويل كائن السلسلة إلى كائن كائن. في هذا الصدد ، يجب أن يعتمد على الفئة الأم التي لا يمكنها العثور على سمات الفئة الفرعية ، مما يؤدي إلى عدم القدرة على تحويل كائن الفول إلى سلسلة JSON بشكل طبيعي. لذلك ، لا يُسمح بإعلان الفاصوليا في الواجهة في الإطار ويتم إرجاع الفئة الفرعية للفول (هذه الأسباب مجرد تخمينات شخصية ، والأسباب المحددة تتطلب أيضًا تحليل الكود في الإطار)!
حسنًا ، هذا كل شيء عن إرجاع سلاسل JSON! إرفاق الكود المصدري للعروض التوضيحية ، حزمة JAR التي تحتاجها هي أيضًا في الداخل ، يمكنك تنزيلها بنفسك إذا كنت في حاجة إليها!
تنزيل رمز المصدر
المثال أعلاه لاستخدام SPRINGMVC لإرجاع سلاسل JSON هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.