zoukankan      html  css  js  c++  java
  • Spring MVC 处理JSON | JSONP类型数据

    SpringMVC返回JSON格式的数据:

      1 添加jar包(gson-2.8.0.jar):

            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.0</version>
            </dependency>

        或者(jackson-databind-2.1.5.jar):

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.1.5</version>
            </dependency>

       2 在controller中配置注解:   

          方法的返回值就是需要的对象

          @ResponseBody会自动调用包中的方法将数据转为json格式

        @ResponseBody
        @RequestMapping(value="/users-json", method=RequestMethod.GET)
        public Collection<User> listjson() {
            //显示列表
            return userDao.getAll();
        }

     SpringMVC返回JSONP格式的数据:

      1 使用gson

        js只有数组,数组具有所有集合的特性

        jquery实现jsonp环境:动态生成了一个script标签,将请求转发到远程地址

        script标签必须定义到callback方法后面

    @RequestMapping(value="/users-jsonp", method=RequestMethod.GET)
        public void listjson(String callback, HttpServletResponse response) throws IOException {
            //显示列表
            Collection<User> list = userDao.getAll();
            Gson gson = new Gson();
            String json = gson.toJson(list);
            response.getWriter().println(callback + "(" + json + ")");
        }
    <script>
      function showdata(data){
          console.log(data);
      }
    </script>
    <script src="http://localhost:8080/springmvc-02-mvn/users-jsonp?callback=showdata">
    </script>

      2 使用spring内置的处理方式:

    @RequestMapping(value="/user/checklogin2/{token}", produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public String checkLogin(@PathVariable String token, String callback){
        MessageResult result = ssoService.getUserByToken(token);
        String json = JsonUtils.objectToJson(result);
        String returnStr = callback + "(" + json + ")";
        return returnStr;
    }

      3 使用springMVC提供的类:

    @RequestMapping(value="/user/checklogin2/{token}", produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public String checkLogin(@PathVariable String token, String callback){
        MessageResult result = ssoService.getUserByToken(token);
        String json = JsonUtils.objectToJson(result);
        String returnStr = callback + "(" + json + ")";
        return returnStr;
    }

      SpringMVC提交JSON格式的数据:

       对表单进行json提交(使用ajax):

     $(function(){
            $('#saveBtn').click(function(){
            //创建javascript对象 var row
    = { username: $('#username').val(), password: $('#password').val(), age: $('#age').val(), } $.ajax({ url: 'user-json', type: 'post' , contentType: 'application/json;charset=utf-8',//声明请求头的内容类型 data: JSON.stringify(row)//将js对象转为json串 }); }); });
        @RequestMapping(value="/user-json", method=RequestMethod.POST)
        public String savejson(@RequestBody User user) {
    
            userDao.save(user);
            return "redirect:/users";
        }
  • 相关阅读:
    全角半角转换
    MSN的头像存放路径
    treeview托拽和动态添加节点以及treeview和xml的交互的实现
    一个简单的分页存储过程
    datagrid数据导出到excel文件给客户端下载的几种方法
    大容量数据传输,web.config修改方法
    XSD(XML Schema Definition)学习笔记
    最近想发起一次服务器合租,有米有人有兴趣
    从首页看CCS布局
    关于CS1.1后台管理页面的研究
  • 原文地址:https://www.cnblogs.com/roxy/p/7604026.html
Copyright © 2011-2022 走看看