SpringMVC 处理 AJAX 请求很简单,只需要在方法的前面加上 @ResponseBody
即可。一般返回 String(可以是JSON, XML, 普通的 Text), 也可以是 Object。
@RequestMapping(value="/ajax")
@ResponseBody // 处理 AJAX 请求,返回响应的内容,而不是 View Name
public String handleAjax() {
return "{username: \"Josh\", password: \"Passw0rd\"}";
}
输出的内容正是方法 handleAjax()
里返回的内容。
不直接返回 Json 字符串,而是返回一个对象,SpringMVC 自动的把对象转换为 Json,需要 Jackson。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
<mvc:annotation-driven>
<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="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
@RequestMapping(value="/json", method= RequestMethod.GET)
@ResponseBody
public Address getAddress() {
Address address = new Address();
address.setId(101);
address.setStreet("五菱街");
return address;
}
package domain;
public class Address {
private int id;
private String street;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}