重写request对象,使其可以添加参数

//重写类
public class ParameterRequestWrapper extendsHttpServletRequestWrappe r {

    private Mapparams;

    publicParameterRequestWrapper(HttpServletRequest request,
            MapnewParams) {
        super(request);
        this.params = newParams;

        // RequestDispatcher.forward parameter
        // renewParameterMap(request);
    }

    @Override
    public StringgetParameter(String name) {
        String result = "";
        Object v = params.get(name);
        if (v == null) {
            result =null;
        } else if (v instanceof String[]) {
            String[]strArr = (String[]) v;
            if(strArr.length > 0) {
                result =  strArr[0];
            } else{
                result = null;
            }
        } else if (v instanceof String) {
            result =(String) v;
        } else {
            result =  v.toString();
        }

        return result;
    }

    @Override
    public MapgetParameterMap() {
        return params;
    }

    @Override
    public EnumerationgetParameterNames() {
        return newVector(params.keySet()).elements();
    }

    @Override
    public String[]getParameterValues(String name) {
        String[] result = null;

        Object v = params.get(name);
        if (v == null) {
            result =  null;
        } else if (v instanceof String[]) {
            result =  (String[]) v;
        } else if (v instanceof String) {
            result =  new String[] { (String) v };
        } else {
            result =  new String[] { v.toString() };
        }

        return result;
    }

    private voidrenewParameterMap(HttpServletRequest req) {

        String queryString = req.getQueryString();

        if (queryString != null &&queryString.trim().length() > 0) {
            String[]params = queryString.split("&");

            for (int i= 0; i < params.length; i++) {
                int splitIndex =params[i].indexOf("=");
                if (splitIndex == -1) {
                    continue;
                }

                String key =params[i].substring(0, splitIndex);

                if(!this.params.containsKey(key)) {
                    if (splitIndex < params[i].length()) {
                        Stringvalue = params[i].substring(splitIndex + 1);
                        this.params.put(key, new String[] { value });
                    }
                }
            }
        }
    }
}
//filter 过滤器
public class RequestOfAllFilter implements Filter {
    public void destroy(){
    }

    public voiddoFilter(ServletRequest req, ServletResponse resp, FilterChainchain) throws ServletException, IOException {
        HttpServletResponse response =(HttpServletResponse)resp;
        HttpServletRequest request=(HttpServletRequest)req;
        Enumeration parms=  request.getParameterNames();
        HashMap map = new HashMap();
        while (parms.hasMoreElements()){
            StringparameterName = (String)parms.nextElement();//参数名称
            StringparameterValue= request.getParameter(parameterName);
            parameterValue = parameterValue.replace("<","<");
            parameterValue = parameterValue.replace(">",">");
            map.put(parameterName,new String[]{parameterValue});
        }
        request = newParameterRequestWrapper(request,map);
        chain.doFilter(request, response);
    }
    public voidinit(FilterConfig config) throws ServletException {
        System.out.println("================成功加载Filter=================");
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值