SpringMVC-05-JSON

2021-05-05 16:27

阅读:472

YPE html>

标签:script   col   text   factor   defaults   fas   struct   drive   code   

6、JSON

6.1、入门介绍

0、为什么火?有什么用?

前后端分离最重要的是什么?

就是数据传输

而Json就是一个极为优秀的前后端传输数据的格式或者说工具

1、概念

var obj = {a: ‘Hello‘, b: ‘World‘}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = ‘{"a": "Hello", "b": "World"}‘; //这是一个 JSON 字符串,本质是一个字符串

2、用法



Title

6.2、在java中使用

1、导入相关依赖Jackson或者fastJson

com.fasterxml.jackson.core
        jackson-databind
        2.11.0org.projectlombok
        lombok
        1.16.10

2、把包导入到lib

不然会报404

3、编写工具类

一个比较简单的工具类

package com.bing.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import java.text.SimpleDateFormat;

/**
 * @author zhangbingbing
 * @version 1.0
 * @date 2020/5/28 12:07
 */
public class JsonUtil {
    //自己编写工具类

    /**
     *
     * @param object : 我们要转换的类型
     * @param format : 格式,一般用于日期
     * @return
     */
    public static String getJson(Object object, String format) {
        //创建一个处理java对象的mapper
        ObjectMapper mapper = new ObjectMapper();
        //把默认格式关了
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        //设定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //用mapper映射来设置日期格式
        mapper.setDateFormat(sdf);
        try {
            return mapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }

    //重载一个方法
    public static String getJson(Object object) {
        return getJson(object, "yyyy-MM-dd HH:mm:ss");
    }
}

4、测试

亲测可以

package com.bing.controller;

import com.bing.pojo.User;
import com.bing.utils.JsonUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * @author zhangbingbing
 * @version 1.0
 * @date 2020/5/28 11:55
 */
//@RestController    //表示下面的所有方法都不走视图过滤器,直接返回到页面
@Controller
public class TestJson {
    @ResponseBody  //这个注解有啥用:直接让下面的方法不走视图过滤器,直接返回字符串到页面上
    @RequestMapping("/t1")
    public String test01() throws JsonProcessingException {
        //在Jackson中我们用的最多的ObjectMappering
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("冰冰", 17, "boy");
        return mapper.writeValueAsString(user);
    }

    @ResponseBody  //这个注解有啥用:直接让下面的方法不走视图过滤器,直接返回字符串到页面上
    @RequestMapping("/t2")
    public String test02() throws JsonProcessingException {
        //在Jackson中我们用的最多的ObjectMappering
        User user = new User("冰冰2号", 12, "girl");
        return JsonUtil.getJson(user);
    }

    @ResponseBody  //这个注解有啥用:直接让下面的方法不走视图过滤器,直接返回字符串到页面上
    @RequestMapping("/t3")
    public String test03() throws JsonProcessingException {
        //在Jackson中我们用的最多的ObjectMappering
        Date date = new Date();
        return JsonUtil.getJson(date);
    }
}

5、遇到的问题

  • 乱码问题

    在pringmvc-servlet.xml中配置解决乱码问题


    

6.3、补充

后端设置编码

 @RequestMapping("/a1")
    public void ajax(String name, HttpServletResponse response) throws IOException {
        System.out.println("找到了资源!");
        System.out.println("param:name-->" + name);
        response.setContentType("text/html;charset=utf-8");
        Map map = new HashMap();
        if ("bingbing".equals(name)) {
            map.put("userExist", true);
            map.put("msg", "用户名已存在!");
        } else {
            map.put("userExist", false);
            map.put("msg", "用户名可用!");
        }
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(response.getWriter(), map);
    }
  • 前端拿到数据
  • 要用$.post(地址,传递的值,成功返回的函数, type:json)

SpringMVC-05-JSON

标签:script   col   text   factor   defaults   fas   struct   drive   code   

原文地址:https://www.cnblogs.com/bingstudy/p/13192582.html


评论


亲,登录后才可以留言!