`
wbj0110
  • 浏览: 1609467 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Spring3 MVC 使用JSON进行前后台数据交互

阅读更多

在 Spring3 中,响应、接受 JSON都十分方便。
向前台返回 JSON 格式的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getUserList() {
    logger.info("列表");
    List<UserModel> list = new ArrayList<UserModel>();
    UserModel um = new UserModel();
    um.setId("1");
    um.setUsername("sss");
    um.setAge(222);
    list.add(um);
    Map<String, Object> modelMap = new     HashMap<String, Object>(3);
    modelMap.put("total", "1");
    modelMap.put("data", list);
    modelMap.put("success", "true");
    return modelMap;
}

使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON。
Spring这个转换是靠org.codehaus.jackson这个组件来实现的,所有需要引入jackson-core-asl和org.codehaus.jackson两个jar包,并且在web.xml中配置:

1
2
3
4
5
6
7
8
9
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <util:list id="beanList">
            <ref bean="mappingJacksonHttpMessageConverter" />
        </util:list>
    </property>
</bean>
 
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />


在Controller中接受参数也非常简单:

1
2
3
4
5
6
7
8
9
10
11
@RequestMapping(value="/{id}",method=RequestMethod.GET)
@ResponseBody
public UserModel getUserById(@PathVariable String id)
{
    logger.info("取值");
    UserModel um = new UserModel();
    um.setId(id);
    um.setUsername("sss");
    um.setAge(222);
    return um;
}

这样,可以访问类似于 http://localhost:8080/demo/user/1.do 来获取 id 为 1 的用户数据。

另外,在前台表单中向后台提交数据也非常方便:

1
2
3
4
5
6
7
8
9
10
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> addUser(@RequestBody UserModel model)
{
    logger.info("新增");
    logger.info("捕获到前台传递过来的Model,名称为:"+model.getUsername());
    Map<String, String> map = new HashMap<String, String>(1);
    map.put("success", "true");
    return map;
}

使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。

这样,Controller可以返回给前台JSON,也可以接收JSON。
而在前台,我们可以用 jQuery 来处理 JSON。
从这里,我得到了一个 jQuery 的插件,可以将一个表单的数据返回成JSON对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$.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;
};

以下是使用 jQuery 接收、发送 JSON 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
 * @author liuweifeng
 */
$(document).ready(function(){
    jQuery.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: 'list.do',
        dataType: 'json',
        success: function(data){
            if (data && data.success == "true") {
                $('#info').html("共" + data.total + "条数据。<br/>");
                $.each(data.data, function(i, item){
                    $('#info').append("编号:" + item.id + ",姓名:" + item.username +
                    ",年龄:" +
                    item.age);
                });
            }
        },
        error: function(){
            alert("error")
        }
    });
    $("#submit").click(function(){
        var jsonuserinfo = $.toJSON($('#form').serializeObject());
        alert(jsonuserinfo);
        jQuery.ajax({
            type: 'POST',
            contentType: 'application/json',
            url: 'add.do',
            data: jsonuserinfo,
            dataType: 'json',
            success: function(data){
                alert("新增成功!");
            },
            error: function(){
                alert("error")
            }
        });
    });
});

代码下载:http://www.box.net/shared/ia6qht3hfu

分享到:
评论

相关推荐

    spring3 mvc restful freemarker jquery json

    在Spring3 MVC中,可以使用Jackson或Gson等库将Java对象转换为JSON字符串,然后通过Ajax请求传递给客户端,客户端再使用jQuery解析JSON数据,更新页面内容。 综上所述,这个整合架构提供了一种高效的Web开发模式,...

    Jsonp在spring MVC系统中的前后台交互源码实例

    Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料。 本资料 是 spring MVC系统中用jsonp进行跨域解析。可实现前后台交互。

    SpringMVC中后台转换json格式

    然而,当我们在使用SpringMVC和Ajax进行数据交互时,可能会遇到406错误,这意味着服务器不能提供客户端所接受的任何形式的内容。本文将详细介绍如何在SpringMVC中后台转换JSON格式,以解决406错误问题。 406错误...

    springmvc3+json参数传递后台接收json参数

    "springmvc3+json参数传递后台接收json参数"这个主题涉及到的是如何使用Spring MVC 3版本接收前端通过JSON格式发送的数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写,...

    Spring MVC跟jQuery和Twitter Bootstrap的结合

    通过Ajax,jQuery可以与后台Spring MVC控制器进行无刷新的数据交互,提升用户体验。 **Twitter Bootstrap 的引入** Twitter Bootstrap 是一个流行的前端开发框架,提供了响应式布局、预定义的CSS样式、JavaScript...

    Spring+Spring mvc+Hibernate+Bootstrap、企业级员工信息管理系统

    Spring mvc 返回数据格式采用统一的对象(JSONReturn)进行封装 09. 通过自定义处理器 ExceptionIntercept 实现 Spring mvc的全局异常捕获 10. 系统中包含了企业中采用的开发工具类的集合 11. AbstractDao 父类...

    springmvc+dataTable=Demo

    这个"springmvc+dataTable=Demo"项目是将Spring MVC与DataTable结合使用的实例,旨在展示如何在Maven工程中实现前后台动态交互。 首先,我们需要了解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为...

    json提交到后台并解析

    在不使用Spring MVC或Struts2自动映射的情况下,可以手动解析JSON字符串。例如: ```java import net.sf.json.JSONObject; // 假设接收到的JSON字符串是jsonStr JSONObject jsonObject = JSONObject.fromObject...

    spring mvc+spring+hibernaate+bootstrap+maven通用后台部门员工管理系统.zip

    这是一个基于Java技术栈的通用后台管理系统,主要使用了Spring MVC、Spring、Hibernate、Bootstrap和Maven等技术。这些技术在IT行业中广泛应用于企业级Web应用开发,构建高效、可维护的系统。下面将分别详细解释这些...

    Android+Json+SSM+MySQL后台数据交互模拟云备份云恢复(源码)

    标题中的“Android+Json+SSM+MySQL后台数据交互模拟云备份云恢复(源码)”涉及了四个关键的技术领域,分别是Android、Json、SSM(Spring、SpringMVC、MyBatis)以及MySQL,这些都是在开发分布式系统,尤其是移动...

    ztree插件前台和后台数据交互

    在后台,通常我们需要使用Java来处理业务逻辑,生成JSON格式的数据,这是ZTree与后台交互的主要数据载体。 1. **JSON数据格式**:ZTree的数据源主要是JSON对象数组,每个对象代表一个树节点,包含id、name、pId(父...

    Spring MVC不能直接接收list类型参数的问题

    对于基于 Java 的 Spring MVC 框架而言,处理这种交互通常需要理解如何正确地接收前端发送的数据。本文探讨的是一个常见的问题——Spring MVC 无法直接接收 List 类型参数。 #### 问题描述 当前端使用 jQuery 向...

    ext前后台交互实例

    "ext前后台交互实例"这一主题聚焦于如何通过JSON(JavaScript Object Notation)格式的数据进行前后端之间的通信,以实现数据的高效传输和处理。本文将深入探讨此主题,解析其中的关键概念和技术细节。 ### JSON在...

    javascprit+后台Spring mvc模块源码

    在前后端交互中,通常会使用JSON格式进行数据交换,因为JSON轻量级且易于解析。 总结一下,这个源码包涵盖了从JavaScript前端到Spring MVC后端的完整开发流程,包括了前端UI的实现、后端的请求处理、业务逻辑以及...

    echarts简单的前后台交互显示

    总的来说,本项目旨在演示如何在Java Web环境中使用ECharts进行简单的前后台交互,通过SSM框架提供固定数据,然后在前端利用ECharts库进行数据可视化。这对于初学者来说是一个很好的实践案例,可以帮助他们理解和...

    Java Spring技术栈构建完整前后台团购网站视频教程附源码

    本教程主要围绕“Java Spring技术栈构建完整前后台团购网站”这一主题展开,结合实际案例,深入讲解如何利用Spring框架及其相关技术实现一个功能完备的团购网站。在本教程中,我们将探讨以下核心知识点: 1. **...

    案例8:Spring整合Spring MVC与Hibernate + EasyUI实现电子商城后台订单管理.pdf

    - 使用Jackson库支持Spring MVC的JSON数据转换,便于前后端之间的数据交换。 2. **Hibernate与数据库操作** - Hibernate通过ORM技术将Java对象映射到数据库表上,简化了数据库操作。 3. **EasyUI控件的使用*...

    案例9:Spring整合MyBatis与Spring MVC+EasyUI实现电子商城后台用户管理.docx

    接着,我们需要添加Jackson的相关jar包,以支持Spring MVC对Json格式数据的自动转换。 项目结构设计得相当清晰,分为多个包,每个包都有其特定的职责。例如,`com.digital.controller`存放控制器类,负责处理HTTP...

    小程序后台数据交互DEMO(源码)

    小程序后台数据交互DEMO(源码)是一个包含小程序前端代码以及ASP.NET和J2EE后端源码的综合示例项目,旨在帮助开发者理解和实践如何在小程序中与服务器进行数据交换。这个DEMO涵盖了从客户端到服务器的数据请求、响应...

    Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子 不包含官方JS 自己下载

    在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...

Global site tag (gtag.js) - Google Analytics