第一步,对request请求进行增强:

/*** author: zhangxueliang* date: 2019-08-23*/
public class ParameterServletRequestWrapper extends HttpServletRequestWrapper {private Map<String , String[]> params = new HashMap<String, String[]>();public ParameterServletRequestWrapper(HttpServletRequest request) throws IOException {super(request);this.params.putAll(request.getParameterMap());}/*** 重载一个构造方法* @param request* @param extendParams*/public ParameterServletRequestWrapper(HttpServletRequest request , Map<String , String[]> extendParams) throws IOException {this(request);addAllParameters(extendParams);}@Overridepublic String getParameter(String name) {String[]values = params.get(name);if(values == null || values.length == 0) {return null;}return values[0];}@Overridepublic String[] getParameterValues(String name) {return params.get(name);}public void addAllParameters(Map<String , String[]>otherParams) {for(Map.Entry<String , String[]>entry : otherParams.entrySet()) {addParameter(entry.getKey() , entry.getValue());}}public void addParameter(String name , Object value) {if(value != null) {if(value instanceof String[]) {params.put(name , (String[])value);}else if(value instanceof String) {params.put(name , new String[] {(String)value});}else {params.put(name , new String[] {String.valueOf(value)});}}}
}

第二步,编写Filter过滤器,不可使用拦截器.因为过滤器可以继续向后传递修改后的request,拦截器不能实现。

/*** author: zhangxueliang* date: 2019-08-23*/
@WebFilter(urlPatterns = "/v11/account/*")//如果这里写@Compnent就是拦截所有请求
public class HttpServletFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {Map<String, String[]> m = new HashMap<String, String[]>(request.getParameterMap());if ("".equals(request.getParameter("cooperationCompanyId"))){m.put("cooperationCompanyId", new String[]{"-1"});}ParameterServletRequestWrapper parameterRequestWrapper = new ParameterServletRequestWrapper((HttpServletRequest) request, m);//继续向后传递修改后的request,拦截器不能实现。chain.doFilter(parameterRequestWrapper, response);}@Overridepublic void destroy() {}
}

效果:

Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值相关推荐

  1. ​ SpringMVC表单请求参数的绑定,配置编码过滤器解决请求参数中文乱码问题,自定义类型转换器

    文章目录 ​ SpringMVC的参数绑定支持的数据类型 基本数据类型和字符串类型 JavaBean 包装类 Map类型 List类型 POST请求参数中文乱码的解决方法 自定义类型转换器(Date类 ...

  2. 通过filter过滤器对请求参数进行处理

    遇见的问题: 前台把参数通过报文或者使用表单.ajax提交到后台,如果我们的请求参数是加密的,那么我们在controller里面的每一个方法里都需要进行解密处理.如果方法太多,那就太麻烦了. 设计方案 ...

  3. 关于spring mvc时间类型绑定失败解决方法

    关于spring mvc时间类型绑定失败解决方法 前端页面用的easyui,有个日期字段: <input name="sdt" class="easyui-date ...

  4. vue+filter过滤器(多参数)传参 - 代码篇

    vue+filter过滤器(多参数)传参 - 代码篇 传1个参数 //html {{a1 | filterAa}} //js filters:{filterAa(a1){// a1是传入的参数} } ...

  5. 拦截器获取请求参数post_SpringBoot拦截器如何获取http请求参数

    1.1.获取http请求参数是一种刚需 我想有的小伙伴肯定有过获取http请求的需要,比如想 前置获取参数,统计请求数据 做服务的接口签名校验 敏感接口监控日志 敏感接口防重复提交 等等各式各样的场景 ...

  6. Spring MVC 数据绑定 绑定POJO类型 filter过滤器

    概述 用户在传参的过程中肯定不单单是一个且同种类型的,可能同时会传入多个不同类型的参数数据,所以如果使用简单数据绑定,那是非常繁琐的. 所以针对多类型,多参数的请求.可以使用POJO类型进行数据绑定, ...

  7. Spring MVC 第四章:Form表单验证-JSR303和Spring框架验证以及国际化语言、Filter过滤器

    Form表单的验证验证,就是在提交表单的时候进行验证是否为空,是否满足特定条件才可以创建.常见的表单有前端验证和后端验证. 其中,前端验证有:HTML验证,JS验证,Jquery验证. 后端验证有:J ...

  8. spring mvc DispatcherServlet详解前传---HttpServletBean类

    从上章里我们已经看到: DispatcherServlet extends FrameworkServlet FrameworkServlet extends HttpServletBean impl ...

  9. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

    前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ①定义一个类,实现被装饰对象的接口 ②定义一个成员变量 ...

最新文章

  1. c语言打开当前目录下的文件_Linux下自定义文件默认打开方式
  2. Java的知识点6—— 强制类型转换、基本类型转化时常见错误和问题、 简单的键盘输入和输出
  3. C# 版本设计模式(Design Pattern)---------------总序
  4. ctype函数_PHP Ctype(字符类型)函数
  5. linux 内核系统优化,Linux高并发应用类型对系统内核的优化
  6. Atlassian 域名被曝一次点击账户接管漏洞 可导致供应链攻击
  7. mybatis中$和#号的区别
  8. zynq开发系列6:创建AXI IP实现PS对PL的数据配置(步骤二配置block design)
  9. ionic platform add ios, Error:spawn EACCES
  10. Docker容器实现SSH连接
  11. C盘爆满原来是腾讯电脑管家惹的祸
  12. 米家app扫描不到石头机器人_石头扫地机器人T7评测:能驾驭豪宅的高端旗舰?...
  13. 如何用ABBYY FineReader提取图片中的文字
  14. Apche OFBiz 反序列化漏洞复现
  15. 论文笔记:FLEX: Unifying Evaluation for Few-Shot NLP
  16. 安装python环境以及安装pycharm编译器教程
  17. 使用fsck修复系统文件错误
  18. c语言编程刘备称帝,汉献帝得知刘备称帝后,为什么先是沉默不语,然后又仰天大笑?...
  19. unity人物刚体移动_教程篇 | Unity人物移动动画
  20. 【来日复制粘贴】数据透视表分类不同账龄

热门文章

  1. 【深度强化学习】DQN训练超级玛丽闯关
  2. 【算法基础】数据结构导论第二章-线性表.pptx
  3. 计算机视觉 模型、学习和推理 Computer vision:models,learning and inference(免费下载)
  4. 麦田在线携手网易云信,开启手机智能找房新时代
  5. 互联网1分钟 |1221
  6. 短信转化效果不好?试试这几招
  7. Android动态加载插件APK
  8. fir.im Weekly - iOS 保持界面流畅的技巧 1
  9. 基于多进程和基于多线程服务器的优缺点及nginx服务器的启动过程
  10. ylb:表的结构的修改和基本约束