| package com.doumee.core.servlet; | 
|   | 
| import lombok.Getter; | 
|   | 
| import javax.servlet.ServletInputStream; | 
| import javax.servlet.http.HttpServletRequest; | 
| import javax.servlet.http.HttpServletRequestWrapper; | 
| import java.io.*; | 
| import java.util.Collections; | 
| import java.util.Enumeration; | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * 增加请求流副本 | 
|  * @author  dm | 
|  * @since 2025/03/31 16:44 | 
|  */ | 
| @Getter | 
| public class ServletDuplicateRequestWrapper extends HttpServletRequestWrapper { | 
|   | 
|     private ServletDuplicateInputStream servletDuplicateInputStream; | 
|   | 
|     private Map<String, String[]> parameters = new HashMap<>(); | 
|   | 
|     public ServletDuplicateRequestWrapper(HttpServletRequest request) { | 
|         super(request); | 
|     } | 
|   | 
|     /** | 
|      * 添加参数 | 
|      */ | 
|     public void addParameter (String name, Object value) { | 
|         if (value == null) { | 
|             return; | 
|         } | 
|         if (value instanceof String[]) { | 
|             this.parameters.put(name, (String[]) value); | 
|         } else if (value instanceof String) { | 
|             this.parameters.put(name, new String[]{(String) value}); | 
|         } else { | 
|             this.parameters.put(name, new String[]{String.valueOf(value)}); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public Map<String, String[]> getParameterMap() { | 
|         if (this.parameters.isEmpty()) { | 
|             return super.getParameterMap(); | 
|         } | 
|         return this.parameters; | 
|     } | 
|   | 
|     @Override | 
|     public String[] getParameterValues(String name) { | 
|         if (this.parameters.isEmpty()) { | 
|             return super.getParameterValues(name); | 
|         } | 
|         return this.parameters.get(name); | 
|     } | 
|   | 
|     @Override | 
|     public Enumeration<String> getParameterNames() { | 
|         if (this.parameters.isEmpty()) { | 
|             return super.getParameterNames(); | 
|         } | 
|         return Collections.enumeration(this.parameters.keySet()); | 
|     } | 
|   | 
|     @Override | 
|     public ServletInputStream getInputStream() throws IOException{ | 
|         if (servletDuplicateInputStream == null) { | 
|             servletDuplicateInputStream = new ServletDuplicateInputStream(super.getInputStream()); | 
|         } | 
|         return servletDuplicateInputStream; | 
|     } | 
|   | 
| } |