天天看点

springMVC 与 jquery 整合

<a href="http://www.cnblogs.com/zhangliang0115/category/359684.html">http://www.cnblogs.com/zhangliang0115/category/359684.html</a>

参考资料 

1 Spring3 MVC 笔记(二) —json+rest优化 

2 jquery 遍历对象、数组、集合 

3 jquery 遍历 map(callback) 

4  Jquery的map遍历 

5 Spring mvc3的ajax 

6 Spring MVC 学习笔记 九 json格式的输入和输出 

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

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

2 在springmvc.xml配置文件中必配置: &lt;mvc:annotation-driven/&gt; 

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

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

一 工程相关图片 

1 工程图片 

springMVC 与 jquery 整合

2 效果图片 

springMVC 与 jquery 整合

二 具体代码 

1 springmvc.xml 

springMVC 与 jquery 整合

&lt;?xml version="1.0" encoding="UTF-8" ?&gt;  

&lt;beans xmlns="http://www.springframework.org/schema/beans"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xmlns:p="http://www.springframework.org/schema/p"  

    xmlns:context="http://www.springframework.org/schema/context"  

    xmlns:mvc="http://www.springframework.org/schema/mvc"  

    xsi:schemaLocation="  

        http://www.springframework.org/schema/beans   

        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  

        http://www.springframework.org/schema/context   

        http://www.springframework.org/schema/context/spring-context-3.0.xsd  

        http://www.springframework.org/schema/mvc      

        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"&gt;  

    &lt;!--   

        自动搜索@Controller标注的类  

        用于指明系统从哪个路径下寻找controller,然后提前初始化这些对象。  

    --&gt;  

    &lt;context:component-scan base-package="com.liuzd.sj.web" /&gt;      

    &lt;mvc:annotation-driven/&gt;            

    &lt;!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt;  

    &lt;bean  

        class="org.springframework.web.servlet.view.InternalResourceViewResolver"  

        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /&gt;  

        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt;  

        &lt;property name="messageConverters"&gt;  

            &lt;list&gt;  

                &lt;bean  

                    class="org.springframework.http.converter.StringHttpMessageConverter"&gt;  

                    &lt;property name="supportedMediaTypes"&gt;  

                        &lt;list&gt;  

                            &lt;value&gt;text/html;charset=UTF-8&lt;/value&gt;  

                        &lt;/list&gt;  

                    &lt;/property&gt;  

                &lt;/bean&gt;  

            &lt;/list&gt;  

        &lt;/property&gt;  

    &lt;/bean&gt;  

    &lt;bean id="mappingJacksonHttpMessageConverter"  

        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /&gt;  

&lt;/beans&gt;  

2 springmvc与jquery整合页面 

springMVC 与 jquery 整合

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%&gt;  

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;  

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;  

&lt;html&gt;  

&lt;head&gt;  

    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;  

    &lt;script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.4.4.min.js"&gt;&lt;/script&gt;   

    &lt;title&gt;Spring MVC - jQuery 整合教程&lt;/title&gt;  

&lt;/head&gt;  

&lt;body&gt;  

&lt;h3&gt;Spring MVC - jQuery 整合教程&lt;/h3&gt;  

&lt;h4&gt;AJAX version&lt;/h4&gt;  

&lt;p&gt;Demo 1 计算并返回值&lt;/p&gt;  

&lt;div style="border: 1px solid #ccc; width: 250px;"&gt;  

    Add Two Numbers: &lt;br/&gt;  

    &lt;input id="inputNumber1" type="text" size="5"&gt; +  

    &lt;input id="inputNumber2" type="text" size="9"&gt;  

    &lt;input type="submit" id="demo1" value="Add" /&gt; &lt;br/&gt;  

    Sum: &lt;br&gt;  

    &lt;span id="sum"&gt;(Result will be shown here)&lt;/span&gt;  

&lt;/div&gt;  

&lt;hr&gt;&lt;br&gt;  

&lt;p&gt;Demo 2 获取一个对象&lt;/p&gt;  

    &lt;select id="userId"&gt;        

        &lt;c:forEach var="index" begin="1" end="5" step="1"&gt;  

            &lt;option value="${index}"&gt;${index}&lt;/option&gt;  

        &lt;/c:forEach&gt;  

    &lt;/select&gt;  

    &lt;input type="submit" id="demo2" value="Get" /&gt; &lt;br/&gt;      

    &lt;span id="info"&gt;(Result will be shown here)&lt;/span&gt;  

&lt;p&gt;Demo 3 返回List集合对象&lt;/p&gt;  

&lt;div style="border: 1px solid #ccc; width: 250px;"&gt;     

    &lt;input type="submit" id="demo3" value="Get List User" /&gt; &lt;br/&gt;    

    &lt;span id="listInfo"&gt;(Result will be shown here)&lt;/span&gt;  

