1、先新建一个类ParameterRequestWrapper 继承自HttpServletRequestWrapper,代码如下:
- private Map params;
- public ParameterRequestWrapper(HttpServletRequest request,Map newParams) {
- super(request);
- this.params=newParams;
- }
- // 只要重写getParameterMap这个方法即可,其他不需要
- public Map getParameterMap() {
- return params;
- }
- public Enumeration getParameterNames() {
- Vector l=new Vector(params.keySet());
- return l.elements();
- }
- public String[] getParameterValues(String name) {
- Object v = params.get(name);
- if(v==null){
- return null;
- }else if(v instanceof String[]){
- return (String[]) v;
- }else if(v instanceof String){
- return new String[]{(String) v};
- }else{
- return new String[]{v.toString()};
- }
- }
- public String getParameter(String name) {
- Object v = params.get(name);
- if(v==null){
- return null;
- }else if(v instanceof String[]){
- String []strArr=(String[]) v;
- if(strArr.length>0){
- return strArr[0];
- }else{
- return null;
- }
- }else if(v instanceof String){
- return (String) v;
- }else{
- return v.toString();
- }
- }
2、在filter中修改parameters,
- HttpServletRequest req = (HttpServletRequest) request;
-
- String jsondata = req.getParameter("jsondata");
- JSONObject ob = JSONObject.fromObject(jsondata);
-
- HashMap m=new HashMap(request.getParameterMap());
-
- Set<String> keys = ob.keySet();
- for (String key : keys) {
- m.put(key, ob.get(key));
- }
-
- ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(req,m);
- chain.doFilter(wrapRequest, response);
分享到:
相关推荐
标题“使用HttpServletRequestWrapper在filter修改request参数”揭示了主要知识点,即如何在过滤器中通过自定义`HttpServletRequestWrapper` 子类来动态改变请求参数。这通常用于处理如数据验证、安全过滤、参数转换...
对request请求进行拦截,对请求参数修改。常用于前台提交表单参数关键字的过滤。此工具可以对参数拦截并转义后提交到对应的处理类。 除了添加两个JsFilter.java和GetHttpServletRequestWrapper.java之外,需要在web....
虽然修改请求参数在某些场景下很有用,但需要注意的是,这可能会影响应用程序的安全性和性能。修改参数值可能破坏原有的业务逻辑,因此只应在必要时进行。同时,Filter的执行会增加服务器的处理时间,所以要优化...
### Java Filter 打印请求返回参数详解 #### 一、背景与目的 在Web开发过程中,经常需要在请求处理流程中增加一些通用的功能,比如日志记录、性能监控、安全控制等。Java Servlet规范提供了Filter机制来实现这些...
3. **处理逻辑内修改**:如果修改参数的逻辑比较单一,也可以选择在具体处理请求的方法中,先读取原始参数,修改后再进行后续操作。但这种方法通常不推荐,因为它打破了请求的封装性,可能导致代码难以维护。 篡改...
这是一个基于servlet的方式实现对request参数加密的程序;程序中使用了本人自己封装的工具类感性趣的朋友可自行下载,目前工具类简单;加关注在后期的博客中;工具类会加强;这个程序设计的技术有servlet、filter、...
在上面的JSP页面中,我们设置了页面的字符编码为GB2312,并使用request.getParameter()方法读取参数。如果过滤器正确地设置了字符编码,那么中文字符将被正确地读取。 使用过滤器解决request中文乱码问题是JSP中...
然而,如果在处理JSON类型的POST请求时,直接在Filter中打印请求参数,可能会遇到一些问题,如上述描述中的`IOException: Stream closed`异常。这是因为当我们读取请求体时,如果没有正确地管理流,流可能在我们尝试...
`init`方法在Filter初始化时调用,通常用来加载配置参数,例如从`web.xml`文件中获取编码方式。`doFilter`方法则是Filter的核心,它会在每次请求经过时被调用,可以用来修改请求或响应的编码方式。 在`init`方法中...
Filter需要在web.xml文件中进行配置,配置主要包括Filter的类名、初始化参数以及拦截的URL模式。 ```xml <filter> <filter-name>ForceNoCacheFilter</filter-name> <filter-class>...
在本篇文章中,我们将深入探讨`request.getParameter()`和`request.setAttribute()`以及`request.getAttribute()`的区别,并提供相关示例来帮助理解它们的用法。 **一、request.getParameter() 和 request....
4. 滤波器参数:在射频滤波器设计中,参数如截止频率、带宽、Q因子、插入损耗、选择性和滚降率等都至关重要。截止频率决定了滤波器的频率响应边界,带宽定义了滤波器允许通过的频率范围,Q因子则影响滤波器的带宽和...
在Java Web开发中,经常需要在非Servlet类(如普通Java类)中获取`HttpServletRequest`对象,以便访问请求中的参数、头信息等。通常情况下,`HttpServletRequest`对象是在Servlet或者过滤器(Filter)中获取的。然而,...
- **Filter参数**:在`web.xml`中可以通过`init-param`为Filter提供配置参数,以便在Filter中使用。 - **异步Filter**:Java Servlet 3.0及以上版本支持异步Filter,可以在`doFilter`方法中使用异步处理,提高性能。...
在这个JSP页面中,我们使用`request.getParameter("data")`获取名为"data"的参数,并将其打印出来。如果过滤器配置正确,那么中文参数应该能够正确显示,而不会出现乱码。 总的来说,通过在过滤器中设置合适的字符...
在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在请求到达目标Servlet之前对其进行处理,或者在响应返回给客户端之后进行操作。在本篇内容中,我们将深入探讨如何实现一个过滤器来包装request...
在Java Web开发中,Filter(过滤器)是一个重要的组件,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在MyEclipse集成开发环境中创建Filter,并通过实际操作来帮助理解其工作原理。 首先,我们...
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...
在这个例子中,`<init-param>`标签用于设置字符编码和忽略大小写的参数。以下是配置示例: ```xml <filter> <filter-name>EncodingFilter</filter-name> <filter-class>...