1. Descrição do problema:
No programa da Web da SprinVMVC, envio a solicitação de postagem da Ajax na página e uso @Requestbody para receber os parâmetros no corpo da solicitação no servidor. Durante a execução, eu queria que o servidor enviasse solicitação AJAX. O navegador continuou feedback 415 tipo de mídia não suportado ou código de status 400, pensando que havia algo errado com a redação do Ajax. Depois de procurar as informações por um longo tempo, descobri que há algo faltando na configuração do arquivo spring-mvc.config. Obviamente, também é possível que você esteja realmente perdendo as configurações do parâmetro do tipo conteúdo no Ajax. Após a análise, devo ter um problema com a configuração do arquivo springmvc-config.xml.
(Nota): 400: (Solicitação de erro) O servidor não entende a sintaxe da solicitação. 415: (tipo de mídia não suportado) O formato solicitado não é suportado pela página solicitada.
2. Solução:
No arquivo springmvc-config.xml, é adicionado um conversor de informações de solicitação StringHttpMessageConverter, e o fragmento de configuração é o seguinte:
<! --- stringhttpmessageConverter bean-> <bean id = "stringhttpmessageConverter" class = "org.springframework.http.converter.stringhttpmessageConverter"/> <!-Iniciar a função de poça mvc para completar o MAPPLE da MAPPLE OS SUPLAGENSO da Bancho ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > < property name= "messageConverters" > < list> < ref bean= "mappingJacksonHttpMessageConverter" /> <!-- New StringMessageConverter bean--> < ref bean= "stringHttpMessageConverter" /> <ref Bean = "JSONHTTPMESSAGECONVERTER" />?
3. Introdução ao HTTPMESSAGECONVERTER Solicitação Informações Conversor:
A interface httpmessageConverter especifica um conversor que pode converter informações de solicitação HTTP e informações de resposta HTTP no formato. Geralmente, existem os seguintes conversores que implementam a interface httpmessageConverter:
ByteArrayHttpMessageConverter: Responsável pela leitura de dados de formato binário e escreva dados de formato binário;
StringHttpMessAgEConverter: Responsável pela leitura de dados do formato da string e gravar dados de formato binário;
ResourceHttpMessageConverter: Responsável pela leitura de arquivos de recursos e gravação de dados de arquivos de recursos;
FormHttpMessageConverter: Responsável pela leitura dos dados enviados pelo formulário (o formato de dados que pode ser lido é o aplicativo/x-www-forma-urlncoded e não pode ler dados de formato multipart/formato de formulário); Responsável por escrever dados nos formatos Application/X-Www-From-Urlencoded e Multipart/Form-Data;
MAPPINGJACKSONHTTPMESSAGECONVERTER: Responsável por ler e escrever dados no formato JSON;
OrigemhttpmessageConverter: Responsável pela leitura e gravação de dados definidos por javax.xml.transform.source no XML;
JAXB2ROOTELEMENTHTTPMESSAGECONVERTER: Responsável por ler e escrever dados no formato de tag XML;
AtomfeedhttpmessageConverter: responsável pela leitura e gravação de dados no formato Atom;
RSSCHANNELHTTPMESSAGECONVERTER: Responsável por ler e escrever dados no formato RSS;
Para mais informações sobre httpmessageConverter, consulte:
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/converter/httpmessageConverter.html
4.HTTPMESSAGECONVERTER Processo de execução de conversor de informações de informações:
Quando o usuário envia uma solicitação, a anotação @RequestBody lerá os dados no órgão de solicitação. O conversor de solicitação padrão httpmessageConverter confirma o formato de dados do cabeçalho da solicitação, obtendo o tipo de conteúdo no cabeçalho da solicitação, adaptando assim o conversor apropriado aos dados da solicitação. Por exemplo, ContentType: Applicatin/JSON, o conversor será adaptado ao MAPPINGJONSHTTPMESSAGECONVERTER. Da mesma forma, a anotação @ResponseBody permitirá que o HTTPMESSAGECONVERTERTERá a detecção da propriedade Accept no cabeçalho para adaptar o conversor de resposta.
Resumir:
Ao usar o SpringMVC para a recepção de dados do servidor, especialmente ao fazer solicitações de AJAX, preste atenção especial às configurações do atributo contentType e aceite o atributo e configure o conversor correspondente em springmvc-config.xml. Quando usamos o SpringMVC para fazer solicitações de AJAX, alguns métodos usam o método Response.getWriter (). Print (). Outro método melhor é adicionar a anotação @ResponseBody para retornar diretamente os dados do tipo de mapa, e o conversor os converte automaticamente no tipo de dados JSON.