- 浏览: 780000 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (256)
- ssh (18)
- webservice (8)
- java基础 (38)
- j2EE方方面面 (17)
- 随意涂鸭!呵呵 (2)
- 数据库 (22)
- work (10)
- XML与XML解析 (9)
- 测试 (2)
- sso (1)
- ldap (6)
- java 模板技术 (4)
- 版本管理 (1)
- 每日小点滴 (26)
- javascript (26)
- Jakarta Commons (2)
- css (6)
- 设计 (3)
- Eclipse插件开发 (3)
- BAP (3)
- web控件 (2)
- java加密解密 (4)
- 调优 (6)
- 界面技术 (3)
- java多线程 (6)
- 互联网 (2)
- 日志管理 (4)
- java调度 (3)
- rest (0)
- Python (2)
- mobile (2)
- 2016的故事 (4)
- Docker (1)
- NOSQL_Hadoop (0)
最新评论
-
promiseloney:
这个女程序员厉害了。。。
JVM调优:GC 参数 -
zxjlwt:
可以通过WebService上传一个文件吗?素人派http:/ ...
webservice传送XML大小估算 -
liaoshaoyang:
写的不错嘛 可以做参考
权限管理设计一 -
aaaaaaaaabaas:
谢谢,对我有帮助
Apache Commons Configuration使用入门 -
Jack_Wilshere:
com.smartdot.pdm.business.corp. ...
java导出txt
在struts1的action中, status参数通过param的方式传到action中,即以下代码
document.form1.action = '${pageContext.request.contextPath}/crs/meetingAction.do?method=editSaveMeeting&status='+status;
在action中操作完status参数后,需要转到另一个action,但是需要改变status的值,情理之中,想到下面的方法,
request.getParameterMap().remove("status");
经测试在,转到下一个action中的,status值还存在。
在网上搜索到以下文章,
近做项目,用到request.getParameterMap();在对返回的Map进行操作的时候产生异常 Cannot find message associated with key parameterMap.locked, 网上找了一下解决方法,记录一下,希望对产生同样问题的朋友有所帮助,如下: Map requestParams=request.getParameterMap(); ...... requestParams.remove("key"); 运行时会报错误: Cannot find message associated with key parameterMap.locked at org.apache.catalina.util.ParameterMap.remove(ParameterMap.java:204) 从输出的错误信息发现,原来request.getParameterMap();返回的不是一般的Map,而是org.apache.catalina.util.ParameterMap! 反编译ParameterMap,发现其继承自HashMap: public final class ParameterMap extends HashMap 其中有一个加锁的方法,问题就出在这里了: public void setLocked(boolean locked) { this.locked = locked; } 其他所有修改内容的方法,都会判断是否上锁。如果处于锁定状态,就会抛出异常,比如最常用的put方法: public Object put(Object key, Object value) { if(locked) throw new IllegalStateException(sm.getString("parameterMap.locked")); else return super.put(key, value); } 原来如此! 于是,从Tomcat下拷来了catalina.jar,代码写成 ParameterMap requestParams=(ParameterMap)request.getParameterMap(); requestParams.setLocked(false); requestParams.remove("key"); ...... 运行时还是报类型转换错误:不能从org.apache.catalina.util.ParameterMap转换为org.apache.catalina.util.ParameterMap 用instanceof判断,返回的也是false,有点晕,呵呵 最后,只好用反射来搞定了: Method method=requestParams.getClass().getMethod("setLocked",new Class[]{boolean.class}); method.invoke(requestParams,new Object[]{new Boolean(false)}); OK!运行通过!锁定已经接触,可以像操作普通的Map一样,修改request的请求参数了! 文章出处:http://www.diybl.com/course/3_program/java/javashl/2008321/105928.html
虽然已可以解决,但是用了反射机制,感觉比较麻烦,
于是另寻解决办法。
我们公司用到了Jakarta Commons 组件,大家可以在网上查一下,很简单实用,
其中有个 import org.apache.commons.beanutils.DynaBean;类
在Action中,可以用以下代码:
public ActionForward meetingList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaBean bean = (DynaBean) form; bean.set("status", "0"); }
将form中强制转换为DynaBean类,然后直接用set方法就可以把 request.getParameterMap()中的key删掉!
评论
4 楼
aaronhugo
2011-08-16
这段时间突然遇到,总算有办法了。
3 楼
jessdy
2009-09-03
真是不择手段啊
2 楼
litchi
2009-04-09
返回的 parameterMap是不可变的,因此网上流传广泛的这个版本实际上是没法做到修改parameter的。。。
1 楼
litchi
2009-04-09
正好今天也碰到这个问题,谢谢啊
发表评论
-
Spring boot junit test
2020-06-16 16:06 3581. 下面的AgreementService 引用了 Fei ... -
Istio
2020-06-15 09:04 280容器编排平台使 用了实例scaling来对流量进行管理。而 ... -
Spring boot junit test
2020-06-14 11:26 277Refer to: https://www.baeldu ... -
Gradle task 接收参数
2020-06-09 09:55 1502//1. 执行gradle task 时传递参数 ./g ... -
Git
2018-07-29 11:49 482一、 跟踪分支与远程 ... -
企业级API网关
2018-07-26 21:17 640API网关就是用来代替控制器层 Controller,使用A ... -
分步式事务
2018-07-25 21:46 639分布式事务场景: 不同系统,不同数据库 例如,外卖点单后 ... -
转载:IBM红米连接wifi的方法
2014-05-05 16:47 1506转载自:http://bbs.xia ... -
English interview
2013-10-14 14:42 1023Good morning ! It is really my ... -
需要测试一下的问题
2013-04-26 10:15 0<update id="updateSit ... -
int i 引出JVM故事
2013-02-27 18:47 763public class TestDuanqf { ... -
Win7快速启动栏设置及防止消失方法
2011-03-07 10:08 2266转载自:http://blog.s ... -
渐老的愤青
2010-06-11 10:26 1551我发现自己老了,因为睡得太晚、睡眠不足身体各项机能都下降,脾气 ... -
用DIV做带横向滚动条的多选框
2010-05-10 11:36 3454<!DOCTYPE HTML PUBLIC " ... -
ibatis 缓存 cacheModel
2009-07-30 13:40 1207<cacheModel type="LRU& ... -
PropertySet 学习一
2009-05-21 16:01 2856http://www.opensymphony.com/pro ... -
java 路径的故事
2009-05-14 09:44 1440JSP中:${pageContext.request.cont ... -
发送激活码确认
2009-04-23 16:44 2912一、需求 最近做某项目的用户管理( ... -
cookie介绍
2009-03-16 11:30 4743由于要做一个简单的SSO,所以学习了cookie部分,原来感觉 ... -
网络中工作组与域的解释
2009-03-16 10:30 1482为什么要组建局域网 ...
相关推荐
`request.getParameterMap()`、`request.getParameter()`和`request.getParameterValues()`是三个重要的方法,它们分别用于获取不同类型的请求参数。接下来,我们将深入探讨这三个方法的功能、用法以及它们之间的...
在Java Web开发中,`getParameterMap()`是一个非常关键的方法,尤其在Servlet编程中。这个方法是Servlet接口中的一个成员,用于获取HTTP请求中所有参数的映射。在深入讲解`getParameterMap()`之前,我们先简单回顾...
Request对象封装了客户端发送到服务器的所有数据,包括URL参数、请求头、请求体等。在某些场景下,可能需要对这些参数信息进行修改,比如安全过滤、数据校验或者日志记录等。本程序就是针对这种情况设计的一个实用...
在Java Servlet中,可以使用`getParameter()`或`getParameterValues()`方法,但要注意,如果是POST请求,需要先调用`request.getParameter()`之前调用`request.getParameterNames()`或`request.getParameterMap()`以...
request 对象是 JSP 中九个可供使用的隐式对象之一,它属于输入/输出对象,主要用于处理客户端传送给服务器端的请求参数。 request 对象提供了多种方法来获取请求参数,例如: 1. String getParameter(String name...
java request.getParameter中文乱码解决方法 在 Java Web 开发中,request.getParameter() 获取 URL 中文参数乱码是非常常见的问题。今天,我们将分享几个解决中文乱码的方法,以便大家可以参考。 问题分析 在 ...
另外,`request`对象还有其他重要方法,比如`getLocale()`用于获取用户的首选语言,`getAttribute()`和`setAttribute()`用于在请求作用域内存储和检索对象,以及`getParameterMap()`返回所有请求参数的键值对。...
- `getParameterMap()`:返回一个`Map`,键是参数名,值是对应的参数值列表(如果参数有多个值,列表长度可能超过1)。 2. **处理表单数据**: - 当用户通过HTML表单提交数据时,Request对象同样能处理这些数据。...
例如,获取请求方法(`request.getMethod()`)、请求URI(`request.getRequestURI()`)、请求参数(`request.getParameterMap()`)等。这些信息在处理请求时非常有用,可以辅助我们理解用户的操作意图。 总的来说,通过对...
`getParameterMap()`返回一个`Map, String[]>`,其中键是参数名,值是该参数的所有值(因为同一个参数名可能对应多个值)。 然而,需要注意的是,`HttpServletRequest`对象通常是只读的,直接修改`getParameterMap...
Map, String[]> parameterMap = request.getParameterMap(); for (Map.Entry, String[]> entry : parameterMap.entrySet()) { String paramName = entry.getKey(); String[] paramValues = entry.getValue(); // ...
这个子类需要覆盖`getParameter`、`getParameterMap` 和 `getParameterValues` 等方法,以便在获取参数时进行修改。例如,我们可能需要将所有空字符串参数转换为`null`,或者替换敏感字符。 ```java public class ...
- `request.getContextPath()`、`request.getMethod()`、`request.getProtocol()`、`request.getQueryString()`、`request.getRequestedSessionId()`、`request.getRequestURI()`、`request.getRemoteAddr()`和`...
快速解决SpringMVC @RequestBody 用map接收请求参数的问题 在 SpringMVC 中,使用 @RequestBody 注解可以将请求体中的数据转换为 Java 对象,但是在使用 map 接收请求参数时,经常会遇到一些问题。本文将讨论如何...
The doFilter method of the Filter is called by the container each time a request/response pair is passed through the chain due to a client request for a resource at the end of the chain. doGet...
- `getParameterMap()`:获取所有参数的Map对象,键为参数名,值为参数值列表。 处理中文乱码问题: - GET方式提交时,由于默认编码问题,可以通过获取字节数组并转换编码解决,如`name = new String(name....
Java 还提供了一个更方便的方法来获取所有请求参数,即使用 `request.getParameterMap()` 方法,该方法返回一个 `Map` 对象,其中包含所有的请求参数。 ```java Map, String[]> parameterMap = request....
- 可以通过request对象获取客户端的请求参数,例如`getParameter()`, `getParameterNames()`, `getParameterValues()`和`getParameterMap()`方法。 4. **response对象**(`javax.servlet.ServletResponse`): - ...
- `request.getParameterMap()` 获取所有表单字段及其值的映射。 - **3.1.6 表格** - 使用 `request.setAttribute("key", "value")` 设置属性以供后续使用。 - **3.2 response对象** - 用于向客户端发送响应。 ...