SprignMVC——返回JSON与Ajax支持
为了便于接收和处理Ajax请求,SpringMVC提供了JSON响应的支持,可以很方便地将数据自动转换成JSON格式的字符串给客户端JavaScript返回。
在Spring MVC中,与JSON响应相关的注解为@ResponseBody
@ResponseBody应用
@ResponseBody注解主要用于Controller组件的处理方法前,具体使用方法如下:
1,引入jar包
jackson-annotations-2.4.1.jar
jackson-core-2.4.1.jar
jackson-databind-2.4.1.jar
2,在Spring配置文件中定义<mvc:annotation-driver/>,开启对@ResponseBody的支持
3,在Controller处理方法前定义@ResponseBody注解
下面看看@ResponseBody应用案例
1)返回单个值
2)返回多个值
3)返回对象
4)返回集合
5)返回对象集合
/**
* 演示Spring对异步请求的处理,
* 如何将数据做成json输出给客户端。
*/
@Controller
@RequestMapping("/test")
public class JsonController {
/**
* 使用@ResponseBody注解声明该方法处理的是异步请求,
* Spring会自动的将返回值做成json输出给客户端。
*/
@RequestMapping("/test1.do")
@ResponseBody
public boolean test1() {
//如果返回的是基本类型的数据,
//Spring会直接将值输出给客户端。
//即true
return true;
}
/**
* 将Map做成json输出
*/
@RequestMapping("/test2.do")
@ResponseBody
public Map<String, Object> test2() {
Map<String,Object> map =
new HashMap<String, Object>();
map.put("success", true);
map.put("message", "操作成功.");
//{"success":true,"message":"操作成功."}
return map;
}
/**
* 将集合做成json输出
*/
@RequestMapping("/test3.do")
@ResponseBody
public List<Object> test3() {
List<Object> list = new ArrayList<Object>();
list.add("Tarena");
list.add("JSD1407");
//["Tarena","JSD1407"]
return list;
}
/**
* 将实体对象做成json输出
*/
@RequestMapping("/test4.do")
@ResponseBody
public Emp test4() {
Emp e = new Emp();
e.setEmpno(1);
e.setEname("zs");
e.setJob("营业员");
e.setSal(3000.0);
//{"empno":1,"ename":"zs","job":"营业员"...}
return e;
}
/**
* 将一组对象做成json输出
*/
@RequestMapping("/test5.do")
@ResponseBody
public List<Emp> test5() {
List<Emp> list = new ArrayList<Emp>();
Emp e = new Emp();
e.setEmpno(1);
e.setEname("zs");
e.setJob("营业员");
e.setSal(3000.0);
list.add(e);
Emp e2 = new Emp();
e2.setEmpno(2);
e2.setEname("ls");
e2.setJob("经理");
e2.setSal(5000.0);
list.add(e2);
//[{"empno":1,"ename":"zs","job":"营业员"...},
//{"empno":2,"ename":"ls","job":"经理"...}]
return list;
}
}jsp页面引入JQuery插件,就可以发送Ajax请求了。
$.post(
"searchEmp.do",
{"empNo":emp_no},
function(data) {
if(data=="") {
//没有查询到员工
$("#emp_msg").text("不存在此员工.").addClass("error_msg");
} else {
//查询到了员工
$("#emp_msg").text("员工有效.").removeClass("error_msg");
$("#emp_id").val(data.account_id);
}
}
); Controller代码
@RequestMapping("/searchEmp.do")
@ResponseBody
public Account searchEmp(String empNo) {
return empDao.findByEmpNo(empNo);
} 相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
时光如瑾雨微凉 2020-07-19
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05