如何使用Spring获取从Controller到JQueryAjax的json数据响应 我试图从控制器获取json数据但在JQueryAjax中获取错误ststus, 我的代码中有任何错误,这是一个简单的登录应用程序
这是我在春天的控制器
HomeController.java
@RequestMapping(value = "/login.htm", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody User loginUser(HttpServletRequest request, HttpServletResponse response, User ub)
{
String email = request.getParameter("txt_email");
String password = request.getParameter("txt_password");
ub.setEmail(email);
ub.setPassword(password);
UserServiceImpl us = new UserServiceImpl();
User ub1= us.verifyUserLogin(ub);
return ub1;
}
这是我的JQueryAjax
data.js
function usersignin(url)
{
var val = signin_validate();
if (val == false)
{
return;
}
var email = $('#txt_email').val();
var password = $('#txt_password').val();
var formData =
{
'txt_email' : email,
'txt_password' : password,
};
$.ajax(
{
type : 'POST',
url : url,
data : formData,
dataType : 'json',
success : function(res, textStatus)
{
var msg="Succesfully..! Login";
showAlertLogin(msg);
window.location.href='index.jsp'
},
error : function(res, textStatus)
{
var msg="Failed..! Login";
showAlertLogin(msg);
window.location.href='layout.jsp'
}
});
}
我添加了依赖文件
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.10</version>
</dependency>
<!-- Jackson JSON Mapper -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.10</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
<version>2.6.1</version>
</dependency>
我的dispatcher-servlet.xml
<mvc:annotation-driven />
<context:annotation-config/>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
</bean>
但是我没有在ajax中获得json响应只得到错误原因?
在控制台中显示错误
[http-nio-8080-exec-5] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - 处理程序执行导致异常:无法找到可接受的表示
我的浏览器控制台也出现了406错误
答案 0 :(得分:0)
spring mvc设置:
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
答案 1 :(得分:0)
添加以下代码.....
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
</bean>
答案 2 :(得分:0)
抱歉。我们的时间可能相反。
删除您的<mvc:annotation-driven/>
并添加代码:
从控制器方法中删除产生。
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
<property name="prettyPrint" value="false"/>
<property name="objectMapper">
<bean class="spider.common.mapper.JsonMapper"></bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
</bean>