返回信息流如题,具体情况是:我要在处理完一个用户请求后,返回一个页面,在这页面上直接用jsp:forward将请求转发到另一个操作去(也就是省略掉返回给客户端,客户端重新发起请求的消耗),由于网站架构的原因,每个操作都只能使用request中的parameter的数据,而无法使用attribute的数据。而从一个操作到另一个操作只能通过返回页面,页面重新提起请求的方式。所以现在能想到的只有用这种forward的方法处理。
但是问题就来了:由于是在服务器端进行转发,request是旧的,但新的操作需要的数据稍有不一样,需要修改request中某些parameter的值。郁闷的是request不提供setParameter的方法....所以想请教一下是否有什么方法能修改parameter的值或者重新组织request?谢谢了~
另:如果使用<jsp:forward page="/example.jsp?param=111"/>这类方法,因为原来请求的表单中既有param变量,会导致最后传进去的是一个数组
这是一条镜像帖。来源:北邮人论坛 / www-technology / #9384同步于 2010/1/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
怎样在页面上修改request中的parameter值?
uriel
2010/1/6镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
上网查了查,初步有个想法:在页面用response.sendRedirect("/icbcinbs.CServlet?opFlag=111");进行跳转不知道可不可以,家里没环境试,明天上班试试看
哪位牛人还有没有其他更好的做法的?
我要在处理完一个用户请求后,返回一个页面,在这页面上直接用jsp:forward将请求转发到另一个操作去(也就是省略掉返回给客户端,客户端重新发起请求的消耗)
没太看懂 是不是可以返回一个页面 页面有个form 表单里面是要提交的数据 在这个页面的onload里面直接将这个form提交
【 在 uriel 的大作中提到: 】
: 如题,具体情况是:我要在处理完一个用户请求后,返回一个页面,在这页面上直接用jsp:forward将请求转发到另一个操作去(也就是省略掉返回给客户端,客户端重新发起请求的消耗),由于网站架构的原因,每个操作都只能使用request中的parameter的数据,而无法使用attribute的数据。而从一个操作到另一个操作只能通过返回页面,页面重新提起请求的方式。所以现在能想到的只有用这种forward的方法处理。
: 但是问题就来了:由于是在服务器端进行转发,request是旧的,但新的操作需要的数据稍有不一样,需要修改request中某些parameter的值。郁闷的是request不提供setParameter的方法....所以想请教一下是否有什么方法能修改parameter的值或者重新组织request?谢谢了~
: 另:如果使用<jsp:forward page="/example.jsp?param=111"/>这类方法,因为原来请求的表单中既有param变量,会导致最后传进去的是一个数组
嗯,你这也是一种方法,但onload提交是在客户端进行的操作,我想要的是在服务器编译这个页面时就直接跳转转发
【 在 seaver 的大作中提到: 】
:
: 我要在处理完一个用户请求后,返回一个页面,在这页面上直接用jsp:forward将请求转发到另一个操作去(也就是省略掉返回给客户端,客户端重新发起请求的消耗)
: 没太看懂 是不是可以返回一个页面 页面有个form 表单里面是要提交的数据 在这个页面的onload里面直接将这个form提交
: ...................
对,就是让客户端一次接触,过程中将表单的一些值修改后提交给另一个servlet
【 在 eaglebaby 的大作中提到: 】
: 你是让客户端一次接触,然后过程中触发你的另一个表单的提交?
问题已解决,其实挺简单的
使用Map map=request.getParameterMap();方法取得parameter的map进行操作
在WebSphere1.5以下版本时,getParameterMap()方法返回的其实是被重写的类似hashtable的Map,所以不能直接用put()之类的方法,必须强制转换为java.util.Map类型后进行操作
1.5版本以上,getParameterMap()方法返回的就是标准的Map类型,可以直接操作
如果使用tomcat的话,getParameterMap()方法返回的是org.apache.catalina.util.ParameterMap,这种类型本来是无法操作的,只能用反射将当前运行的ParameterMap解锁
Method method=requestParams.getClass().getMethod("setLocked",new Class[]{boolean.class});
method.invoke(requestParams,new Object[]{new Boolean(false)});
然后就可以进行操作了