首先,需要清楚,http state 406代表什么意思:
406是HTTP協議狀態碼的一種,表示無法使用請求的特性來響應請求的網頁。一般指客戶端瀏覽器不接受所請求頁面的MIME類型。
出現這樣的錯誤無非就是三種情況:
在ssm框架中使用的@ResponseBody注解或將返回值變成json的形式返回到前台頁面。
1、json所依賴的jar包不存在。
1).如果是maven項目的話,可以將
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.3</version> </dependency>
引入到pom文件中。
然后,
<!--json轉化器,它可以將結果轉化--> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/json;charset=UTF-8</value> </list> </property> </bean>
2)、spring和jackson版本對不上:
如果是使用的spring 4.0.*的話,可以引入jackson1.9.*的包,
如果是使用的spring4.1.*的話,可以引入jackson2.7.*的。
3)、我出現的就是第三種情況,
對應請求的后綴是.html的。
如果是以html為后綴的,返回的默認類型是text/html,而請求的是application/json的類型,瀏覽器無法解析,就會報錯。
這里可以將請求的后綴改成如 .action等 也可以 就不會報錯了
或者一定要使用html頁面的話 可以做一下修改
:解決方法:所以我們要針對此情況進行配置,更改html對應返回的類型。(注意:1、先聲明下我使用的spring 版本:4.1.9,2、如果想要使用@ResponseBody返回json格式,就需要加載這三個包:jackson-core、jackson-databind和jackson-annotations,請自行去mvn repository中獲取) 一般我們是配置在mvc配置文件中需要配置<mvc:annotation-driven />, 所以我們只要修改下這里就行,修改配置代碼如下:
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" /> <!-- 以.html為后綴名訪問,默認返回數據類型是 text/html, 所以要修改返回的數據類型 --> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="mediaTypes"> <map> <entry key="html" value="application/json;charset=UTF-8"/> </map> </property> </bean>
然后重啟一下項目,就可以正常請求了。
轉載之---https://blog.csdn.net/zhangtxsir/article/details/79521810