1. Description du problème:
Dans le programme Web de SprinVMVC, j'envoie la demande de publication d'Ajax sur la page, puis j'utilise @Requestbody pour recevoir les paramètres dans le corps de la demande sur le serveur. Pendant l'exécution, je voulais que le serveur envoie une demande Ajax. Le navigateur a continué à faire des commentaires 415 type de média non pris en charge ou code de statut 400, pensant qu'il y avait quelque chose qui ne va pas avec l'écriture Ajax. Après avoir recherché les informations pendant longtemps, j'ai constaté qu'il manquait quelque chose dans la configuration du fichier Spring-Mvc.Config. Bien sûr, il est également possible que vous manquiez vraiment les paramètres du paramètre de type contenu dans AJAX. Après l'analyse, je devrais avoir un problème avec la configuration du fichier Springmvc-Config.xml.
(Remarque): 400: (demande d'erreur) Le serveur ne comprend pas la syntaxe de la demande. 415: (type de support non pris en charge) Le format demandé n'est pas pris en charge par la page demandée.
2. Solution:
Dans le fichier Springmvc-Config.xml, un convertisseur d'informations de demande StringHttpMessageConverter est ajouté et le fragment de configuration est le suivant:
<! --- StringHttpMessageConverter Bean -> <bean id = "StringHttpMessageConverter" class = "org.springframework.http.converter.stringhttpmessageConverter" /> <! - Démarrer la fonction d'annotation Spring Mvc pour terminer la cartographie des demandes et annotation pojos -> <Bean Classi = "org.springframework.web.servlet.mvc.annotation.annotationMethodHandlerAdapter"> <propriété name = "MessageConverters"> <s list> <ref bean = "MappingJackSonHttpMessageConverter" /> <! - New StringMessageConverter "/> <Ref Bean =" StringHttpMessageConverter "/>> <Ref Bean =" StringHttpmes bean = "JSONHTTPMESSAGECONverter" /> <Ref Bean = "FormHttpMessageConverter" /> </ List> </ Property> </ Bean>
3. Introduction à HttpMessageConverter Request Information Converter:
L'interface HTTPMessageConverter spécifie un convertisseur qui peut convertir les informations de demande HTTP et les informations de réponse HTTP au format. Il existe généralement les convertisseurs suivants qui implémentent l'interface HTTPMessageConverter:
ByteArrayhttpMessageConverter: Responsable de la lecture des données de format binaire et de l'écriture de données de format binaire;
StringHttpMessageConverter: responsable de la lecture des données de format de chaîne et de l'écriture de données de format binaire;
ResourceHttpMessageConverter: responsable de la lecture des fichiers de ressources et de la rédaction de données de fichiers de ressources;
FormHttpMessageConverter: Responsable des données de lecture soumises par format (le format de données qui peut être lu est l'application / x-www-form-urlencoded, et ne peut pas lire les données de format multipart / format de format de format); Responsable de la rédaction de données dans les formats d'application / x-www-from-urlencodés et multipart / formats de format de forme;
MappingjacksonhttpmessageConverter: responsable de la lecture et de l'écriture de données au format JSON;
SourceHttpMessageConverter: Responsable de la lecture et de l'écriture de données définies par javax.xml.transform.source dans XML;
JAXB2ROTEELlementHttpMessageConverter: Responsable de la lecture et de l'écriture de données au format de balise XML;
AtomFeedHttpMessageConverter: Responsable de la lecture et de l'écriture de données au format atome;
RSSChannelHttpMessageConverter: Responsable de la lecture et de l'écriture de données au format RSS;
Pour plus d'informations sur HTTPMessageConverter, veuillez consulter:
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/converter/httpmessageconverter.html
4.HttpMessageConverter Informations de demande Processus d'exécution du convertisseur:
Lorsque l'utilisateur envoie une demande, l'annotation @Requestbody lira les données dans le corps de la demande. Le convertisseur de demande par défaut HTTPMessageConverter confirme le format de données de l'en-tête de demande en obtenant le type de contenu dans l'en-tête de demande, adaptant ainsi le convertisseur approprié aux données de demande. Par exemple, ContentType: applicatin / json, le convertisseur sera adapté pour mappingjacksonhttpmessageConverter. De même, l'annotation @Responsebody permettra à HttpMessageConverter de détecter la propriété d'accepter dans l'en-tête pour adapter le convertisseur de réponse.
Résumer:
Lorsque vous utilisez SpringMVC pour la réception de données du serveur, en particulier lors de la création de demandes AJAX, faites une attention particulière aux paramètres de l'attribut ContentType et acceptez l'attribut, et configurez le convertisseur correspondant dans SpringMvc-Config.xml. Lorsque nous utilisons Springmvc pour faire des demandes AJAX, certaines méthodes utilisent la méthode Response.getWriter (). Print (). Une autre meilleure méthode consiste à ajouter l'annotation @ResponseBody pour renvoyer directement les données du type de carte, et le convertisseur les convertit automatiquement en type de données JSON.