From c635d78b479510ebe2556a420948effcd30a0731 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 21 十二月 2024 18:40:43 +0800 Subject: [PATCH] 新建德森项目分支 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/CachedBodyHttpServletRequest.java | 220 +++++++++++++++++++++++++++--------------------------- 1 files changed, 110 insertions(+), 110 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/CachedBodyHttpServletRequest.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/CachedBodyHttpServletRequest.java index ff328b7..2c79145 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/CachedBodyHttpServletRequest.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/security/CachedBodyHttpServletRequest.java @@ -1,110 +1,110 @@ -package com.zy.asrs.wms.common.security; - -import com.alibaba.fastjson.JSON; -import com.zy.asrs.wms.utils.EncryptUtils; -import com.zy.asrs.wms.utils.WebkitParseUtils; -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import java.io.*; -import java.util.HashMap; -import java.util.Map; - -public class CachedBodyHttpServletRequest extends HttpServletRequestWrapper { - private final byte[] cachedBody; - private final Map<String, String[]> parameterMap; - - public CachedBodyHttpServletRequest(HttpServletRequest request) throws IOException { - super(request); - String requestMethod = request.getMethod(); - if ("GET".equalsIgnoreCase(requestMethod)) { - Map<String, String[]> map = request.getParameterMap(); - String jsonString = JSON.toJSONString(map); - this.cachedBody = jsonString.getBytes(); - this.parameterMap = map; - }else { - // 璇诲彇璇锋眰浣撳苟缂撳瓨 - InputStream inputStream = request.getInputStream(); - // 鏂规硶鏉ヨ鍙栨墍鏈夊瓧鑺� - this.cachedBody = readBytesFromInputStream(inputStream); - - this.parameterMap = new HashMap<>(); - // 璇诲彇骞惰В鏋愯〃鍗曟暟鎹� - parseRequestParameters(); - } - } - - private byte[] readBytesFromInputStream(InputStream inputStream) throws IOException { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = inputStream.read(buffer)) != -1) { - byteArrayOutputStream.write(buffer, 0, bytesRead); - } - return byteArrayOutputStream.toByteArray(); - } - - @Override - public ServletInputStream getInputStream() { - return new CachedBodyServletInputStream(cachedBody); - } - - @Override - public BufferedReader getReader() { - return new BufferedReader(new InputStreamReader(getInputStream())); - } - - @Override - public String getParameter(String name) { - String[] values = parameterMap.get(name); - return (values != null && values.length > 0) ? values[0] : null; - } - - @Override - public Map<String, String[]> getParameterMap() { - return parameterMap; - } - - @Override - public String[] getParameterValues(String name) { - return parameterMap.get(name); - } - - private static class CachedBodyServletInputStream extends ServletInputStream { - private final ByteArrayInputStream inputStream; - - public CachedBodyServletInputStream(byte[] cachedBody) { - this.inputStream = new ByteArrayInputStream(cachedBody); - } - - @Override - public boolean isFinished() { - return inputStream.available() == 0; - } - - @Override - public boolean isReady() { - return true; - } - - @Override - public void setReadListener(ReadListener listener) { - throw new UnsupportedOperationException(); - } - - @Override - public int read() { - return inputStream.read(); - } - } - - private void parseRequestParameters() { - String string = new String(cachedBody); - HashMap<String, Object> formData = WebkitParseUtils.getFormData(string); - for (Map.Entry<String, Object> entry : formData.entrySet()) { - parameterMap.put(entry.getKey(), new String[]{entry.getValue().toString()}); - } - } -} - +package com.zy.asrs.wms.common.security; + +import com.alibaba.fastjson.JSON; +import com.zy.asrs.wms.utils.EncryptUtils; +import com.zy.asrs.wms.utils.WebkitParseUtils; +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +public class CachedBodyHttpServletRequest extends HttpServletRequestWrapper { + private final byte[] cachedBody; + private final Map<String, String[]> parameterMap; + + public CachedBodyHttpServletRequest(HttpServletRequest request) throws IOException { + super(request); + String requestMethod = request.getMethod(); + if ("GET".equalsIgnoreCase(requestMethod)) { + Map<String, String[]> map = request.getParameterMap(); + String jsonString = JSON.toJSONString(map); + this.cachedBody = jsonString.getBytes(); + this.parameterMap = map; + }else { + // 璇诲彇璇锋眰浣撳苟缂撳瓨 + InputStream inputStream = request.getInputStream(); + // 鏂规硶鏉ヨ鍙栨墍鏈夊瓧鑺� + this.cachedBody = readBytesFromInputStream(inputStream); + + this.parameterMap = new HashMap<>(); + // 璇诲彇骞惰В鏋愯〃鍗曟暟鎹� + parseRequestParameters(); + } + } + + private byte[] readBytesFromInputStream(InputStream inputStream) throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + byteArrayOutputStream.write(buffer, 0, bytesRead); + } + return byteArrayOutputStream.toByteArray(); + } + + @Override + public ServletInputStream getInputStream() { + return new CachedBodyServletInputStream(cachedBody); + } + + @Override + public BufferedReader getReader() { + return new BufferedReader(new InputStreamReader(getInputStream())); + } + + @Override + public String getParameter(String name) { + String[] values = parameterMap.get(name); + return (values != null && values.length > 0) ? values[0] : null; + } + + @Override + public Map<String, String[]> getParameterMap() { + return parameterMap; + } + + @Override + public String[] getParameterValues(String name) { + return parameterMap.get(name); + } + + private static class CachedBodyServletInputStream extends ServletInputStream { + private final ByteArrayInputStream inputStream; + + public CachedBodyServletInputStream(byte[] cachedBody) { + this.inputStream = new ByteArrayInputStream(cachedBody); + } + + @Override + public boolean isFinished() { + return inputStream.available() == 0; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener listener) { + throw new UnsupportedOperationException(); + } + + @Override + public int read() { + return inputStream.read(); + } + } + + private void parseRequestParameters() { + String string = new String(cachedBody); + HashMap<String, Object> formData = WebkitParseUtils.getFormData(string); + for (Map.Entry<String, Object> entry : formData.entrySet()) { + parameterMap.put(entry.getKey(), new String[]{entry.getValue().toString()}); + } + } +} + -- Gitblit v1.9.1