数据库中的日期用 字符串接收 后面莫名其妙的 多 .0 然后各种找 把这个解决掉了
思路是用拦截器 将返回给前端的 json 字符串 匹配 然后给替换掉
替换前 2019-08-03 08:51:85.0
替换后 2019-08-03 08:51:85
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
String path = servletRequest.getServletPath();
String method = servletRequest.getMethod();
//过滤不需要处理的接口 含"."以及绝大部分"GET" 请求都是静态资源
//加上"GET" 是因为项目中的导出数据都是GET请求,最开始未处理 导致导出数据乱码
if (path.contains(".") || (method.equals("GET") && !path.matches(SysConst.GET_NEED_FILTER_PATH))|| (method.equals("POST") && path.matches(SysConst.POST_NO_NEED_FILTER_PATH))) {// 在过滤url之外
chain.doFilter(request, response);
} else {
ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse) response);// 转换成代理类
chain.doFilter(request, wrapperResponse);
byte[] content = wrapperResponse.getContent();// 获取返回值
// 判断是否有值
if (content.length > 0) {
String str = new String(content, "UTF-8").replaceAll(":null,", ":\"\",").replaceAll(":null", ":\"\"");
// 把返回值输出到客户端
ServletOutputStream out = response.getOutputStream();
Pattern p = Pattern.compile("(\\d{4}\\-\\d{1,2}\\-\\d{1,2}\\s\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{1})+");
// 正则 匹配 替换
Matcher m = p.matcher(str);
while (m.find()){
String group = m.group(0);
String replace = group.split("\\.")[0];
str = str.replace(group, replace);
}
out.write(str.getBytes("UTF-8"));
out.flush();
}
}
}