เมื่อเร็ว ๆ นี้ฉันได้เริ่มติดต่อ Framework SpringMVC เฟรมเวิร์กนี้สะดวกมากในการใช้งาน หลังจากสร้างเฟรมเวิร์กรหัสเกือบจะเหมือนกัน แน่นอนว่าเพื่อไปถึงจุดนี้คุณต้องตรวจสอบให้แน่ใจว่าการกำหนดค่าที่เกี่ยวข้องกับ SpringMVC ของคุณเสร็จสมบูรณ์และการกำหนดค่าถูกต้อง!
ในฐานะบล็อกแรกของฉันเกี่ยวกับ S-FLAT RINGMVC บล็อกนี้ส่วนใหญ่พูดถึงวิธีการกำหนดค่า SpringMVC และสามารถทำให้มันกลับไปที่เอนทิตีถั่วได้ตามปกติ เอนทิตีถั่วที่นี่โดยทั่วไปจะถูกส่งกลับไปยังส่วนหน้าในรูปแบบของสตริง JSON
เครื่องมือการพัฒนาที่ใช้คือ Eclipse ซึ่งเป็นเครื่องมือการพัฒนาที่ค่อนข้างเป็นที่นิยม ทุกคนสามารถพิจารณาได้ว่าทุกคนใช้ แต่ระดับความสามารถแตกต่างกัน!
การกำหนดค่าเฉพาะมีดังนี้:
web.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/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.springf.spr. http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/scthema id = "webapp_id" เวอร์ชัน = "3.1"> <context-param> <param-name> contextconfiglocation </param-name> <param-value> classpath: applicationcontext.xml </param-value> </context-param> <sisterer> <plะแสดงผล> returnjSondemo </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </selcome-file-list> <servlet> <servlet-name> dispatcher </servlet-name> <servlet-class> org.springframework.web. <param-name> contextconfiglocation </param-name> <param-value> classpath: dispatcher-servlet.xml </param-value> </itt-param> </servlet> <servlet-mapping> <servlet-name> dispatcher </servlet-name>
dispatcher-servlet.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <ถั่ว xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframeworkel 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.springork http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <mvc: default-servlet-handler/> <บริบท: component-scan base-package =" com.zyq.springmvc.controller expression = "org.springframework.steretype.service"/> </บริบท: Component-scan> <บริบท: คำอธิบายประกอบ-config/> <mvc: คำอธิบายประกอบ-ไดรฟ์> <mvc: ข้อความ-converters> <bean> <value> text/html; charset = utf-8 </alues> </list> </property> </ebean> <bean> <property name = "SupportededMediatypes"> <list> <value> แอปพลิเคชัน/json; charset = utf-8 </alues> <value> แอปพลิเคชัน/x-www-form-urlencoded; charset = utf-8 </alues> </list> </porement> </ebean> </mvc: ข้อความคอนเวอร์เตอร์> </mvc: คำอธิบายประกอบ-ไดรฟ์> </ebeans>
นอกจากนี้ยังมี ApplicationContext.xml แต่ฉันไม่ได้เขียนอะไรเลยดังนั้นฉันจะไม่ให้มัน!
สร้าง index.jsp ใหม่ซึ่งใช้เป็นอินเทอร์เฟซหลักเพื่อทดสอบว่าค่าส่งคืนของแต่ละอินเตอร์เฟสเป็นเรื่องปกติ! รหัสยังได้รับที่นี่:
<%@ page language = "java" contentType = "ข้อความ/html; charset = iso-8859-1" pageencoding = "iso-8859-1"%> <! "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "เนื้อหา =" ข้อความ/html; charset = iso-8859-1 " action = "/returnJSondemo/first"> <อินพุต type = "subment" value = "First"/> </form> <form action = "/returnJSondemo/วินาที"> <อินพุตประเภท = "ส่ง" value = "second"/> </form> <อินพุต type = "subment" value = "Fourth"/> </form> </body> </html>
ณ จุดนี้การกำหนดค่าทั้งหมดจะเสร็จสมบูรณ์โดยทั่วไปแล้วจะมีการประกาศคอนโทรลเลอร์ รหัสเฉพาะนั้นค่อนข้างง่ายและโดยทั่วไปจะอยู่ในรูปแบบคงที่!
MainController.java
แพ็คเกจ com.zyq.springmvc.controller; นำเข้า java.text.simpledateFormat นำเข้า java.util.arraylist; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; org.springframework.web.bind.annotation.requestmapping; นำเข้า org.springframework.web.bind.annotation.responsebody; นำเข้า com.zyq.springmvc.bean.commonbean; @RequestMapping ("/first") @ResponseBody Public CommonBean GetFirst () {CommonBean Bean = New CommonBean (); Bean.setResultCode ("ความสำเร็จ"); Bean.settimestamp (ใหม่ SimpledateFormat ("YYYY/MM/DD HH: MM: SS") รูปแบบ (System.CurrentTimeMillis ())); Bean.setData ("นี่คือข้อความแรก"); คืนถั่ว; } @RequestMapping ("/วินาที") @ResponseBody สาธารณะ CommonBean GetSecond () {CommonBean Bean = New CommonBean (); Bean.setResultCode ("SS"); Bean.settimestamp (ใหม่ SimpledateFormat ("YYYY/MM/DD HH: MM: SS") รูปแบบ (System.CurrentTimeMillis ())); รายการ <String> data = new ArrayList <> (); data.add ("java"); data.add ("C"); data.add ("Python"); data.add ("C ++"); Bean.setData (ข้อมูล); คืนถั่ว; } @requestmapping ("/สาม") @ResponseBody สาธารณะ CommonBean GetThird () {CommonBean Bean = New CommonBean (); Bean.setResultCode ("ความสำเร็จ"); Bean.settimestamp (ใหม่ SimpledateFormat ("YYYY/MM/DD HH: MM: SS") รูปแบบ (System.CurrentTimeMillis ())); แผนที่ <สตริง, สตริง> data = new hashmap <> (); data.put ("First", "Java"); data.put ("สอง", "Python"); data.put ("สาม", "C ++"); data.put ("Fourth", "C"); Bean.setData (ข้อมูล); คืนถั่ว; } @RequestMapping ("/สี่") @ResponseBody สาธารณะ CommonBean GetFourth () {CommonBean Bean = New CommonBean (); Bean.setResultCode ("ความสำเร็จ"); Bean.settimestamp (ใหม่ SimpledateFormat ("YYYY/MM/DD HH: MM: SS") รูปแบบ (System.CurrentTimeMillis ())); Sonbean Sonbean = New Sonbean (); Sonbean.setage (25); SonBean.setName ("Hacker's Delight"); sonbean.setgender ("ชาย"); Bean.setData (Sonbean); คืนถั่ว; -เอฟเฟกต์การทำงานของรหัสมีดังนี้:
ดูเหมือนว่าเบราว์เซอร์ที่แตกต่างกันมีการดำเนินการตามคำขอที่แตกต่างกันสำหรับอินเทอร์เฟซ เมื่อใช้อินเทอร์เฟซคำขอ Eclipse ไฟล์ JSON จะถูกดาวน์โหลดและเนื้อหาของไฟล์เป็นสตริง JSON
เมื่อกำหนดค่าโครงการที่สมบูรณ์คุณจะต้องใช้แพ็คเกจ SpringFramework Jar และแพ็คเกจ JAR ที่เกี่ยวข้องของ Jackson tomcat8.5 ฉันใช้แจ้งข้อผิดพลาดเมื่อทำงานและคุณต้องแนะนำแพ็คเกจ Jar-log Common
เมื่อประกาศอินเทอร์เฟซที่ส่งคืนสตริง JSON ให้แน่ใจว่าใช้คำอธิบายประกอบ @ResponseBody ซึ่งจะเขียนข้อมูลการส่งคืนของอินเทอร์เฟซไปยังพื้นที่ร่างกายในการตอบสนองซึ่งจะส่งกลับไปที่ปลายด้านหน้า
เมื่อฉันทดสอบฉันพบปัญหา เมื่อกลับมาถั่วฉันสามารถคืนแพ็คเกจคลาสเท่านั้น แต่ไม่ใช่การสืบทอดในชั้นเรียนหรือการสืบทอดส่วนต่อประสาน ตัวอย่างเช่น:
หากคุณส่งคืน ParentBean ซึ่งมีเด็กอยู่ข้างในนั่นก็โอเค!
หากเมื่อมีการกำหนดอินเทอร์เฟซคลาสพาเรนต์ที่ส่งคืนจะเป็นคลาสย่อยที่ส่งคืนจริงและมีการรายงานข้อผิดพลาดในเวลานี้และคลาสย่อยไม่สามารถแปลงเป็นคลาสพาเรนต์ได้หมายความว่าคุณไม่สามารถแปลงวัตถุสตริงเป็นวัตถุวัตถุได้ ในเรื่องนี้มันควรจะขึ้นอยู่กับคลาสหลักที่ไม่สามารถหาคุณลักษณะของคลาสย่อยซึ่งนำไปสู่การไม่สามารถแปลงวัตถุถั่วเป็นสตริง JSON ได้ตามปกติ ดังนั้นจึงไม่ได้รับอนุญาตให้ประกาศถั่วในอินเทอร์เฟซในเฟรมเวิร์กและคลาสย่อยของถั่วจะถูกส่งคืน (เหตุผลเหล่านี้เป็นเพียงการคาดเดาส่วนตัวและเหตุผลเฉพาะก็ต้องมีการวิเคราะห์รหัสในกรอบ)!
ตกลงนั่นคือทั้งหมดที่เกี่ยวกับการกลับมาสตริง JSON! แนบซอร์สโค้ดของการสาธิตแพ็คเกจ JAR ที่คุณต้องการอยู่ภายในคุณสามารถดาวน์โหลดได้ด้วยตัวเองหากคุณต้องการ!
ดาวน์โหลดซอร์สโค้ด
ตัวอย่างข้างต้นคำอธิบายของการใช้ SpringMVC เพื่อส่งคืนสตริง JSON เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น