1. Описание проблемы:
В веб -программе Sprinvmvc я отправляю запрос POST AJAX на странице, а затем использую @Requestbody, чтобы получить параметры в корпусе запроса на сервере. Во время запуска я хотел, чтобы сервер отправил запрос AJAX. Браузер продолжал отзыв 415 неподдерживаемый тип носителя или код состояния 400, думая, что с написанием Ajax что -то не так. После долгого поиска информации в течение долгого времени я обнаружил, что в конфигурации файла Spring-Mvc.config не хватает чего-то не хватает. Конечно, также возможно, что вам действительно не хватает настройки параметра типа контента в AJAX. После анализа у меня должна быть проблема с конфигурацией файла Springmvc-config.xml.
(Примечание): 400: (запрос ошибки) Сервер не понимает синтаксис запроса. 415: (Неподдерживаемый тип носителя) Запрашиваемый формат не поддерживается запрашиваемой страницей.
2. Решение:
В файле Springmvc-config.xml добавляется конвертер запроса stringhttpmessageConverter, а фрагмент конфигурации заключается в следующем:
<! --- StringhttpmessageConverter Bean-> <bean id = "stringhttpmessageconverter" class = "org.springframework.http.converter.stringhttpmessageconverter"/> <!-Начальная пружина Функция аннотации MV = "org.springframework.web.servlet.mvc.annotation.annotationMethodHandlerAdapter"> <name = "messageConverters"> <Sist> <ref bean = "mappingjacksonhttpmessageconverter" /> <!-new Stringmessageconverter bean-> <fre BeanHtperter " /> <! bean = "jsonhttpmessageconverter"/> <ref bean = "formhttpmessageconverter"/> </ list> </ property> </ bean>
3. Введение в httpmessageConverter запрос конвертер информации:
Интерфейс httpmessageConverter указывает преобразователь, который может преобразовать информацию HTTP -запроса и информацию о ответе HTTP в формате. Обычно существуют следующие преобразователи, которые реализуют интерфейс httpmessageConverter:
BytearrayhttpmessageConverter: Отвечает за чтение данных бинарного формата и написание данных двоичного формата;
StringhttpmessageConverter: ответственность за чтение данных формата строки и написание данных двоичного формата;
Resourcehttpmessageconverter: ответственность за чтение файлов ресурсов и написание данных файлов ресурсов;
FormhttpmessageConverter: Отвечает за чтение данных, представленных в форме (формат данных, который может быть прочитал,-это приложение/xwww-form-urlencodied, и не может считывать данные формата Multy/Form-Data); Отвечает за написание данных в приложении/xwww-from-urlencodied и multipart/form-data форматы;
MappingJacksonhttpmessageConverter: ответственность за чтение и написание данных в формате JSON;
SourcehttpmessageConverter: Отвечает за чтение и написание данных, определенных Javax.xml.transform.source в XML;
JAXB2ROOTELEMEMENTHTTPMESSAGECONVERTER: Отвечает за чтение и написание данных в формате тега XML;
Atomfeedhttpmessageconverter: ответственность за чтение и написание данных в формате Atom;
Rsschannelhttpmessageconverter: ответственность за чтение и написание данных в формате RSS;
Для получения дополнительной информации о httpmessageconverter, см.
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/converter/httpmessageconverter.html
4.httpmessageConverter Запрос процесса конвертера:
Когда пользователь отправляет запрос, аннотация @requestbody будет читать данные в органе запроса. Конвертер запроса по умолчанию HTTPMessageConverter подтверждает формат данных заголовка запроса, получая тип контента в заголовке запроса, адаптируя соответствующий преобразователь к данным запроса. Например, ContentType: Applicatin/json, конвертер будет адаптирован к MappingJacksonhttpmessageConverter. Аналогичным образом, аннотация @Responsebody позволит httpmessageConverter обнаружить свойство приема в заголовке для адаптации преобразователя ответа.
Суммировать:
При использовании SpringMVC для приема данных сервера, особенно при выполнении запросов AJAX, обратите особое внимание на настройки атрибута ContentType и принимайте атрибут, а также настройте соответствующий преобразователь в Springmvc-config.xml. Когда мы используем SpringMVC для выполнения запросов AJAX, некоторые методы используют метод ouccess.getWriter (). Print (). Другим лучшим методом является добавление аннотации @Responsebody, чтобы напрямую возвращать данные типа карты, и преобразователь автоматически преобразует его в тип данных JSON.