package cn.lili.security; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.ContentCachingRequestWrapper; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * lmk-shop-java * * @author : zxl * @date : 2025-11-20 13:35 **/ @Component @Order(Ordered.HIGHEST_PRECEDENCE) public class GlobalRequestCachingFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { // 包装所有请求,支持重复读取请求体 ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request); // 统一设置UTF-8编码,避免表情乱码 response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=UTF-8"); filterChain.doFilter(wrappedRequest, response); } }