天天看点

springMVC 与 jquery 整合

在SpringMVC中使用JSON必须注意二点 

1 必须包含:jackson的jar包,我使用的是: jackson-all-1.8.1.jar, 

可在官网:​​http://mvnrepository.com/artifact/org.codehaus.jackson​​中去下载 

2 在springmvc.xml配置文件中必配置: <mvc:annotation-driven/> 

3 jquery.json-*.*.min.js 

实现功能: 从后台获取对象,List,Map在前台显示,前台提交JSON数据格式到后台并且返回 

一 工程相关图片 

1 工程图片 

springMVC 与 jquery 整合
2 效果图片 
springMVC 与 jquery 整合

二 具体代码 

1 springmvc.xml 

Xml代码  ​

springMVC 与 jquery 整合
​​

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:p="http://www.springframework.org/schema/p"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  7.     xsi:schemaLocation="  
  8.         http://www.springframework.org/schema/beans   
  9.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10.         http://www.springframework.org/schema/context   
  11.         http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  12.         http://www.springframework.org/schema/mvc      
  13.         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  14.     <!--   
  15.         自动搜索@Controller标注的类  
  16.         用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。  
  17.     -->  
  18.     <context:component-scan base-package="com.liuzd.sj.web" />      
  19.     <mvc:annotation-driven/>            
  20.     <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
  21.     <bean  
  22.         class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
  23.         p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />  
  24.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  25.         <property name="messageConverters">  
  26.             <list>  
  27.                 <bean  
  28.                     class="org.springframework.http.converter.StringHttpMessageConverter">  
  29.                     <property name="supportedMediaTypes">  
  30.                         <list>  
  31.                             <value>text/html;charset=UTF-8</value>  
  32.                         </list>  
  33.                     </property>  
  34.                 </bean>  
  35.             </list>  
  36.         </property>  
  37.     </bean>  
  38.     <bean id="mappingJacksonHttpMessageConverter"  
  39.         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
  40. </beans>  

2 springmvc与jquery整合页面 

Html代码  ​

