日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2025/1/21 javascript 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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() {} }

效果:

總結

以上是生活随笔為你收集整理的Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。