Ajax和SpringMVC之间JSON交互

Ajax和SpringMVC之间的json数据传输有两种方式:

1.直接传输Json对象

2.将Json序列化成json字符串

1.直接传输Json对象

前端Ajax

$(document).ready(function(){
    $("#btn_login").click(function(){
        var dataJson = {
            username:$("#username").val(),
            password:$("#password").val()
        };
        $.ajax({
            url:"/login/",
            type:"post",
            data:dataJson,
            contentType:"application/x-www-form-urlencoded",//如不设置此项,默认也为此,设置发送给后端的类型
            dataType:"json",//设置接收后端的数据的类型
            async:true,//设置异步,不然可能接收不到后端返回的json
            success:function(data){//data为后端返回的json
                if(data.code==0){
                    window.location.reload();
                }
                else {

                }
            }
        });
    });
});

后端使用

@RequestMapping(path = {"/login/"}, method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpServletResponse response) {
        try {
            Map<String, Object> map = userService.login(username, password);
            if (map.containsKey("ticket")) {
                Cookie cookie = new Cookie("ticket", map.get("ticket").toString());
                cookie.setPath("/");
                response.addCookie(cookie);
                //return "redirect:/";
              return CommonUtil.getJSONString(0, "成功");
            } else {
                //return "redirect:/";
                return CommonUtil.getJSONString(1, map);
            }

        } catch (Exception e) {
            logger.error("登录异常" + e.getMessage());
            //return "redirect:/";
            return CommonUtil.getJSONString(1, "注册异常");
        }
    }

使用@RequestParam,即使用Servlet的request.getgetParameter。这种方式可以接受以application/x-www-form-urlencoded这种方式传输的JSON对象的。

2.将Json序列化

前端Ajax

$(document).ready(function(){
    $("#btn_reg").click(function(){
        var dataJson = {
            username:$("#regusername").val(),
            password:$("#regpassword").val()
        };
        $.ajax({
            url:"/reg/",
            type:"post",
            contentType:"application/json",//以json字符串形式传输
            data:JSON.stringify(dataJson),//将json对象序列化成字符串
            dataType:"json",
            async:true,
            success:function(data){
                if(data.code==0){
                    window.location.reload();
                }
                else {

                }
            }
        });

    });
});

后端Controller

@RequestMapping(path = {"/reg/"}, method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String reg(@RequestBody User user,
                      HttpServletResponse response) {
        try {
            Map<String, Object> map = userService.register(user.getUsername(), user.getPassword());
            if (map.containsKey("ticket")) {
                Cookie cookie = new Cookie("ticket", map.get("ticket").toString());
                cookie.setPath("/");

                response.addCookie(cookie);
                return CommonUtil.getJSONString(0, "注册成功");
            } else {
                return CommonUtil.getJSONString(1, map);
            }

        } catch (Exception e) {
            logger.error("注册异常" + e.getMessage());
            return CommonUtil.getJSONString(1, "注册异常");
        }
    }

@RequestBody中的user中,必须有与前端名称一致的属性,才可以接受到相应数据。

除此之外,@RequestBody还可用Map<String,Object> map来接收。

转载:https://my.oschina.net/u/3786691/blog/1823541

原文地址:https://www.cnblogs.com/smfx1314/p/10661435.html

时间: 2024-10-10 09:17:37

Ajax和SpringMVC之间JSON交互的相关文章

SpringMVC之JSON交互

#操作: 1).添加相关Spring包,另外,在http://mvnrepository.com/artifact/com.fasterxml.jackson.core下载 fastjson包,其实在github上有相关代码备份: 2).在web.xml中配置前端控制器和Spring-config.xml的路径: 3).在Spring-config.xml中,添加额外如下配置: <mvc:annotation-driven> <!--配置@ResponseBody由fastjson解析-

使用ajax请求SpringMVC返回Json出现乱码解决方法

1:在使用ajax请求后台访问数据的数据,后台返回的数据是乱码,带??问号的乱码,之前还一直没有遇到过,在这里记录整理一下,贴出解决代码! (1):前台使用ajax ,已经设定返回的结果为json格式!ajax代码不贴出来了! (2):后台代码 @RequestMapping(value = { "/hello/{uuid}" }, method = RequestMethod.GET /*,produces = "text/html;charset=UTF-8"*

SpringMVC详解(六)------与json交互

Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json 数据格式进行解析和转换? 本篇博客源码链接:http://pan.baidu.com/s/1kURnwDx 密码:b37t 1.两种交互模式 上图显示了客户端请求数据的两种格式,一种是 直接请求 json 数据,另一种是 key/value 数据.但是不管请求是哪种数据,为了在前端页面方便对结果进

SpringMVC学习--json

简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestBody和@ResponseBody      @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json.xml等格式的数据并绑定到controller方法的参

springMVC和Json的交互(就是后台解析json字符串和向前台传递json字符串的过程)

springMVC中和json的交互:主要分为两点,一是传递过来的是json字符串,springMVC会先进行解析,二是传递过来的是key:value那么springMVC可以不进行解析,这里的解析指的是json和java对象之间的转换 java对象:就是实体类的对象 首先先来看一张交互的图: 分析: 1.从这个图中我们可以看出来,前台请求的数据如果是json字符串,我们需要用@RequestBody先将json字符串转成java对象,然后前台传输的是java对象的时候就需要用@Response

Ajax与SpringMvc交互

ajax是一种比较常用的页面技术,以其良好的交互效果已经被广泛应用,为了方便的使用ajax,市面上也出现的不少的ajax框架如dwr.为此springmvc借鉴了dwr的思想,可以使用ajax和springmvc交互,同时提供了java对象转换成json的机制.还是先一睹为快吧 1 如果需要springmvc进行java对象和json的转换需要增加如下配置 <bean class="org.springframework.web.servlet.mvc.annotation.Annotat

SpringMVC框架五:图片上传与JSON交互

在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: <form method="post" enctype="multipart/form-data"> <input type="file" name="pictureFile"> </form>

SpringMVC中出现&quot; 400 Bad Request &quot;错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法 今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求),调试了好长时间

本文使用springMVC和ajax,实现将JSON对象返回到页面

一.引言 本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架. 二.入门例子 ①. 建立工程,并导入相应spring jar包和解析json的包fastjson. ②. 在web.xml文件中配置Spring的核心类DispatcherServlet ③. 配置Spring的核心配置文件spring-servlet.xml ④. 编写实体类Person public class Person