&lt;p&gt;Demo 4 返回Map集合对象&lt;/p&gt;  

    &lt;input type="submit" id="demo4" value="Get Map User" /&gt; &lt;br/&gt;     

    &lt;span id="mapInfo"&gt;(Result will be shown here)&lt;/span&gt;  

&lt;a href="${pageContext.request.contextPath}/index.jsp"&gt;返回&lt;/a&gt;  

&lt;script type="text/javascript"&gt;   

$(function() {  

     $("#demo1").click(function(){  

        $.post("${pageContext.request.contextPath}/main/ajax/add.do",  

                    {inputNumber1:  $("#inputNumber1").val(),  

                     inputNumber2:  $("#inputNumber2").val()   

                    },  

                    function(data){                                                                               

                        $("#sum").replaceWith('&lt;span id="sum"&gt;'+ data + '&lt;/span&gt;');                              

                    });  

     });  

      $("#demo2").click(function(){  

        var userId = $("#userId").val();  

        $.post("${pageContext.request.contextPath}/main/ajax/getUser/"+userId+".do",  

                    null,  

                    function(data){       

                        var info = "姓名: " + data.name+",年龄: " + data.age + ",地址: " + data.address + ",性别: " + (data.sex == 1 ? "男" : "女")+",密码: " + data.password;                                                                        

                        $("#info").html(info);                               

      $("#demo3").click(function(){     

        $.post("${pageContext.request.contextPath}/main/ajax/userList.do",  

                    function(data){   

                            /*                            

                            var info = '';    

                            var leng = data.length;                                                   

                            for(var i=0;i&lt;leng;i++){  

                              info += data[i].id + "," + data[i].name + "," + data[i].sex + "," + data[i].password + "," + data[i].address + "," + data[i].age+"&lt;br&gt;";  

                            }                                                                             

                            $("#listInfo").html(info);  */  

                             $.each(data,function(index,entity) {   

                               info += "姓名: " + entity.name+",年龄: " + entity.age + ",地址: " + entity.address + ",性别: " + (entity.sex == 1 ? "男" : "女")+",密码: " + entity.password+"&lt;br&gt;";     

                             });  

                             $("#listInfo").html(info);  

     });       

     $("#demo4").click(function(){      

        $.post("${pageContext.request.contextPath}/main/ajax/userMap.do",  

                    function(map){    

                         var info = '';   

                         $.each(map,function(key,values) {   

                               info += "key="+key+"&lt;br&gt;";  

                               $(values).each(function(){        

                                   info += "姓名: " + this.name+",年龄: " + this.age + ",地址: " + this.address + ",性别: " + (this.sex == 1 ? "男" : "女")+",密码: " + this.password+"&lt;br&gt;";  

                                });      

                         });  

                         $("#mapInfo").html(info);                   

});  

&lt;/script&gt;  

&lt;/body&gt;  

&lt;/html&gt;  

3 springmvc与jquery整合后台代码 

springMVC 与 jquery 整合

package com.liuzd.sj.web;  

import java.util.ArrayList;  

import java.util.HashMap;  

import java.util.List;  

import java.util.Map;  

import org.springframework.stereotype.Controller;  

import org.springframework.web.bind.annotation.PathVariable;  

import org.springframework.web.bind.annotation.RequestMapping;  

import org.springframework.web.bind.annotation.RequestMethod;  

import org.springframework.web.bind.annotation.RequestParam;  

import org.springframework.web.bind.annotation.ResponseBody;  

import com.liuzd.sj.entity.User;  

@Controller  

@RequestMapping("/main/ajax")  

public class AjaxController {  

    /** 

     * 根据映射跳转到指定的页面 

     */  

    @RequestMapping(value = "/add", method = RequestMethod.GET)  

    public String getAjaxAddPage() {  

        // 解析 /WEB-INF/jsp/ajax-add-page.jsp  

        return "ajax-add-page";  

    }  

    /**   

     * 提交表单并进行运算. 

    @RequestMapping(value = "/add", method = RequestMethod.POST)  

    public @ResponseBody Integer add(  

            @RequestParam(value = "inputNumber1", required = true)Integer inputNumber1,  

            @RequestParam(value = "inputNumber2", required = true)Integer inputNumber2) {  

        // 实现运算  

        Integer sum = inputNumber1 + inputNumber2;  

        System.out.println("sum: " + sum);  

        // @ResponseBody 会自动的将返回值转换成JSON格式  

        // 但是你必须添加jackson的jar包!!!  

        return sum;  

    }     

    @RequestMapping(value = "/getUser/{userId}", method = RequestMethod.POST)  

    public @ResponseBody User getUser(@PathVariable("userId")String  userId) {  

        System.out.println("根据ID获取用户对象: " + userId);          

        Map&lt;String,User&gt; users = new HashMap&lt;String,User&gt;();  

        users.put("1", new User("123456", "李逵", "123", "成都市", "1", 23));  

        users.put("2", new User("565676", "张三", "123", "北京市", "2", 53));  

        users.put("3", new User("325566", "李四", "123", "河南省", "2", 93));  

        users.put("4", new User("989654", "刘邦", "123", "蒙古包", "1", 13));  

        users.put("5", new User("234444", "王熙凤", "123", "成都市", "1", 43));         

        return users.get(userId);  

    @RequestMapping(value = "/userList", method = RequestMethod.POST)  

    public @ResponseBody  

    List&lt;User&gt; getUsers() {         

        List&lt;User&gt; users = new ArrayList&lt;User&gt;();  

        users.add(new User("123456", "李逵", "123", "成都市", "1", 23));  

        users.add(new User("123457", "李四", "124", "北京市", "2", 53));  

        users.add(new User("123458", "李三", "125", "河南市", "0", 73));  

        users.add(new User("123459", "李五", "126", "大路市", "3", 93));  

        return users;  

    @RequestMapping(value = "/userMap", method = RequestMethod.POST)  

    public @ResponseBody Map&lt;String,User&gt; getUserMap() {        

        users.put("2",new User("123457", "李四", "124", "北京市", "2", 53));  

        users.put("3",new User("123458", "李三", "125", "河南市", "0", 73));  

        users.put("4",new User("123459", "李五", "126", "大路市", "3", 93));  

}  

4 sprinmcv与jquery,json整合页面 

springMVC 与 jquery 整合

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%&gt;  

    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;     

    &lt;title&gt;Spring MVC&lt;/title&gt;     

    &lt;script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery-1.4.4.min.js"&gt;&lt;/script&gt;  

    &lt;script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery/jquery.json-2.2.min.js"&gt;&lt;/script&gt;     

    &lt;script type="text/javascript"&gt;         

        $(document).ready(function(){     

              jQuery.ajax( {     

                type : 'GET',     

                contentType : 'application/json',     

                url : '${pageContext.request.contextPath}/user/list.do',     

                dataType : 'json',     

                success : function(data) {     

                  if (data &amp;&amp; data.success == "true") {     

                    $('#info').html("共" + data.total + "条数据。&lt;br/&gt;");     

                    $.each(data.data, function(i, item) {     

                      $('#info').append("编号:" + item.id + ",姓名:" + item.name + ",年龄:" + item.age+"&lt;br&gt;");     

                    });     

                  }     

                },     

                error : function() {     

                  alert("error")     

                }     

              });    

              $("#submit").click(function() {     

                var jsonuserinfo = $.toJSON($('#form').serializeObject());     

                alert(jsonuserinfo);     

                jQuery.ajax( {     

                  type : 'POST',     

                  contentType : 'application/json',     

                  url : '${pageContext.request.contextPath}/user/add.do',     

                  data : jsonuserinfo,     

                  dataType : 'json',     

                  success : function(data) {     

                     if (data &amp;&amp; data.success == "true") {     

                        $('#info').html("共" + data.total + "条数据。&lt;br/&gt;");     

                        $.each(data.data, function(i, item) {     

                          $('#info').append("编号:" + item.id + ",姓名:" + item.name + ",年龄:" + item.age+"&lt;br&gt;");     

                        });  

                         alert("新增成功!");        

                      }                      

                  },     

                  error : function(data) {     

                    alert("error")     

                });     

              });     

            });    

            //将一个表单的数据返回成JSON对象     

            $.fn.serializeObject = function() {     

              var o = {};     

              var a = this.serializeArray();     

              $.each(a, function() {     

                if (o[this.name]) {     

                  if (!o[this.name].push) {     

                    o[this.name] = [ o[this.name] ];     

                  o[this.name].push(this.value || '');     

                } else {     

                  o[this.name] = this.value || '';     

              return o;     

            };     

    &lt;/script&gt;  

&lt;/head&gt;     

&lt;body&gt;     

&lt;div id="info"&gt;&lt;/div&gt;     

&lt;form action="add" method="post" id="form"&gt;     

编号:&lt;input type="text" name="id"/&gt;     

姓名:&lt;input type="text" name="name"/&gt;     

年龄:&lt;input type="text" name="age"/&gt;   

性别: &lt;select name="sex"&gt;  

            &lt;option value="1"&gt;男&lt;/option&gt;  

            &lt;option value="2"&gt;女&lt;/option&gt;  

     &lt;/select&gt;  

 密码: &lt;input name="password"&gt;        

 地址:&lt;input name="address"/&gt;  

&lt;input type="button" value="提交" id="submit"/&gt;     

&lt;/form&gt;     

&lt;/body&gt;     

&lt;/html&gt;    

5 sprinmcv与jquery,json后台代码 

springMVC 与 jquery 整合

import org.springframework.http.HttpEntity;  

import org.springframework.web.bind.annotation.ModelAttribute;  

import org.springframework.web.bind.annotation.SessionAttributes;  

@RequestMapping("/user")  

@SessionAttributes("users")  

public class DemoController {  

    @RequestMapping(value = "/list", method = RequestMethod.GET)  

    @ModelAttribute("users")  

    @ResponseBody  

    public Map&lt;String, Object&gt; getUserMaps() {  

        List&lt;User&gt; list = new ArrayList&lt;User&gt;();  

        User um = new User();  

        um.setId("1");  

        um.setName("sss");  

        um.setAge(66);  

        list.add(um);  

        um = new User();  

        um.setId("2");  

        um.setName("aaa");  

        um.setAge(44);  

        Map&lt;String, Object&gt; modelMap = new HashMap&lt;String, Object&gt;();  

        modelMap.put("total", list.size());  

        modelMap.put("data", list);  

        modelMap.put("success", "true");  

        return modelMap;  

      @RequestMapping(value = "/add", method = RequestMethod.POST)     

      @ResponseBody     

      //二种方式: A HttpEntity&lt;User&gt;  B使用注解 @ResponseBody  

      public Map&lt;String, Object&gt; addUser(HttpEntity&lt;User&gt; model,javax.servlet.http.HttpServletRequest request) {     

        System.out.println("user: " + model.getBody());  

        Map&lt;String, Object&gt; map = (Map)request.getSession().getAttribute("users");  

        if(null == map){  

            map = getUserMaps();  

        }  

        List&lt;User&gt; list = (List&lt;User&gt;)map.get("data");  

        list.add(model.getBody());  

        map.put("total", list.size());  

        map.put("data", list);  

        request.getSession().setAttribute("users",map);  

        return map;  

    @RequestMapping("/ajaxPage")  

    public String ajaxAddPage() {  

        return "ajax-add-page2";  

6 web.xml 

springMVC 与 jquery 整合

&lt;?xml version="1.0" encoding="UTF-8"?&gt;  

&lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;      

    &lt;context-param&gt;  

       &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt;  

       &lt;param-value&gt;/WEB-INF/classes/log4j.properties&lt;/param-value&gt;  

    &lt;/context-param&gt;   

     &lt;context-param&gt;  

      &lt;param-name&gt;log4jRefreshInterval&lt;/param-name&gt;  

      &lt;param-value&gt;60000&lt;/param-value&gt;  

     &lt;/context-param&gt;   

        &lt;param-name&gt;log4jExposeWebAppRoot&lt;/param-name&gt;  

        &lt;param-value&gt;false&lt;/param-value&gt;  

    &lt;/context-param&gt;    

    &lt;listener&gt;  

       &lt;listener-class&gt;  

            org.springframework.web.util.Log4jConfigListener  

       &lt;/listener-class&gt;  

    &lt;/listener&gt;   

    &lt;filter&gt;  

        &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;  

        &lt;filter-class&gt;  

            org.springframework.web.filter.CharacterEncodingFilter  

        &lt;/filter-class&gt;  

        &lt;init-param&gt;  

            &lt;param-name&gt;encoding&lt;/param-name&gt;  

            &lt;param-value&gt;UTF-8&lt;/param-value&gt;  

        &lt;/init-param&gt;  

        &lt;init-param&gt;     

            &lt;param-name&gt;forceEncoding&lt;/param-name&gt;     

            &lt;param-value&gt;false&lt;/param-value&gt;     

        &lt;/init-param&gt;    

    &lt;/filter&gt;  

    &lt;filter-mapping&gt;  

        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;  

    &lt;/filter-mapping&gt;  

        &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;  

    &lt;servlet&gt;  

        &lt;servlet-name&gt;springmvc&lt;/servlet-name&gt;  

        &lt;servlet-class&gt;  

            org.springframework.web.servlet.DispatcherServlet  

        &lt;/servlet-class&gt;        

            &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;                             

             &lt;param-value&gt;classpath:springmvc.xml&lt;/param-value&gt;  

        &lt;/init-param&gt;   

        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;  

    &lt;/servlet&gt;  

    &lt;servlet-mapping&gt;  

    &lt;/servlet-mapping&gt;  

    &lt;welcome-file-list&gt;  

        &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;  

    &lt;/welcome-file-list&gt;  

&lt;/web-app&gt;  

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

springMVC 与 jquery 整合

大小: 53.7 KB

springMVC 与 jquery 整合

大小: 40.4 KB

下载次数: 2567