使用@Controller和@ResponseBody需要使用Http消息转换器(HttpMessageConverter),而消息转换器的开启,需要由<mvc:annotation-driven/>来完成。Spring容器初始化时<mvc:annotation-driven/>时默认创建七个HttpMessageConverter对象。
1.引入jar包
<!-- jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.9</version> </dependency> <!-- jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.3</version> </dependency>
2.创建处理器方法(返回String类型)
//返回String类型 @RequestMapping(value = "/second",produces = "text/html;charset=utf-8")//produces设置编码格式 @ResponseBody//设置响应主体 public Object doSecond(){ return "doSecond"; }
(返回自定义类型)
//返回自定义类型 @RequestMapping("/third")//URL @ResponseBody//设置响应主体 public Object doThird(){ UserInfo u1=new UserInfo(); u1.setUsername("离人愁"); return u1; }
(返回集合类型)
//返回集合类型 @RequestMapping("/four")//URL @ResponseBody//设置响应主体 public Object doFour(){ List<UserInfo> list=new ArrayList<UserInfo>(); //创建两个对象 UserInfo u1=new UserInfo(); u1.setUsername("离人愁"); UserInfo u2=new UserInfo(); u2.setUsername("最美的期待"); //添加到list集合当中 list.add(u1); list.add(u2); //返回list return list; }
3.配置消息转换器
<!--视图解析器--> <bean id="methodNameResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean> <!--http转换器开启--> <mvc:annotation-driven/> <!--扫描包下所有的被标注的类--> <context:component-scan base-package="cn.happy.day08Object"/>
4.使用Ajax接收数据
<%@page language="java" pageEncoding="utf-8" contentType="text/html; utf-8" %> <html> <head> <%--引入js--%> <script type="text/javascript" src="js/jQuery1.11.1.js"></script> <script type="text/javascript"> $(function () { //注册按钮单击事件 $("input").click(function () { $.ajax({ //请求地址 url:"${pageContext.request.contextPath}/four", //请求方式 type:"POST", //回调函数 success:function (data) { //使用each方法遍历 $.each(data,function (i,item) { alert(item.username); }) } }); }) }); </script> </head> <body> <h2>Hello World!</h2> <input type="button" value="使劲点我!!!"/> </body> </html>