springMVC 与 jquery 整合
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7.     <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.4.4.min.js"></script>   
  8.     <title>Spring MVC - jQuery 整合教程</title>  
  9. </head>  
  10. <body>  
  11. <h3>Spring MVC - jQuery 整合教程</h3>  
  12. <h4>AJAX version</h4>  
  13. <p>Demo 1 计算并返回值</p>  
  14. <div style="border: 1px solid #ccc; width: 250px;">  
  15.     Add Two Numbers: <br/>  
  16.     <input id="inputNumber1" type="text" size="5"> +  
  17.     <input id="inputNumber2" type="text" size="9">  
  18.     <input type="submit" id="demo1" value="Add" /> <br/>  
  19.     Sum: <br>  
  20.     <span id="sum">(Result will be shown here)</span>  
  21. </div>  
  22. <hr><br>  
  23. <p>Demo 2 获取一个对象</p>  
  24.     <select id="userId">        
  25.         <c:forEach var="index" begin="1" end="5" step="1">  
  26.             <option value="${index}">${index}</option>  
  27.         </c:forEach>  
  28.     </select>  
  29.     <input type="submit" id="demo2" value="Get" /> <br/>      
  30.     <span id="info">(Result will be shown here)</span>  
  31. <p>Demo 3 返回List集合对象</p>  
  32. <div style="border: 1px solid #ccc; width: 250px;">     
  33.     <input type="submit" id="demo3" value="Get List User" /> <br/>    
  34.     <span id="listInfo">(Result will be shown here)</span>  
  35. <p>Demo 4 返回Map集合对象</p>  
  36.     <input type="submit" id="demo4" value="Get Map User" /> <br/>     
  37.     <span id="mapInfo">(Result will be shown here)</span>  
  38. <a href="${pageContext.request.contextPath}/index.jsp">返回</a>  
  39. <script type="text/javascript">   
  40. $(function() {  
  41.      $("#demo1").click(function(){  
  42.         $.post("${pageContext.request.contextPath}/main/ajax/add.do",  
  43.                     {inputNumber1:  $("#inputNumber1").val(),  
  44.                      inputNumber2:  $("#inputNumber2").val()   
  45.                     },  
  46.                     function(data){                                                                               
  47.                         $("#sum").replaceWith('<span id="sum">'+ data + '</span>');                              
  48.                     });  
  49.      });  
  50.       $("#demo2").click(function(){  
  51.         var userId = $("#userId").val();  
  52.         $.post("${pageContext.request.contextPath}/main/ajax/getUser/"+userId+".do",  
  53.                     null,  
  54.                     function(data){       
  55.                         var info = "姓名: " + data.name+",年龄: " + data.age + ",地址: " + data.address + ",性别: " + (data.sex == 1 ? "男" : "女")+",密码: " + data.password;                                                                        
  56.                         $("#info").html(info);                               
  57.       $("#demo3").click(function(){     
  58.         $.post("${pageContext.request.contextPath}/main/ajax/userList.do",  
  59.                     function(data){   
  60.                             /*                            
  61.                             var info = '';    
  62.                             var leng = data.length;                                                   
  63.                             for(var i=0;i<leng;i++){  
  64.                               info += data[i].id + "," + data[i].name + "," + data[i].sex + "," + data[i].password + "," + data[i].address + "," + data[i].age+"<br>";  
  65.                             }                                                                             
  66.                             $("#listInfo").html(info);  */  
  67.                              $.each(data,function(index,entity) {   
  68.                                info += "姓名: " + entity.name+",年龄: " + entity.age + ",地址: " + entity.address + ",性别: " + (entity.sex == 1 ? "男" : "女")+",密码: " + entity.password+"<br>";     
  69.                              });  
  70.                              $("#listInfo").html(info);  
  71.      });       
  72.      $("#demo4").click(function(){      
  73.         $.post("${pageContext.request.contextPath}/main/ajax/userMap.do",  
  74.                     function(map){    
  75.                          var info = '';   
  76.                          $.each(map,function(key,values) {   
  77.                                info += "key="+key+"<br>";  
  78.                                $(values).each(function(){        
  79.                                    info += "姓名: " + this.name+",年龄: " + this.age + ",地址: " + this.address + ",性别: " + (this.sex == 1 ? "男" : "女")+",密码: " + this.password+"<br>";  
  80.                                 });      
  81.                          });  
  82.                          $("#mapInfo").html(info);                   
  83. });  
  84. </script>  
  85. </body>  
  86. </html>  

3 springmvc与jquery整合后台代码 

Java代码  ​

springMVC 与 jquery 整合
  1. package com.liuzd.sj.web;  
  2. import java.util.ArrayList;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6. import org.springframework.stereotype.Controller;  
  7. import org.springframework.web.bind.annotation.PathVariable;  
  8. import org.springframework.web.bind.annotation.RequestMapping;  
  9. import org.springframework.web.bind.annotation.RequestMethod;  
  10. import org.springframework.web.bind.annotation.RequestParam;  
  11. import org.springframework.web.bind.annotation.ResponseBody;  
  12. import com.liuzd.sj.entity.User;  
  13. @Controller  
  14. @RequestMapping("/main/ajax")  
  15. public class AjaxController {  
  16.     /** 
  17.      * 根据映射跳转到指定的页面 
  18.      */  
  19.     @RequestMapping(value = "/add", method = RequestMethod.GET)  
  20.     public String getAjaxAddPage() {  
  21.         // 解析 /WEB-INF/jsp/ajax-add-page.jsp  
  22.         return "ajax-add-page";  
  23.     }  
  24.     /**   
  25.      * 提交表单并进行运算. 
  26.     @RequestMapping(value = "/add", method = RequestMethod.POST)  
  27.     public @ResponseBody Integer add(  
  28.             @RequestParam(value = "inputNumber1", required = true)Integer inputNumber1,  
  29.             @RequestParam(value = "inputNumber2", required = true)Integer inputNumber2) {  
  30.         // 实现运算  
  31.         Integer sum = inputNumber1 + inputNumber2;  
  32.         System.out.println("sum: " + sum);  
  33.         // @ResponseBody 会自动的将返回值转换成JSON格式  
  34.         // 但是你必须添加jackson的jar包!!!  
  35.         return sum;  
  36.     }     
  37.     @RequestMapping(value = "/getUser/{userId}", method = RequestMethod.POST)  
  38.     public @ResponseBody User getUser(@PathVariable("userId")String  userId) {  
  39.         System.out.println("根据ID获取用户对象: " + userId);          
  40.         Map<String,User> users = new HashMap<String,User>();  
  41.         users.put("1", new User("123456", "李逵", "123", "成都市", "1", 23));  
  42.         users.put("2", new User("565676", "张三", "123", "北京市", "2", 53));  
  43.         users.put("3", new User("325566", "李四", "123", "河南省", "2", 93));  
  44.         users.put("4", new User("989654", "刘邦", "123", "蒙古包", "1", 13));  
  45.         users.put("5", new User("234444", "王熙凤", "123", "成都市", "1", 43));         
  46.         return users.get(userId);  
  47.     @RequestMapping(value = "/userList", method = RequestMethod.POST)  
  48.     public @ResponseBody  
  49.     List<User> getUsers() {         
  50.         List<User> users = new ArrayList<User>();  
  51.         users.add(new User("123456", "李逵", "123", "成都市", "1", 23));  
  52.         users.add(new User("123457", "李四", "124", "北京市", "2", 53));  
  53.         users.add(new User("123458", "李三", "125", "河南市", "0", 73));  
  54.         users.add(new User("123459", "李五", "126", "大路市", "3", 93));  
  55.         return users;  
  56.     @RequestMapping(value = "/userMap", method = RequestMethod.POST)  
  57.     public @ResponseBody Map<String,User> getUserMap() {        
  58.         users.put("2",new User("123457", "李四", "124", "北京市", "2", 53));  
  59.         users.put("3",new User("123458", "李三", "125", "河南市", "0", 73));  
  60.         users.put("4",new User("123459", "李五", "126", "大路市", "3", 93));  
  61. }  

4 sprinmcv与jquery,json整合页面 

springMVC 与 jquery 整合
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>  
  2.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">     
  3.     <title>Spring MVC</title>     
  4.     <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.4.4.min.js"></script>  
  5.     <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery.json-2.2.min.js"></script>     
  6.     <script type="text/javascript">         
  7.         $(document).ready(function(){     
  8.               jQuery.ajax( {     
  9.                 type : 'GET',     
  10.                 contentType : 'application/json',     
  11.                 url : '${pageContext.request.contextPath}/user/list.do',     
  12.                 dataType : 'json',     
  13.                 success : function(data) {     
  14.                   if (data && data.success == "true") {     
  15.                     $('#info').html("共" + data.total + "条数据。<br/>");     
  16.                     $.each(data.data, function(i, item) {     
  17.                       $('#info').append("编号:" + item.id + ",姓名:" + item.name + ",年龄:" + item.age+"<br>");     
  18.                     });     
  19.                   }     
  20.                 },     
  21.                 error : function() {     
  22.                   alert("error")     
  23.                 }     
  24.               });    
  25.               $("#submit").click(function() {     
  26.                 var jsonuserinfo = $.toJSON($('#form').serializeObject());     
  27.                 alert(jsonuserinfo);     
  28.                 jQuery.ajax( {     
  29.                   type : 'POST',     
  30.                   contentType : 'application/json',     
  31.                   url : '${pageContext.request.contextPath}/user/add.do',     
  32.                   data : jsonuserinfo,     
  33.                   dataType : 'json',     
  34.                   success : function(data) {     
  35.                      if (data && data.success == "true") {     
  36.                         $('#info').html("共" + data.total + "条数据。<br/>");     
  37.                         $.each(data.data, function(i, item) {     
  38.                           $('#info').append("编号:" + item.id + ",姓名:" + item.name + ",年龄:" + item.age+"<br>");     
  39.                         });  
  40.                          alert("新增成功!");        
  41.                       }                      
  42.                   },     
  43.                   error : function(data) {     
  44.                     alert("error")     
  45.                 });     
  46.               });     
  47.             });    
  48.             //将一个表单的数据返回成JSON对象     
  49.             $.fn.serializeObject = function() {     
  50.               var o = {};     
  51.               var a = this.serializeArray();     
  52.               $.each(a, function() {     
  53.                 if (o[this.name]) {     
  54.                   if (!o[this.name].push) {     
  55.                     o[this.name] = [ o[this.name] ];     
  56.                   o[this.name].push(this.value || '');     
  57.                 } else {     
  58.                   o[this.name] = this.value || '';     
  59.               return o;     
  60.             };     
  61.     </script>  
  62. </head>     
  63. <body>     
  64. <div id="info"></div>     
  65. <form action="add" method="post" id="form">     
  66. 编号:<input type="text" name="id"/>     
  67. 姓名:<input type="text" name="name"/>     
  68. 年龄:<input type="text" name="age"/>   
  69. 性别: <select name="sex">  
  70.             <option value="1">男</option>  
  71.             <option value="2">女</option>  
  72.      </select>  
  73.  密码: <input name="password">        
  74.  地址:<input name="address"/>  
  75. <input type="button" value="提交" id="submit"/>     
  76. </form>     
  77. </body>     
  78. </html>    

5 sprinmcv与jquery,json后台代码 

springMVC 与 jquery 整合
  1. import org.springframework.http.HttpEntity;  
  2. import org.springframework.web.bind.annotation.ModelAttribute;  
  3. import org.springframework.web.bind.annotation.SessionAttributes;  
  4. @RequestMapping("/user")  
  5. @SessionAttributes("users")  
  6. public class DemoController {  
  7.     @RequestMapping(value = "/list", method = RequestMethod.GET)  
  8.     @ModelAttribute("users")  
  9.     @ResponseBody  
  10.     public Map<String, Object> getUserMaps() {  
  11.         List<User> list = new ArrayList<User>();  
  12.         User um = new User();  
  13.         um.setId("1");  
  14.         um.setName("sss");  
  15.         um.setAge(66);  
  16.         list.add(um);  
  17.         um = new User();  
  18.         um.setId("2");  
  19.         um.setName("aaa");  
  20.         um.setAge(44);  
  21.         Map<String, Object> modelMap = new HashMap<String, Object>();  
  22.         modelMap.put("total", list.size());  
  23.         modelMap.put("data", list);  
  24.         modelMap.put("success", "true");  
  25.         return modelMap;  
  26.       @RequestMapping(value = "/add", method = RequestMethod.POST)     
  27.       @ResponseBody     
  28.       //二种方式: A HttpEntity<User>  B使用注解 @ResponseBody  
  29.       public Map<String, Object> addUser(HttpEntity<User> model,javax.servlet.http.HttpServletRequest request) {     
  30.         System.out.println("user: " + model.getBody());  
  31.         Map<String, Object> map = (Map)request.getSession().getAttribute("users");  
  32.         if(null == map){  
  33.             map = getUserMaps();  
  34.         }  
  35.         List<User> list = (List<User>)map.get("data");  
  36.         list.add(model.getBody());  
  37.         map.put("total", list.size());  
  38.         map.put("data", list);  
  39.         request.getSession().setAttribute("users",map);  
  40.         return map;  
  41.     @RequestMapping("/ajaxPage")  
  42.     public String ajaxAddPage() {  
  43.         return "ajax-add-page2";  

6 web.xml 

springMVC 与 jquery 整合
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  4.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">      
  5.     <context-param>  
  6.        <param-name>log4jConfigLocation</param-name>  
  7.        <param-value>/WEB-INF/classes/log4j.properties</param-value>  
  8.     </context-param>   
  9.      <context-param>  
  10.       <param-name>log4jRefreshInterval</param-name>  
  11.       <param-value>60000</param-value>  
  12.      </context-param>   
  13.         <param-name>log4jExposeWebAppRoot</param-name>  
  14.         <param-value>false</param-value>  
  15.     </context-param>    
  16.     <listener>  
  17.        <listener-class>  
  18.             org.springframework.web.util.Log4jConfigListener  
  19.        </listener-class>  
  20.     </listener>   
  21.     <filter>  
  22.         <filter-name>encodingFilter</filter-name>  
  23.         <filter-class>  
  24.             org.springframework.web.filter.CharacterEncodingFilter  
  25.         </filter-class>  
  26.         <init-param>  
  27.             <param-name>encoding</param-name>  
  28.             <param-value>UTF-8</param-value>  
  29.         </init-param>  
  30.         <init-param>     
  31.             <param-name>forceEncoding</param-name>     
  32.             <param-value>false</param-value>     
  33.         </init-param>    
  34.     </filter>  
  35.     <filter-mapping>  
  36.         <url-pattern>*.do</url-pattern>  
  37.     </filter-mapping>  
  38.         <url-pattern>*.jsp</url-pattern>  
  39.     <servlet>  
  40.         <servlet-name>springmvc</servlet-name>  
  41.         <servlet-class>  
  42.             org.springframework.web.servlet.DispatcherServlet  
  43.         </servlet-class>        
  44.             <param-name>contextConfigLocation</param-name>                             
  45.              <param-value>classpath:springmvc.xml</param-value>  
  46.         </init-param>   
  47.         <load-on-startup>1</load-on-startup>  
  48.     </servlet>  
  49.     <servlet-mapping>  
  50.     </servlet-mapping>  
  51.     <welcome-file-list>  
  52.         <welcome-file>index.jsp</welcome-file>  
  53.     </welcome-file-list>  
  54. </web-app>  

7 附件为工程原件,只包含jackson-all-1.8.1.jar,其它jar可在相关页面下载

  • springMVC 与 jquery 整合
  • 大小: 53.7 KB
  • springMVC 与 jquery 整合
  • 大小: 40.4 KB