过滤器中获取json数据
判断是不是 json请求
//获取json
HttpServletRequest request = (HttpServletRequest) servletRequest;
String contentType = request.getContentType();
String paramJson = "";
if ("application/json; charset=UTF-8".equals(contentType)) {
paramJson = this.getJsonParam((HttpServletRequest) servletRequest);
}
获取json数据
/**
* 获取Json数据
*
* @param request
* @return
*/
private String getJsonParam(HttpServletRequest request) {
String jsonParam = "";
ServletInputStream inputStream = null;
try {
int contentLength = request.getContentLength();
if (!(contentLength < 0)) {
byte[] buffer = new byte[contentLength];
inputStream = request.getInputStream();
for (int i = 0; i < contentLength; ) {
int len = inputStream.read(buffer, i, contentLength);
if (len == -1) {
break;
}
i += len;
}
jsonParam = new String(buffer, "utf-8");
}
} catch (IOException e) {
log.error("参数转换成json异常g{}", e);
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.error("参数转换成json异常s{}", e);
}
}
}
return jsonParam;
}
返回json
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setCharacterEncoding("utf-8");
response.setContentType("application/json; charset=utf-8");
String result = "";
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.print(result);
writer.flush();
writer.close();
}
完整代码
package cn.udeam.common.filter;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.util.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import static cn.udeam.common.tools.HttpUtil.CONTENT_TYPE_JSON;
/**
* 过滤器
*
* @author tizzy
*/
@Slf4j
public class ConfigFilter implements Filter {
@Override
public void init(javax.servlet.FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("============ 正在进入过滤器 ============= ");
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setCharacterEncoding("utf-8");
response.setContentType("application/json; charset=utf-8");
String result = "";
//获取url
String requestUrl = request.getRequestURI();
log.info("============ 当前请求 url为 ============= {} ", requestUrl);
String jsonParam = getJsonParam(request);
log.info(" 请求 json 数据为 : {} ", jsonParam);
if (!StringUtils.isEmpty(requestUrl)) {
//根据url去查询模板配置
..... 业务逻辑 .....
if (firstByUrl == null || firstByUrl.getSuBurl().equals(requestUrl)) {
ReturnMessage returnMessage = new ReturnMessage();
returnMessage.setCode(-555);
returnMessage.setMsg("非法请求或暂无此 url! ");
result = JSON.toJSONString(returnMessage);
} else {
jsonParam = getJsonParam(request);
log.info(" 请求 json 数据为 : {} ", jsonParam);
result = HttpUtil.post(firstByUrl.getUrl(), jsonParam, "utf-8", CONTENT_TYPE_JSON);
log.info(" 请求返回结果 : {} ", result);
}
}
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.print(result);
writer.flush();
writer.close();
}
// filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
/**
* 获取Json数据
*
* @param request
* @return
*/
private String getJsonParam(HttpServletRequest request) {
String jsonParam = "";
ServletInputStream inputStream = null;
try {
int contentLength = request.getContentLength();
if (!(contentLength < 0)) {
byte[] buffer = new byte[contentLength];
inputStream = request.getInputStream();
for (int i = 0; i < contentLength; ) {
int len = inputStream.read(buffer, i, contentLength);
if (len == -1) {
break;
}
i += len;
}
jsonParam = new String(buffer, "utf-8");
}
} catch (IOException e) {
log.error("参数转换成json异常g{}", e);
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.error("参数转换成json异常s{}", e);
}
}
}
return jsonParam;
}
}