JSP中如何删除request中的parameter?

右领军大都督 2011-05-21 10:51:30
从jsp页面的URL代入两个参数,一个ID一个NAME,但是两个有时只有其中一个有值,另一个为空字符,连接如下:
http://localhost:8080/TEST/helloWorld.do?id=&name=xiaou
我想做一个公共的东西,在方法action执行之前,就降request.getParameterMap()中value为空字符或者为null的参数去掉,直接修改request.getParameterMap()会出错,因为该map被锁掉了。
请问大大们有什么办法可以修改它?
...全文
965 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxgleo 2012-08-06
  • 打赏
  • 举报
回复
你直接写个request的子类装饰器类,用这个子类按你的要求装饰下原始的request对象,再把这个子类实例作参数传递给需要调用的DAO方法接口不就可以了?
寻找板砖中... 2012-07-19
  • 打赏
  • 举报
回复
同样的问题,顶起
龙四 2011-05-22
  • 打赏
  • 举报
回复
其实也很简单,用装饰者模式搞一下即可,看:
public class MyServletRequest implements HttpServletRequest {
private HttpServletRequest request;

public MyServletRequest(HttpServletRequest request) {
this.request = request;
}

public Map getParameterMap() {
//TODO 在这里过滤
}
}



传入那个dao的时候,只需传入new MyServletRequest(原本的reuqest)即可
  • 打赏
  • 举报
回复
顶一下。。
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复 1
[Quote=引用 16 楼 jk19910410 的回复:]
你们的这项目,就是设计的一团糟
[/Quote]
关键问题不是设计,而是这个技术是否可以实现。我发现大大们很奇怪,怎么对我提的问题不给解答,一直说设计是否良好!!
我想问,如果你们公司的项目设计你认为不好,你就不做了是么!?
jk19910410 2011-05-21
  • 打赏
  • 举报
回复
你们的这项目,就是设计的一团糟
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liutianxiong888 的回复:]
DAO要request的目的,就是要获取里面的参数值
在Action里获取了,传过去不行吗?
我不说重写request,我是说把request传过去!
[/Quote]
对的,确实是只能传request进去,但问题是它的dao里没有对参数的正确性进行判断的操作,可页面上确实可能出现某个参数为空的情况,而且是get方式,在url里传的,所以我才希望能有个什么办法,直接把request里参数值为空的参数,直接去掉,再把request传进去。不知道这样可行否
Spring89 2011-05-21
  • 打赏
  • 举报
回复
DAO要request的目的,就是要获取里面的参数值
在Action里获取了,传过去不行吗?
我不说重写request,我是说把request传过去!
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liutianxiong888 的回复:]
OK,但是你的提问,貌似不是这个!·
所以我就给出了上面的代码!
DAO 要request做什么,我想不通!
获取数据吗?Action就可以!
你把request传到DAO不就可以了吗?
[/Quote]

DAO要request的目的,就是要获取里面的参数值,它好用这些参数到数据库里匹配数据然后返回给我。
你说的重写request的办法我了解了,但是还有个问题,HttpServletRequest是个借口,那我到底应该重写哪个实现啊?谢了
Spring89 2011-05-21
  • 打赏
  • 举报
回复
OK,但是你的提问,貌似不是这个!·
所以我就给出了上面的代码!
DAO 要request做什么,我想不通!
获取数据吗?Action就可以!
你把request传到DAO不就可以了吗?
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
我原先以为写个过滤器之类的东西就可以搞定呢,没想到还整不了,看来这是个难题啊!!!
sqp907372108 2011-05-21
  • 打赏
  • 举报
回复
remove("name")
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liutianxiong888 的回复:]
你这逻辑有问题,完全不合理!
DAO是干什么的?DAO要request,这......
[/Quote]
呵呵,我们不讨论逻辑,只讨论技术。那个dao设计的合理性于我无关,我也管不了
Spring89 2011-05-21
  • 打赏
  • 举报
回复
你这逻辑有问题,完全不合理!
DAO是干什么的?DAO要request,这......
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liutianxiong888 的回复:]
我晕,上面的getParameterMap(HttpServletRequest request)是我自己写的,不是request里提供的!
[/Quote]
对的,我知道,我的意思是,我使用的dao工具包只接受一个HttpServletRequest,不是map,所以按照你的说法对request.getParameterMap()处理后再返回一个正确的map对象,对我来说没什么意义,因为我只能传一个HttpServletRequest对象给dao。
还是说,你的意思是我需要重写HttpServletRequest ?
Spring89 2011-05-21
  • 打赏
  • 举报
回复
我晕,上面的getParameterMap(HttpServletRequest request)是我自己写的,不是request里提供的!
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liutianxiong888 的回复:]
request.getParameterMap();
直接用这个方法是不好用!
你可以自己重写这个方法呀!
我都是重写的这个方法,代码如下:

Java code

//获取表单上的值,并封装到map里
protected Map getParameterMap(HttpServletRequest request){
Map map = new HashMap();
……
[/Quote]

你好,朋友,是这样的,他们这个工具包是要求传入request,然后它给我一个查询结果,我没法控制里面的读取机制。
请问还有什么办法?
Spring89 2011-05-21
  • 打赏
  • 举报
回复
request.getParameterMap();
直接用这个方法是不好用!
你可以自己重写这个方法呀!
我都是重写的这个方法,代码如下:

//获取表单上的值,并封装到map里
protected Map getParameterMap(HttpServletRequest request){
Map map = new HashMap();
Enumeration en = request.getParameterNames();
while(en.hasMoreElements()){
String param = en.nextElement().toString();
String value = request.getParameter(param);
map.put(param, value);
}
return map;
}

然后你在对这段代码做个判断就可以了。
右领军大都督 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouyusunquan 的回复:]
你为什么不在dao里面判断
[/Quote]
因为dao是别人写的工具包,我们无权修改。
大大们,我只问这个技术问题,别帮我想其他解决办法了好么,我就问这个问题
zhouyusunquan 2011-05-21
  • 打赏
  • 举报
回复
你为什么不在dao里面判断
加载更多回复(7)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