Ajax前后端数据交互–SSM
前后台数据交互均使用json。
框架ssm(spring+springmvc+mybatis)
@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象
@ResponseBody注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端
1.导包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
2.在配置映射器和适配器时使用
<mvc:annotation-driven></mvc:annotation-driven>
它默认加载了很多格式的解析器,例如JSON等,不需要手动配置。
案例
前端
// 跳转 到tranferaddSub
$.ajax({
url : "/tranfermixtrue",
type : "POST",
dataType:"json",
contentType : "application/json;charset=UTF-8",
<!-- 向后端传输的数据 -->
data : JSON.stringify({
id:getdate(),
accuracy:parseFloat(eval(right/50)),
exercises:cons,
degreeOfDifficulty:1
}),
success:function(result) {
},
error:function(result){
}
});
后端
@RequestMapping(value = "/tranferaddSub")
public String tranferaddSub(@RequestBody Exercises exercises) {
// 作为addSUb的中转站
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ExerciseSerivice serivice = context.getBean("ExerciseSeriviceImpl", ExerciseSerivice.class);
String jsonString = JSON.toJSONString(exercises);
Exercises exercisess = JSON.parseObject(jsonString, Exercises.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("date",exercisess.getId());
map.put("data",jsonString);
serivice.addExercise(map);
return "redirect:/addSub";
}
@RequestMapping(value = "/tranfermulDivide")
public String tranfermulDivide(@RequestBody Exercises exercises) {
// 作为mixtrue的中转站
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ExerciseSerivice serivice = context.getBean("ExerciseSeriviceImpl", ExerciseSerivice.class);
String jsonString = JSON.toJSONString(exercises);
Exercises exercisess = JSON.parseObject(jsonString, Exercises.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("date",exercisess.getId());
map.put("data",jsonString);
serivice.addExercise(map);
return "redirect:/mulDivide";
}
@RequestMapping(value = "/tranfermixtrue")
public String tranfermixtrue(@RequestBody Exercises exercises) {
// 作为mixtrue的中转站
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ExerciseSerivice serivice = context.getBean("ExerciseSeriviceImpl", ExerciseSerivice.class);
String jsonString = JSON.toJSONString(exercises);
Exercises exercisess = JSON.parseObject(jsonString, Exercises.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("date",exercisess.getId());
map.put("data",jsonString);
serivice.addExercise(map);
return "redirect:/mixtrue";
}
@RequestBody将传入的json数据转换位items对象,而@ResponseBody将return的i对象转换成json格式返回给jsp页面。
注:保证json的key和对应的pojo类的字段一致