业务场景
在传递数据的过程中, 需要用到加解密, 但是在每个接口中都来调用加解密的话, 整个程序就会变得非常臃肿, 所以当下考虑的解决方法是在统一返回的JsonResult的类中做统一加密, 在Filter中去做统一解密.
遇到的问题
Filter的doFilter方法中的request只有setAttribute而没有setParameter也没有add方法, 所以是没办法直接添加或修改参数的。只能重写HttpServletRequestWrapper, 然后用自己重写的HttpServletRequestWrapper来修改参数, 再替换doFilter的request.
原本request参数类型是ServletRequest接口, HttpServletRequestWrapper是ServletRequest的一个实现类.
代码实现
自定义HttpServletRequestWrapper
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.*;
public class ChangeRequestWrapper extends HttpServletRequestWrapper {
private Map parameterMap; // 所有参数的Map集合
/**
* ChangeRequestWrapper构造函数
* @param request
*/
public ChangeRequestWrapper(HttpServletRequest request) {
super(request);
// 给参数集合赋值
par