Spring MVC 实现 GET 请求下划线风格参数映射至驼峰风格的类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC 实现 GET 请求下划线风格参数映射至驼峰风格的类相关的知识,希望对你有一定的参考价值。
参考技术A 这里是 Wrapper 的具体实现主要内容是修改了getParameterNames和getParameterValues的返回值。
继续往里面 Debug 观察mpvs是如何得到的。
发现调用的是WebUtils的getParametersStartingWith方法,继续观察里面的实现。
这里最终发现了可以 hook 的点就是修改getParameterNames和getParameterValues的返回值。这个方法返回的Map的 key 将会用来寻找映射对象的属性来赋值,如果是下划线风格的毫无疑问将会无法匹配而导致赋值失败。所以加 Wrapper 修改getParameterNames的返回值,让获取到的 key 都是驼峰风格的,同步的还要修改getParameterValues保证传入驼峰风格的 key 时也能正常的获取到 value。
Spring MVC过滤器-HiddenHttpMethodFilter
Spring MVC过滤器-HiddenHttpMethodFilter
浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。
HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承了父类的doFilterInternal方法,工作原理是将jsp页面的form表单的method属性值在doFilterInternal方法中转化为标准的Http方法,即GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE,然后到Controller中找到对应的方法。例如,在使用注解时我们可能会在Controller中用于@RequestMapping(value = "list", method = RequestMethod.PUT),所以如果你的表单中使用的是