由於spring3和spring4的mvc在前端返回json所須要的jar包不同,因此索性寫一篇關於spring4mvc在前端返回json的博文。前端
首先,新建一個web項目,項目格式如圖所示:java
convertJsonAction:springmvc的action類jquery
inde.jsp:有三個按鈕,分別返回bean,list和map對應的jsonweb
而後是引入的library:分別是spring-core,spring-mvc,spring-web,spring4mvc-jacksonspring
tips:spring4的mvc引入的jackson跟spring3的mvc引入的jar包不同!!!不同!!!!json
spring-core:spring-mvc
spring-mvc:mvc
spring-web:app
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; }