Vor kurzem habe ich angefangen, mich mit dem SpringMVC -Framework zu wenden. Dieser Rahmen ist sehr bequem zu bedienen. Nachdem das Framework erstellt wurde, ist der Code fast das gleiche Muster. Um an diesen Punkt zu gelangen, müssen Sie natürlich sicherstellen, dass Ihre Konfiguration der SpringMVC abgeschlossen ist und die Konfiguration korrekt ist!
Als mein erster Blog über S-Flat RingMVC spricht dieser Blog hauptsächlich darüber, wie SpringMVC konfiguriert werden kann und es normal zu der Bean-Entität zurückkehren kann. Die Bean -Entität hier wird in Form einer JSON -String allgemein an das vordere Ende zurückgegeben.
Das verwendete Entwicklungswerkzeug ist Eclipse, das auch ein relativ beliebtes Entwicklungsinstrument ist. Es kann von allen als verwendet werden, aber das Kompetenzniveau ist anders!
Die spezifische Konfiguration ist wie folgt:
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/javaeee/web-app_3_1.xsd http://www.spingframework http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springFramework.org/schema/mvc http:/www.Springframe.org/sschema/mvc/pring-mvc-mvc-mvc-mvring-mvring- id = "webapp_id" Version = "3.1"> <context-param> <param-name> contextconfigLocation </param-name> <param-value> classPath: applicationContext.xml </param-value> </context-Param> <hörer> <Hörer-Class-Class-Class-Class-Class-Class-Class-Class-Class-Class-ClasssFringFramework. </listener> <display-name> returnjSondemo </display-name> <willkommen-file-list> <willkommen-file> index.jsp </Welcome-File> </Welcome-File-List> <Servlet> <Servlet-name> Dispatcher </Servlet-name> <Servlet-Class> org. <Param-name> contextconfigLocation </param-name> <param-value> classPath: Dispatcher-servlet.xml </param-value> </init-param> </servlet> <Servlet-Mapping> <Servlet-Name> Dispatcher </servlet-name> <url-patter
Dispatcher-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/javaeee/web-app_3_1.xsd http://www.spingframework 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 "> <contexte: exkludefilter-type" agnotation Expression = "org.springFramework.steretype.Service"/> </context: component-scan> <context: Annotation-config/> <mvc: Annotationsbetrieben> <mvc: message-converters> <bean> <Property name = "SupportedMediaPes"> <list> <value> text/Plain; <wert> text/html; charSet = utf-8 </value> </list> </property> </bean> <bean> <Eigenschaft name = "SupportedMediTypes"> <List> <Werts> Anwendung/JSON; charSet = utf-8 </value> <wert> application/x-www-form-rurcoded; charSet = utf-8 </value> </list> </property> </bean> </mvc: message-converters> </mvc: Annotationsgetrieben> </beans>
Es gibt auch eine applicationContext.xml, aber ich schreibe nichts darin, also werde ich es nicht geben!
Erstellen Sie einen neuen Index.jsp, der als Hauptschnittstelle verwendet wird, um zu testen, ob der Rückgabewert jeder Schnittstelle normal ist! Der Code wird auch hier angegeben:
<%@ page Language = "java" contentType = "text/html; charset = iSO-8859-1" pageCoding = "iso-8859-1"%> <! docType html public "-// w3c // dtd html 4.01 tranitional // 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"> <Eingabe type = "surenden" value = "First"/> </form> <form action = "/returnJSonDemo/zweit"> <Eingabe type = "subine" value = "zweites"/> </form> <form action = "/returnJSondemo/dritter"> <eingabe type ". <input type = "surug" value = "viertes"/> </form> </body> </html>
Zu diesem Zeitpunkt werden alle Konfigurationen im Grunde abgeschlossen und dann wird ein Controller deklariert. Der spezifische Code ist relativ einfach und befindet sich im Grunde genommen in einem festen Format!
MainController.java
Paket 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; import org.springframework.web.bind.annotation.responsebody; com.zyq.springmvc.bean.commonbean; @RequestMapping ("/First") @ResponseBody publicbeanbean getFirst () {CommonBean bean = new CommonBean (); Bean.setResultcode ("Erfolg"); Bean.settimestamp (new SimpledateFormat ("yyyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); Bean.setData ("Dies ist die erste Nachricht"); Rückzahlung; } @RequestMapping ("/Second") @Responbody publicbean GetEcond () {CommonBean Bean = new CommonBean (); bean.setResultcode ("ss"); Bean.settimestamp (new SimpledateFormat ("yyyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); Liste <String> data = new ArrayList <> (); Data.Add ("Java"); Data.Add ("C"); Data.Add ("Python"); Data.Add ("C ++"); Bean.setData (Daten); Rückzahlung; } @RequestMapping ("/dritte") @Responbody publicbean GetThird () {CommonBean Bean = new CommonBean (); Bean.setResultcode ("Erfolg"); Bean.settimestamp (new SimpledateFormat ("yyyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); Karte <string, string> data = new HashMap <> (); Data.put ("First", "Java"); Data.put ("Second", "Python"); Data.put ("dritte", "c ++"); Data.put ("Vierter", "C"); Bean.setData (Daten); Rückzahlung; } @RequestMapping ("/viertes") @Responbody publicbeanbean getfourth () {CommonBean bean = new CommonBean (); Bean.setResultcode ("Erfolg"); 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 ("männlich"); Bean.setData (Sonbean); Rückzahlung; }}Der laufende Effekt des Code ist wie folgt:
Es scheint, dass verschiedene Browser unterschiedliche Anforderungsvorgänge für Schnittstellen haben. Bei Verwendung der Eclipse -Anforderungsschnittstelle wird eine JSON -Datei heruntergeladen und der Inhalt der Datei ist eine JSON -Zeichenfolge.
Bei der Konfiguration eines vollständigen Projekts müssen Sie das SpringFramework JAR -Paket und das zugehörige JAR -Paket von Jackson verwenden. Die Tomcat8.5 Ich verwende beim Ausführen einen Fehler, und Sie müssen das Common-Log-Jar-Paket vorstellen.
Verwenden Sie beim Deklarieren einer Schnittstelle, die eine JSON -Zeichenfolge zurückgibt, die Annotation von @ResponseBody, die die Rückgabedaten der Schnittstelle in den Körperbereich in der Antwort schreibt, die sie wieder an das vordere Ende weitergeben soll.
Als ich testete, stieß ich auf ein Problem. Bei der Rückgabe von Bohnen kann ich nur Klassenpakete zurückgeben, jedoch nicht der Erbschaft oder der Schnittstellenvererbung. Zum Beispiel:
Wenn Sie eine Eltern zurücksenden, die eine Geburt im Inneren enthält, ist das in Ordnung!
Wenn bei der Definition der Schnittstelle die zurückgegebene übergeordnete Klasse die tatsächliche zurückgegebene Unterklasse ist und der Fehler zu diesem Zeitpunkt gemeldet wird und die Unterklasse nicht in die übergeordnete Klasse konvertiert werden kann, bedeutet dies, dass Sie das String -Objekt nicht in ein Objekt umwandeln können. In dieser Hinsicht sollte es auf der übergeordneten Klasse basieren, die die Attribute der Unterklasse nicht finden kann, was dazu führt, dass das Bean -Objekt normalerweise nicht in eine JSON -Zeichenfolge umgewandelt wird. Daher ist es nicht gestattet, Bohnen in der Schnittstelle im Rahmen zu deklarieren, und die Unterklasse der Bean wird zurückgegeben (diese Gründe sind nur persönliche Vermutungen, und die spezifischen Gründe erfordern auch eine Analyse des Code im Rahmen)!
Ok, das geht darum, JSON -Streicher zurückzugeben! Fügen Sie den Quellcode der Demo hinzu, das JAR -Paket, das Sie benötigen, ist ebenfalls drinnen. Sie können es selbst herunterladen, wenn Sie es brauchen!
Quellcode herunterladen
Die obige Beispielerläuterung für die Verwendung von SpringMVC zur Rückgabe von JSON -Zeichenfolgen ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.