`
tangyanbo
  • 浏览: 265270 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

更改Request Parameters中的值

 
阅读更多

1. 定义ParameterRequestWrapper 继承HttpServletRequestWrapper

 

public class ParameterRequestWrapper extends HttpServletRequestWrapper {

	private Map<String,String[]> params;

	public ParameterRequestWrapper(HttpServletRequest request, Map<String,String[]> newParams) {
		super(request);
		this.params = newParams;
	}

	@Override
	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();
		}
	}

	@Override
	public Map getParameterMap() {
		return params;
	}

	@Override
	public Enumeration getParameterNames() {
		return new Vector(params.keySet()).elements();
	}

	@Override
	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() };
		}
	}

}

 

2. 在filter 中编写如下代码:

 

public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest httpRequest = (HttpServletRequest) request;
		Map<String, String[]> parametersMap = DataFormat
				.formatRequestParameters(httpRequest);
		ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper(
				httpRequest, parametersMap);
		chain.doFilter(requestWrapper, response);
	}
分享到:
评论

相关推荐

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

    综上所述,这个"java web 修改request携带的参数信息"程序利用Filter技术,对HTTP请求中的参数进行动态修改,以适应特定的需求。在实际开发中,我们需要根据具体业务场景谨慎使用,确保不影响整体应用的稳定性和效率...

    4、azkaban-3.51.0 通过api进行操作azkaban界面功能

    2. **请求参数(Request Parameters)** 在API请求中,通常需要指定各种参数来执行特定操作。例如,登录可能需要用户名和密码作为请求参数。 3. **响应对象(Response Object)** API调用的响应通常是一个JSON...

    wxh 《修改TTL 让攻击你的黑客以为你用Linux

    完成以上步骤后,系统将会使用新的TTL值,你可以通过命令行执行`ping 127.0.0.1`来验证更改是否成功,输出中应显示修改后的TTL值。 #### 结论 虽然修改TTL值不能阻止所有的网络攻击,但它作为一种防御措施,可以在...

    关于applicationx-www-form-urlencoded等字符编码的解释说明

    这种编码格式是标准的编码格式,广泛应用于Web开发中,特别是在开发Restful Web service时尤其重要。 在HTML表单中,Enctype属性指定将数据回发到服务器时浏览器使用的编码类型。application/x-www-form-urlencoded...

    Struts2 Request Process Procedure

    在请求被处理之前,ActionContext对象会被初始化,它保存了请求和响应的相关信息,如session、request、parameters等,是Action和插件之间通信的重要载体。 4. **加载配置**: 过滤器会加载配置信息,包括Action...

    ASP添加、删除、修改代码 实例

    在这个"ASP添加、删除、修改代码实例"中,我们将探讨如何在ASP中实现数据库操作的基本功能,包括添加记录、删除记录以及修改记录。 1. **添加记录**: 在ASP中,添加记录通常涉及到连接数据库、执行SQL插入语句和...

    postman 接口测试

    例如,可以检查返回的状态码是否为200,或者检查响应体中的某个字段是否存在特定值。Tests脚本通常在Request Editor的“Tests”选项卡中编写,执行完成后会在右侧的Test Results面板显示结果。 ```javascript pm....

    pushlet获取参数修改过的jar包

    在使用的过程中发现,如果要在pullEvent()方法中获取参数比较麻烦,查看源码发现nl.justobjects.pushlet.servlet.Pushlet中已经将request参数传进了Session(注意是nl.justobjects.pushlet.core.Session)。...

    spirngmvc拦截器,拦截处理body和表单值.rar

    例如,我们可以在这里解析请求体,无论是JSON数据还是表单数据,以获取body和表单值: ```java @PostMapping("/api") public ResponseEntity&lt;?&gt; handleRequest(@RequestBody MyRequestBody requestBody) { // 请求...

    struts,hibernate的增删改查ppt

    这可以通过请求参数(Request Parameters)完成,例如在URL中附带或隐藏表单字段中提交。 - **action的实现**:Struts的Action类负责接收这些参数,执行相应的业务逻辑,如调用Hibernate的Session接口进行数据库...

    C# Http Post Get

    GET 请求通常用于获取资源的信息,这些请求应该只读取数据,而不会对服务器上的资源造成任何更改。 ##### 1.1 创建 GET 请求的方法 ```csharp public static HttpWebResponse CreateGetHttpResponse(string url, ...

    asp+access编写的留言板

    例如,如果需要编辑某条留言,可以使用UPDATE语句,指定要更改的字段和新值,然后通过ASP执行这个操作。 3. **DELETE**:删除操作用于移除数据库表中的特定记录。在留言板中,如果管理员想要删除一条不合适的留言,...

    struts2_OGNL表达式ActionContext及valuesStack

    首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样的Java代码可以通过`#myBean.myProperty`的OGNL表达式在模板中实现。OGNL...

    springCloud集成ureport,并通过网关访问的源码修改

    在Spring Cloud的微服务架构中,UReport是一个强大的报表工具,它可以被集成到Spring Cloud项目中,用于生成复杂的业务报表。本项目的核心是通过Zuul作为API网关来实现对UReport的访问控制和路由转发。下面我们将...

    Struts2的标签库及OGNL表达式语言

    当Action执行完毕后,其实例会被压入到值栈(ValueStack)中,同时session、request以及其他对象则放入Context Map。开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['...

    struts2文件上传(解决中文乱码)

    另外,对于Action类中接收参数的方法,可以使用注解`@Parameters`或`@Action`来指定参数编码: ```java @Action(value = "upload", results = { @Result(name = "success", location = "success.jsp") }) @...

    Downloads.rar

    可以通过修改JMeter的配置文件(如jmeter.properties)中的“sampleresult.default.encoding”属性来设置正确的输出编码。 4. 系统环境影响:操作系统、JDK版本或JMeter的运行环境可能也会影响字符编码的处理,需要...

    android打开手电筒代码(支持4.x,6.x)

    MY_PERMISSIONS_REQUEST_CAMERA); } ``` 2. **Camera API**: - Android中的Camera API是控制相机硬件的主要接口。手电筒功能通过控制Camera的预览面来开启或关闭闪光灯。 - 首先,我们需要获取Camera实例: ...

    批量更新价格的程序SAP

    - **解释**:进一步解释了该程序的主要用途是批量导入新的物料价格,并直接修改系统中的物料主数据。 - **技术实现**:通过SAP系统的ABAP编程语言编写,实现对数据库中物料主数据表的直接操作。 #### 技术细节...

    精彩编程与编程技巧-用VBA编制Access的查询程序...

    这段代码创建了一个接受`parstatus`参数的查询,并根据该参数过滤`Request`表中的记录。 - **打开查询**:使用`DoCmd.OpenQuery`方法可以打开并执行查询: ```vba DoCmd.OpenQuery qrypar.Name ``` ##### 4. ...

Global site tag (gtag.js) - Google Analytics