一、解决中文乱码问题
解决中文乱码问题的关键在于判断字符是什么时候乱码的
先在java程序里刚生成这个值的地方打印一下,如果在控制台输出就乱码了,那就排除浏览器和jsp页面的编码出问题。否则
看浏览器的编码
看这个jsp页面的编码是否设置好了

一般不用怀疑是tomcat的编码出问题,因为如果tomcat8.0之后,不需要设置URIEncoding="UTF-8",默认就是utf-8编码。
如果在刚接受到前端传来的值,后端打印出来就是乱码,那就要用springMVC提供的过滤器(不过我们都将过滤器作为默认的死配置,不管乱不乱码,只要是个springMVC项目就给配上过滤器)
自此之后,web.xml的“死配置”变成了:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--1.注册DispatcherServlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--关联SpringMVC配置文件:通过初始化参数指定SpringMVC配置文件的位置--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--配置DispatcherServlet启动级别:数字越小,启动越早--><load-on-startup>1</load-on-startup></servlet><!--所有请求都会被springmvc拦截--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern> <!--但jsp页面除外,/*才包括jsp页面--></servlet-mapping><!--2.配置springMVC的乱码过滤器--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
但某些极端情况下,springMVC提供的过滤器也没用了。解决办法视频吧
二、JSON的使用
再重申一遍,JSON只是一种数据交换格式,本身可以直接理解成String字符串类型,并不是一种语言。
进入前后端分离时代以后,后端只需要给前端提供一个controller接口,而前端是纯HTML页面,前端和后端完全独立。如何交互?就需要约定好一种数据传输格式——JSON。
2.1 前端的json与js互转
前端需要将json转为js对象才能用。

2.2 后端的JSON与java对象互转——Jackson
导jar包
叫这个名字:jackson-databind
在springmvc.xml配置解决JSON乱码问题的配置

可以用啦

注意: 因为现在都是前后端分离的,后端直接返回JSON字符串,而不要走视图解析器(后端开发自己测试的时候再用视图解析器看一眼)。两种直接返回字符串的方法:
在controller类名上加一个@RestController注解
在controller类名上加@Controller注解,在方法名上加@ResponseBody注解
如果java对象是Date类的时间格式,如何转换json?

那如何转为人能看懂的格式呢?
法(一)用java自带的SimpleDateFormat去转

法(二)用jackson提供的方法去转

2.3 后端的json与java对象互转——fastjson
fastjson和jackon用哪个?
公司让用哪个就用那个。
