spring4mvc返回json(bean,list,map)
因为spring3和spring4的mvc在前端返回json所需要的jar包不一样,所以索性写一篇关于spring4mvc在前端返回json的博文。
首先,新建一个web项目,项目格式如图所示:
convertJsonAction:springmvc的action类
inde.jsp:有三个按钮,分别返回bean,list和map对应的json
然后是引入的library:分别是spring-core,spring-mvc,spring-web,spring4mvc-jackson
tips:spring4的mvc引入的jackson跟spring3的mvc引入的jar包不一样!!!不一样!!!!
spring-core:
spring-mvc:
spring-web:
spring4mvc-jackson:
接着是配置web.xml
因为springmvc是servelet,所以在web.xml中配置的就是一个servlet,在web.xml中添加如下代码
<servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- 将配置对应的springmvc文件设置在src根目录下 --> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
然后在src下面新建一个叫springmvc的xml文件,文件内容如图所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> </beans>
接着我们在ConvertJSonAction.java类中添加一个方法:
package com.mz.json; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * controller指明这是一个springmvc的action类 * requestMapping是总的路径,所有访问这个action类中的方法必须通过/convert * @author asus * */ @Controller @RequestMapping("/convert") public class ConvertJsonAction { //responseBody是指返回的User是一个json对象(也可以是string或者xml对象) @RequestMapping("/bean2json") public @ResponseBody User bean2json() { User user = new User(); user.setId(1); user.setUsername("Irasel"); return user; } }
这是action的处理类,接着我们在springmvc中配置开启mvc的annotation和扫描标签:
<mvc:annotation-driven /> <context:component-scan base-package="com.mz.json"></context:component-scan>
index.jsp中添加三个按钮,每一个按钮分别对应的返回一个bean对象的json,list对象的json和map对象的json:
<!-- 点击返回一个bean对象的json --> <input type="button" value="bean2json"><br/> <!-- 点击返回一个list对象的json --> <input type="button" value="list2json"> <br/> <!-- 点击返回一个map对象的json --> <input type="button" value="map2json"><br/>
使用jquery的异步传输:
$(':button:first').click(function(){ var url = 'convert/bean2json.action'; var arg =null; $.post(url,arg,function(returnData){ console.log(returnData); }); });
效果如图所示:
接着是list和map的方法(不再粘贴效果图了,反正都差不多)
@RequestMapping("/list2json") public @ResponseBody List<User> list2Json() { List<User> users = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setUsername("Irasel"); User user2 = new User(); user2.setId(2); user2.setUsername("路西法"); User user3 = new User(); user3.setId(3); user3.setUsername("Micheal"); users.add(user1); users.add(user2); users.add(user3); return users; } @RequestMapping("/map2json") public @ResponseBody Map<String, Object> map2Json() { List<User> users = new ArrayList<User>(); Map<String, Object> map = new HashMap<String, Object>(); User user1 = new User(); user1.setId(1); user1.setUsername("Irasel"); User user2 = new User(); user2.setId(2); user2.setUsername("路西法"); User user3 = new User(); user3.setId(3); user3.setUsername("Micheal"); users.add(user1); users.add(user2); users.add(user3); map.put("row", users.size()); map.put("users", users); return map; }