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.0 org.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
评论
亲,登录后才可以留言!