欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 前端技术 > javascript >内容正文

javascript

spring mvc在参数绑定前通过filter过滤器改变请求参数的值 -凯发k8官方网

发布时间:2025/1/21 javascript 19 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 spring mvc在参数绑定前通过filter过滤器改变请求参数的值 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

第一步,对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() {} }

效果:

总结

以上是凯发k8官方网为你收集整理的spring mvc在参数绑定前通过filter过滤器改变请求参数的值的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图