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
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05