我正在使用Spring MVC来创建我的项目模板。
我正在尝试使用Ajax向我的spring控制器发送JSON请求,我尝试添加json的内容类型等。它是一个POST请求。然而试验失败了。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$.ajax({
url:"getNames",
type:"POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({"name":"testName"}),
async: false,
cache: false,
dataType : "json",
processData:false,
success: function(resposeJsonObject){
// Success Action
}
});
});
</script>
除导入以外的总控制器
@Controller
public class HelloWorldController {
// Produces JSON data
@RequestMapping(value="hello",produces="application/json")
public @ResponseBody String helloWorld() throws JSONException {
JSONObject obj = new JSONObject();
obj.put("my key", "my Value");
return obj.toString();
}
// Accept JSON data
@RequestMapping(value="getNames", method=RequestMethod.POST)
public @ResponseBody Test addNewWorker(@RequestBody Test jsonString) {
Test test = new Test();
test.setName(jsonString.getName());
System.out.println(test.getName());
return test;
}
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Spring3MVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
public class Test implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我的弹簧配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="net.viralpatel.spring3.controller" />
<bean id="test" class="com.qiib.spring3.model.Test"></bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver logException
WARNING: Handler execution resulted in exception: Content type 'application/json;charset=UTF-8' not supported
aopalliance-1.0.jar
commons-logging-1.2.jar
jackson-core-asl-1.9.13.jar
jackson-databind-2.1.4.jar
jackson-mapper-asl-1.9.13.jar
jackson-servlet-api-3.1.0.jar
jstl-1.2.jar
spring-aop-4.2.0.RELEASE.jar
spring-beans- ""
spring-context-""
spring-core-""
spring-expression-""
spring-web-""
spring-webmvc-4.2.0.RELEASE.jar
答案 0 :(得分:0)
我已将您的代码导入到我的项目中,并且它的工作非常好。你应该检查你的bean和pom.xml。我发布了我的代码和结果:
控制器:
@RequestMapping(value="getNames", method=RequestMethod.POST)
public @ResponseBody Test addNewWorker(@RequestBody Test jsonString) {
Test test = new Test();
test.setName(jsonString.getName());
System.out.println(test.getName());
return test;
}
index.js:
$.ajax({
url:"getNames",
type:"POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({"name":"testName"}),
async: false,
cache: false,
dataType : "json",
processData:false,
success: function(resposeJsonObject){
// Success Action
}
});
输出:
2017-08-17 08:59:22.045 INFO 7092 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-08-17 08:59:22.046 INFO 7092 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2017-08-17 08:59:22.049 INFO 7092 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 3 ms
testName