Baru -baru ini saya sudah mulai menghubungi kerangka kerja SpringMVC. Kerangka kerja ini sangat nyaman untuk digunakan. Setelah kerangka kerja dibangun, kode ini hampir sama. Tentu saja, untuk mencapai titik ini, Anda harus memastikan bahwa konfigurasi terkait SpringMVC Anda telah selesai dan konfigurasinya benar!
Sebagai blog pertama saya tentang S-Flat RingMVC, blog ini terutama berbicara tentang cara mengkonfigurasi SpringMVC dan dapat membuatnya kembali ke entitas kacang secara normal. Entitas kacang di sini umumnya dikembalikan ke ujung depan dalam bentuk string JSON.
Alat pengembangan yang digunakan adalah Eclipse, yang juga merupakan alat pengembangan yang relatif populer. Ini dapat dianggap digunakan oleh semua orang, tetapi tingkat kemahirannya berbeda!
Konfigurasi spesifiknya adalah sebagai berikut:
Web.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlnsmlnsp.org/org/xlns =" http://xmlnsmlnsp.org/org/xx = xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:eva/schema" xsi: schemalocation = "http:eve/schema" XSI: schemalocation = "http:eve/schema" xsi: schemalocation = "http:eve/schema" xsi: schemalocation = "http:eon http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema/context http://wwww.spramework.org.org/context http://www.spramework.org/contex http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "id =" Webapp_id "Versi =" 3.1 "> <context-param> <param> context> context> version =" 3.1 "> <context-param> <param> context> context> version =" 3.1 "> <Context-param> <param> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <display-name>ReturnJsonDemo</display-name> <welcome-file-list> <creend Welcome-File> index.jsp </celcome-file> </celcome-file-file> <servlet> <servlet-name> dispatcher </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet> <init-param> <param-name> ContextcoGiCer </servlet-class> <Il init-param> ContextCONCONCONCHOATION </it-class> <Ilin-param> ContextConfiglet <param-value> classPath: dispatcher-servlet.xml </param-value> </it-param> </servlet> <servlet-papping> <servlet-name> Dispatcher </servlet-name> <Rerl-pattern>/</rerl-pattern> </servlet-mapping> </Web-appaps>
Dispatcher-servlet.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <beans xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframework/org/orga/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:eva/schema" xsi: schemalocation = "http:eve/schema" XSI: schemalocation = "http:eve/schema" xsi: schemalocation = "http:eve/schema" xsi: schemalocation = "http:eon http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-rller-4. <konteks: komponen-scan-package = "com.zyq.springmvc.controller"> <konteks: tidak termasuk filter type = "annotation" expression = "org.springframework.steretype.service" /< /context: component-scan> <konteks: annotation-config /con-con-con-con-con-con-con-con-con-con-con-con-con-con-compon-compon-compon-compon-con-compon-con-compon-con. <name properti = "SupportedMediatypes"> <list> <value> Teks/polos; charset = utf-8 </value> <value> Teks/html; charset = utf-8 </value> </list> </prively> </ bean> <bean> <name properti = "SupportedMediatypes"> <list> <ter nilai/jilid/<bean> <properti = "SupportedMediatypes"> <List> Nilai/Nilai/JADI; charset = UTF-8 </ value> <value> Aplikasi/X-WWW-Form-Urlencoded; charset = UTF-8 </ value> </list> </pruptent> </bean> </mvc: converters pesan> </mvc: anotasi-driven> </beans>
Ada juga ApplicationContext.xml, tapi saya tidak menulis apa pun di dalamnya, jadi saya tidak akan memberikannya!
Buat index.jsp baru, yang digunakan sebagai antarmuka utama untuk menguji apakah nilai pengembalian setiap antarmuka normal! Kode juga diberikan di sini:
<%@ page language = "java" contentType = "text/html; charset = iso-8859-1" pageEncoding = "iso-8859-1"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Main Page</title></head><body> <h1>Welcome Main Page!!!</h1> <form Action = "/returnjsondemo/first"> <input type = "kirim" value = "first"/> <form> <form action = "/returnjsondemo/second"> <input type = "kirim" value = "second"/> <form Action = "/returnjsondemo/ketiga"> <input type = "Submit =" Submit = " Action = "/returnjsondemo/fourth"> <input type = "kirim" value = "fourth"/> </form> </body> </html>
Pada titik ini, semua konfigurasi pada dasarnya selesai, dan kemudian pengontrol dinyatakan. Kode spesifiknya relatif sederhana, dan pada dasarnya dalam format tetap!
MainController.java
Paket com.zyq.springmvc.controller; import java.text.simpledateFormat; impor java.util.arraylist; import java.util.hashmap; impor java.util.list; import java.util.map; impor org.springframork.steretype; org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.responseBody; import com.zyq.springmvc.bean.commonbean; com.zyq.springmvc.bean.bonlonbean; @RequestMapping ("/first") @ResponseBody public commonbean getFirst () {commonbean bean = new commonbean (); bean.setresultCode ("Sukses"); bean.settimestamp (new SimpleDateFormat ("yyyy/mm/dd hh: mm: ss"). format (System.currentTimemillis ())); bean.setData ("Ini pesan pertama"); Kembalikan kacang; } @RequestMapping ("/kedua") @ResponseBody public commonbean getsecond () {commonbean bean = new commonbean (); bean.setresultCode ("ss"); bean.settimestamp (new SimpleDateFormat ("yyyy/mm/dd hh: mm: ss"). format (System.currentTimemillis ())); Daftar <string> data = new ArrayList <> (); data.add ("java"); data.add ("c"); data.add ("Python"); data.add ("C ++"); bean.setData (data); Kembalikan kacang; } @RequestMapping ("/ketiga") @ResponseBody public commonbean getTheRd () {commonbean bean = new commonbean (); bean.setresultCode ("Sukses"); bean.settimestamp (new SimpleDateFormat ("yyyy/mm/dd hh: mm: ss"). format (System.currentTimemillis ())); Peta <string, string> data = hashmap baru <> (); data.put ("pertama", "java"); data.put ("kedua", "Python"); data.put ("ketiga", "C ++"); data.put ("keempat", "c"); bean.setData (data); Kembalikan kacang; } @RequestMapping ("/fourth") @ResponseBody public commonbean getFourth () {commonbean bean = new commonbean (); bean.setresultCode ("Sukses"); bean.settimestamp (new SimpleDateFormat ("yyyy/mm/dd hh: mm: ss"). format (System.currentTimemillis ())); Sonbean Sonbean = New Sonbean (); sonbean.setage (25); sonbean.setname ("Hacker's Delight"); sonbean.setgender ("pria"); bean.setdata (sonbean); Kembalikan kacang; }}Efek berjalan dari kode adalah sebagai berikut:
Tampaknya browser yang berbeda memiliki operasi permintaan yang berbeda untuk antarmuka. Saat menggunakan antarmuka permintaan Eclipse, file JSON akan diunduh, dan konten file adalah string JSON.
Saat mengkonfigurasi proyek lengkap, Anda perlu menggunakan paket JAR Springframework dan paket JAR terkait Jackson. Tomcat8.5 yang saya gunakan meminta kesalahan saat berjalan, dan Anda perlu memperkenalkan paket Jar Common-Log.
Saat mendeklarasikan antarmuka yang mengembalikan string JSON, pastikan untuk menggunakan anotasi @ResponseBody, yang akan menulis data pengembalian antarmuka ke area tubuh dalam respons, yaitu untuk meneruskannya kembali ke ujung depan.
Ketika saya sedang menguji, saya mengalami masalah. Saat mengembalikan kacang, saya hanya dapat mengembalikan paket kelas, tetapi bukan warisan kelas atau warisan antarmuka. Misalnya:
Jika Anda mengembalikan Parentbean, yang berisi pengabdian di dalam, tidak apa -apa!
Jika ketika antarmuka didefinisikan, kelas induk yang dikembalikan adalah subkelas yang dikembalikan yang sebenarnya, dan kesalahan dilaporkan saat ini, dan subkelas tidak dapat dikonversi menjadi kelas induk, itu berarti Anda tidak dapat mengubah objek string menjadi objek objek. Dalam hal ini, itu harus didasarkan pada kelas induk yang tidak dapat menemukan atribut subclass, yang mengarah pada ketidakmampuan untuk mengonversi objek kacang menjadi string JSON secara normal. Oleh karena itu, tidak diizinkan untuk menyatakan kacang dalam antarmuka dalam kerangka kerja dan subclass kacang dikembalikan (alasan ini hanyalah tebakan pribadi, dan alasan spesifik juga memerlukan analisis kode dalam kerangka kerja)!
Oke, itu saja tentang mengembalikan string JSON! Lampirkan kode sumber demo, paket jar yang Anda butuhkan juga di dalam, Anda dapat mengunduhnya sendiri jika Anda membutuhkannya!
Unduh kode sumber
Contoh penjelasan di atas menggunakan SpringMVC untuk mengembalikan string JSON adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.