代码示例
网页端代码:
<body>
<input name="user" type="text"/>
<button onclick="test1()">ajax测试</button>
<div id="ttt">Java 端返回的数据将在这里显示 </div>
<script type="text/javascript">
function test1(){
$.ajax({
type:"post",
data:"user="+$("input[name='user']").val(),
url:"${pageContext.request.contextPath}/ajax/ajax1.do",
dataType:"text",
success:function (data){
console.log(data);
$("#ttt").html(data);
}
});
}
</script>
</body>
Java 端代码:
@Controller
@RequestMapping("/ajax")
public class AjaxController {
@RequestMapping(value = "/ajax1", method = RequestMethod.POST)
@ResponseBody
public String ajax1(@RequestParam(value = "user") String name) {
System.out.println(name);
return "aaaa";
}
}
在 @RequestMapping 注解中的 method = RequestMethod.POST
,表示请求的方式要求是 post 方式。
@ResponseBody 注 解的作用是将 controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到 response 对象的 body 区,通常用来返回 JSON 数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过 response 对象输出指定格式的数据,也就是下面代码所示形式。
@RequestMapping("/ajax2")
public void ajax2(String code, HttpServletResponse response) {
System.out.println(code);
try {
response.getWriter().append("bbbb");
} catch (IOException e) {
e.printStackTrace();
}
}
如果向 Ajax 请求返回的是 JSON 格式的对象,并且包含中文,那么需要在@RequestMapping("/ajax2") 的地方加上 produces 参数,不然中文无法正确传输。
@RequestMapping(value = "/ajax1", method = RequestMethod.POST,
produces = "application/json;charset=utf-8")
如果向 Ajax 请求返回的是文本,并且包含中文
@RequestMapping(value = "/ajax1", method = RequestMethod.POST,
produces = "text/html;charset=utf-8")
自动将对象转换成 JSON 格式数据
Spring MVC 可以使用上面所说的,用 JSON 的 jar 包,将 Java 对象或者集合转换成 JSON 格式的数据,然后在转换成 String 类型的数据进行输出。
不过 Spring MVC 还有一种更简单的方式实现。
准备工作
在 pom.xml 文件中,引入 jackson-databind 的依赖。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
使用
@RequestMapping(value = "/ajax1", method = RequestMethod.POST,
produces = "application/json;charset=utf-8")
@ResponseBody
public PersonModel ajax2(@RequestParam(value = "user") String name) {
PersonModel pm = new PersonModel();
pm.setName(name);
return pm;
}
Spring MVC 会根据我们刚才引入的依赖自动 Java 对象转换成 JSON 格式。