java request 修改参数_修改HttpServletRequest中的参数

工作中,想在controller接收参数前修改入参值,比如前端将部分参数加密,我想在controller接收参数前解密然后将字段重新赋值,下面代码可以帮你实现。

@Component

@WebFilter(filterName="handleFilter",urlPatterns="/*")

public class HandleFilter extends OncePerRequestFilter {

@Override

protected void doFilterInternal(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

ModifyParametersWrapper mParametersWrapper = new ModifyParametersWrapper(request);

filterChain.doFilter(mParametersWrapper, response);

}

}

public class ModifyParametersWrapper extends HttpServletRequestWrapper{

private Map parameterMap; // 所有参数的Map集合

public ModifyParametersWrapper(HttpServletRequest request) {

super(request);

parameterMap = request.getParameterMap();

}

/**

* 获取所有参数名

* @return 返回所有参数名

*/

@Override

public Enumeration getParameterNames() {

Vector vector = new Vector(parameterMap.keySet());

return vector.elements();

}

/**

* 获取指定参数名的值,如果有重复的参数名,则返回第一个的值 接收一般变量 ,如text类型

* @param name

* 指定参数名

* @return 指定参数名的值

*/

@Override

public String getParameter(String name) {

String[] results = parameterMap.get(name);

if (results == null || results.length <= 0)

return null;

else {

return results[0];

}

}

/**

* 获取指定参数名的所有值的数组,如:checkbox的所有数据

* 接收数组变量 ,如checkobx类型

*/

@Override

public String[] getParameterValues(String name) {

String[] results = parameterMap.get(name);

if (results == null || results.length <= 0)

return null;

else {

int length = results.length;

if (needDecrpty()) {

for (int i = 0; i < length; i++) {

results[i] = decrpty(results[i]);

}

}

return results;

}

}

/**

* 是否需要解密

* @return

*/

private boolean needDecrpty() {

String[] needDecrpty = parameterMap.get("needDecrpty");

if (needDecrpty == null || needDecrpty.length == 0) {

return false;

} else {

if ("true".equals(needDecrpty[0])) {

return true;

}

}

return false;

}

/**

* 解密操作

* @return

*/

private String decrpty(String oldValue) {

return oldValue+"已解密";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值