Récemment, j'ai commencé à contacter le cadre SpringMVC. Ce cadre est très pratique à utiliser. Une fois le cadre construit, le code est presque le même modèle. Bien sûr, pour arriver à ce point, vous devez vous assurer que votre configuration liée à SpringMVC a été terminée et que la configuration est correcte!
En tant que premier blog sur le RingMVC S-FLAT, ce blog explique principalement sur la façon de configurer SpringMVC et peut le faire revenir normalement à l'entité bean. L'entité Bean ici est généralement retournée à l'avant sous la forme d'une chaîne JSON.
L'outil de développement utilisé est Eclipse, qui est également un outil de développement relativement populaire. Il peut être considéré comme utilisé par tout le monde, mais le niveau de compétence est différent!
La configuration spécifique est la suivante:
web.xml:
<? xml version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "id =" webapp_id "version =" 3.1 "> <context-param> <paramn-nom> ContexteConfiglocation </ param-name> <Ar param-Value> CLASSPATH: ApplicationContext.xml </ Param-Value> </ Context-Param> <Deurner> <écouteur-class> org.springframework.web.context.ContextLoaderListener </ auditeur-CLASS> </DUIDER> <Display-Name> RETROURNJSONDE </sisplay-nom> <Delay-File-List> </welcome-file-list> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:dispatcher-servlet.xml</param-value> </nit-param> </vrlet> <servlet-mapping> <servlet-name> dispatcher </vrlet-name> <url-potern> / </url-potern> </vrlet-mapping> </low-apprent>
Dispatcher-Servlet.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <beans xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframe.org/schema/Beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans/spring-Beans-4.0.xsde http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <mvc :fault-Servlet-Servlet-Der /> <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:annotation-driven> <mvc:message-converters> <bean> <propriété name = "SupportEdMediaTypes"> <swist> <value> text / plain; charset = utf-8 </value> <value> text / html; charset = utf-8 </value> </sist> </ propriété> </ank> <ean> <propriété name = "SupportEdMediaTyPes"> <list> application / json; charset = utf-8 </value> <value> application / x-www-form-urlencoded; charset = utf-8 </value> </sist> </ propriété> </ bean> </mvc: Message-Converters> </mvc: Annotation-Driven> </bans>
Il y a aussi une applicationContext.xml, mais je n'écris rien, donc je ne le donnerai pas!
Créez un nouvel index.jsp, qui est utilisé comme interface principale pour tester si la valeur de retour de chaque interface est normale! Le code est également donné ici:
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = ISO-8859-1" Pageencoding = "ISO-8859-1"%> <! Doctype Html public "- // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" text / html; charset = iso-8859-1 "> <title> Page principale </ title> </-head> <body> <h1> Page principale de bienvenue !!! action = "/ returnjSondemo / first"> <input type = "soumi" value = "first" /> </ form> <form action = "/ returnjSonmo / seconde"> <input type = "soumi" value = "second" /> </ form> <form action = "/ returnjSondeMo / tiers"> <entrée type = "soumide" value " <input type = "soumi" value = "quatrième" /> </ form> </ body> </html>
À ce stade, toutes les configurations sont essentiellement terminées, puis un contrôleur est déclaré. Le code spécifique est relativement simple et ils sont essentiellement dans un format fixe!
MainController.java
package com.zyq.springmvc.Controller; import java.text.simpledateformat; import java.util.arraylist; import java.util.hashmap; import java.util.list; org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import com.zyq.springmvc.bean.commonbean; import com.zyq.springmvc.bean.sonbean; @Controllerpubl @RequestMapping ("/ First") @ResponseBody public CommonBean getFirst () {CommonBean Bean = new CommonBean (); bean.setResultCode ("succès"); bean.settimestamp (new SimpledateFormat ("yyyy / mm / dd hh: mm: ss"). format (system.currentTimemillis ())); bean.setData ("Ceci est le premier message"); Retour haricot; } @RequestMapping ("/ Second") @ResponseBody public CommonBean getSecond () {CommonBean Bean = new CommonBean (); bean.setResultCode ("ss"); bean.settimestamp (new SimpledateFormat ("yyyy / mm / dd hh: mm: ss"). format (system.currentTimemillis ())); List <string> data = new ArrayList <> (); data.add ("java"); data.add ("c"); data.add ("python"); data.add ("C ++"); bean.setData (données); Retour haricot; } @RequestMapping ("/ Third") @ResponseBody public CommonBean GetThird () {CommonBean Bean = new CommonBean (); bean.setResultCode ("succès"); bean.settimestamp (new SimpledateFormat ("yyyy / mm / dd hh: mm: ss"). format (system.currentTimemillis ())); Map <string, string> data = new hashmap <> (); data.put ("First", "Java"); data.put ("second", "python"); data.put ("Third", "C ++"); data.put ("quatrième", "C"); bean.setData (données); Retour haricot; } @RequestMapping ("/ Fourth") @ResponseBody public CommonBean getFourth () {CommonBean Bean = new CommonBean (); bean.setResultCode ("succès"); 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 ("masculin"); bean.setData (SonBean); Retour haricot; }}L'effet en cours d'exécution du code est le suivant:
Il semble que différents navigateurs ont des opérations de demande différentes pour les interfaces. Lorsque vous utilisez l'interface de demande Eclipse, un fichier JSON sera téléchargé et le contenu du fichier est une chaîne JSON.
Lors de la configuration d'un projet complet, vous devez utiliser le package JAR SpringFramework et le package JAR connexe de Jackson. Le tomcat8.5 J'utilise invite une erreur lors de l'exécution, et vous devez introduire le package de bocal commun.
Lorsque vous déclarez une interface qui renvoie une chaîne JSON, assurez-vous d'utiliser l'annotation @ResponseBody, qui rédigera les données de retour de l'interface dans la zone du corps dans la réponse, qui doit la transmettre à l'avant.
Quand je testais, j'ai rencontré un problème. Lors du retour des haricots, je ne peux retourner que des packages de classe, mais pas l'héritage de classe ou l'héritage d'interface. Par exemple:
Si vous renvoyez une patte parent, qui contient un enfant à l'intérieur, c'est OK!
Si lorsque l'interface est définie, la classe parent renvoyée est la sous-classe renvoyée réelle, et l'erreur est signalée pour le moment, et la sous-classe ne peut pas être convertie en classe parent, cela signifie que vous ne pouvez pas convertir l'objet String en un objet d'objet. À cet égard, il doit être basé sur la classe parent qui ne peut pas trouver les attributs de la sous-classe, ce qui conduit à l'incapacité de convertir normalement l'objet bean en une chaîne JSON. Par conséquent, il n'est pas autorisé à déclarer des haricots dans l'interface dans le cadre et la sous-classe du bean est retournée (ces raisons ne sont que des suppositions personnelles, et les raisons spécifiques nécessitent également une analyse du code dans le cadre)!
Ok, c'est tout à l'idée de retourner JSON Strings! Joignez le code source de la démo, le package JAR dont vous avez besoin est également à l'intérieur, vous pouvez le télécharger vous-même si vous en avez besoin!
Téléchargement du code source
L'exemple ci-dessus de l'utilisation de SpringMVC pour retourner JSON Strings est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.