`
wb284551926
  • 浏览: 554084 次
文章分类
社区版块
存档分类
最新评论

在filter中修改request参数(转载)

 
阅读更多

 

1、先新建一个类ParameterRequestWrapper 继承自HttpServletRequestWrapper,代码如下:


  1. private Map params;  
  2. public ParameterRequestWrapper(HttpServletRequest request,Map newParams) {  
  3.   super(request);  
  4.   this.params=newParams;  
  5. }  
  6. // 只要重写getParameterMap这个方法即可,其他不需要
  7. public Map getParameterMap() {  
  8.   return params;  
  9. }  
  10. public Enumeration getParameterNames() {  
  11.   Vector l=new Vector(params.keySet());  
  12.   return l.elements();  
  13. }  
  14. public String[] getParameterValues(String name) {  
  15.   Object v = params.get(name);  
  16.   if(v==null){  
  17.     return null;  
  18.   }else if(v instanceof String[]){  
  19.     return (String[]) v;  
  20.   }else if(v instanceof String){  
  21.     return new String[]{(String) v};  
  22.   }else{  
  23.     return new String[]{v.toString()};  
  24.   }  
  25. }  
  26. public String getParameter(String name) {  
  27.   Object v = params.get(name);  
  28.   if(v==null){  
  29.     return null;  
  30.   }else if(v instanceof String[]){            
  31.     String []strArr=(String[]) v;  
  32.     if(strArr.length>0){  
  33.       return strArr[0];  
  34.     }else{  
  35.       return null;  
  36.     }  
  37.   }else if(v instanceof String){  
  38.     return (String) v;  
  39.   }else{  
  40.     return v.toString();  
  41.   }  
  42. }      

2、在filter中修改parameters,


  1. HttpServletRequest req = (HttpServletRequest) request;  
  2.   
  3. String jsondata = req.getParameter("jsondata");  
  4.       JSONObject ob = JSONObject.fromObject(jsondata);  
  5.         
  6.       HashMap m=new HashMap(request.getParameterMap());  
  7.         
  8.       Set<String> keys = ob.keySet();  
  9.       for (String key : keys) {  
  10.         m.put(key, ob.get(key));  
  11. }  
  12.       
  13.       ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(req,m);         
  14.       chain.doFilter(wrapRequest, response);  

 

分享到:
评论

相关推荐

    使用HttpServletRequestWrapper在filter修改request参数

    标题“使用HttpServletRequestWrapper在filter修改request参数”揭示了主要知识点,即如何在过滤器中通过自定义`HttpServletRequestWrapper` 子类来动态改变请求参数。这通常用于处理如数据验证、安全过滤、参数转换...

    filter对request请求拦截,对请求参数进行修改

    对request请求进行拦截,对请求参数修改。常用于前台提交表单参数关键字的过滤。此工具可以对参数拦截并转义后提交到对应的处理类。 除了添加两个JsFilter.java和GetHttpServletRequestWrapper.java之外,需要在web....

    java web 修改request携带的参数信息

    虽然修改请求参数在某些场景下很有用,但需要注意的是,这可能会影响应用程序的安全性和性能。修改参数值可能破坏原有的业务逻辑,因此只应在必要时进行。同时,Filter的执行会增加服务器的处理时间,所以要优化...

    java filter打印请求返回参数

    ### Java Filter 打印请求返回参数详解 #### 一、背景与目的 在Web开发过程中,经常需要在请求处理流程中增加一些通用的功能,比如日志记录、性能监控、安全控制等。Java Servlet规范提供了Filter机制来实现这些...

    java修改请求参数

    3. **处理逻辑内修改**:如果修改参数的逻辑比较单一,也可以选择在具体处理请求的方法中,先读取原始参数,修改后再进行后续操作。但这种方法通常不推荐,因为它打破了请求的封装性,可能导致代码难以维护。 篡改...

    使用filter配合装饰器模式实现对请求参数加密

    这是一个基于servlet的方式实现对request参数加密的程序;程序中使用了本人自己封装的工具类感性趣的朋友可自行下载,目前工具类简单;加关注在后期的博客中;工具类会加强;这个程序设计的技术有servlet、filter、...

    JSP利用过滤器解决request中文乱码问题.docx

    在上面的JSP页面中,我们设置了页面的字符编码为GB2312,并使用request.getParameter()方法读取参数。如果过滤器正确地设置了字符编码,那么中文字符将被正确地读取。 使用过滤器解决request中文乱码问题是JSP中...

    在Spring MVC或Spring Boot中使用Filter打印请求参数问题

    然而,如果在处理JSON类型的POST请求时,直接在Filter中打印请求参数,可能会遇到一些问题,如上述描述中的`IOException: Stream closed`异常。这是因为当我们读取请求体时,如果没有正确地管理流,流可能在我们尝试...

    Filter中文乱码问题.doc

    `init`方法在Filter初始化时调用,通常用来加载配置参数,例如从`web.xml`文件中获取编码方式。`doFilter`方法则是Filter的核心,它会在每次请求经过时被调用,可以用来修改请求或响应的编码方式。 在`init`方法中...

    java中filter的用法(过滤器)

    Filter需要在web.xml文件中进行配置,配置主要包括Filter的类名、初始化参数以及拦截的URL模式。 ```xml &lt;filter&gt; &lt;filter-name&gt;ForceNoCacheFilter&lt;/filter-name&gt; &lt;filter-class&gt;...

    Jsp的request的用法

    在本篇文章中,我们将深入探讨`request.getParameter()`和`request.setAttribute()`以及`request.getAttribute()`的区别,并提供相关示例来帮助理解它们的用法。 **一、request.getParameter() 和 request....

    RF filter.rar_RF CBF filter_rf_Filter_rffilter_射频滤波器_滤波器 参数

    4. 滤波器参数:在射频滤波器设计中,参数如截止频率、带宽、Q因子、插入损耗、选择性和滚降率等都至关重要。截止频率决定了滤波器的频率响应边界,带宽定义了滤波器允许通过的频率范围,Q因子则影响滤波器的带宽和...

    普通java类 获取Request

    在Java Web开发中,经常需要在非Servlet类(如普通Java类)中获取`HttpServletRequest`对象,以便访问请求中的参数、头信息等。通常情况下,`HttpServletRequest`对象是在Servlet或者过滤器(Filter)中获取的。然而,...

    java 中如何使用filter过滤器

    - **Filter参数**:在`web.xml`中可以通过`init-param`为Filter提供配置参数,以便在Filter中使用。 - **异步Filter**:Java Servlet 3.0及以上版本支持异步Filter,可以在`doFilter`方法中使用异步处理,提高性能。...

    JSP用过滤器解决request getParameter中文乱码问题.docx

    在这个JSP页面中,我们使用`request.getParameter("data")`获取名为"data"的参数,并将其打印出来。如果过滤器配置正确,那么中文参数应该能够正确显示,而不会出现乱码。 总的来说,通过在过滤器中设置合适的字符...

    在使用实现过滤器进行request包装,获取内层request的分析

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在请求到达目标Servlet之前对其进行处理,或者在响应返回给客户端之后进行操作。在本篇内容中,我们将深入探讨如何实现一个过滤器来包装request...

    Filter在MyEclipse中的创建方法

    在Java Web开发中,Filter(过滤器)是一个重要的组件,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在MyEclipse集成开发环境中创建Filter,并通过实际操作来帮助理解其工作原理。 首先,我们...

    Filter过滤器的代码及其web.xml配置代码

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...

    如何配置Filter过滤器处理JSP中文乱码

    在这个例子中,`&lt;init-param&gt;`标签用于设置字符编码和忽略大小写的参数。以下是配置示例: ```xml &lt;filter&gt; &lt;filter-name&gt;EncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;...

Global site tag (gtag.js) - Google Analytics