拦截器里面如何传递参数,在线等

stevenzxl 2011-08-16 02:13:06
原来我通过action后面带参数这样的办法来传递参数
http://test.com/index.nhn?id=XXXXX
然后在action里面通过String id = request.getParamter("id");
现在我想把参数隐藏了,访问方法变成下面的(因为参数的值是固定的)
http://test.com/index.nhn
我想在拦截器里面把这个参数设置一下
我建了一个HttpServletRequest request = ServletActionContext.getRequest();
然后往request里面去set这个id的值
但是我程序跟踪下来发现这个request是空的,不知道为啥没进去
请问高手这个参数应该怎么传递呢?
着急在线等
...全文
990 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 langjian305 的回复:]
request.setAttribute("appId", "O_ZGN"); 当然要用request.getAttribute("appId");取值啦 ,用request.getParameter("appId");怎么能取到值呢????
[/Quote]
那我前面怎么set后面才能用request.getParameter("appId");取得呢?
langjian305 2011-08-16
  • 打赏
  • 举报
回复
request.setAttribute("appId", "O_ZGN"); 当然要用request.getAttribute("appId");取值啦 ,用request.getParameter("appId");怎么能取到值呢????
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 trocp 的回复:]
引用 6 楼 stevenzxl 的回复:

引用 3 楼 trocp 的回复:
在过滤器中用setAttribute
在Action中用getAttribute

注意看我问题,我set了,但是后面的request里面没有我set的内容


我知道你用的setAttribute,但是在action中通过setter自动获取客户端参数用的是request.getParameter……
[/Quote]
你说的对,确实是这样,结帖给分了
oO临时工Oo 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 stevenzxl 的回复:]

HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("appId", "O_ZGN");
String id = request.getAttribute("appId").toString();//在这里还有值呢
AppContext appContext = ((App……
[/Quote]

String appId = request.getParameter("appId");//这里就取不到了

要用String appId = request.getAttribute("appId");

oO临时工Oo 2011-08-16
  • 打赏
  • 举报
回复
或者重写request的getParameter方法。

public class MyRequestWarpper extends HttpServletRequestWrapper {

private HttpServletRequest request;

public MyRequestWarpper(HttpServletRequest request) {
super(request);
this.request = request;
}

@Override
public String getParameter(String parameter) {
if ("id".equals(parameter)) {
return "1111";//这里返回固定的ID值。
}
return request.getParameter(parameter);
}
}



过滤器中

request = new MyRequestWarpper(request); 
filterChain.doFilter(request, response);
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("appId", "O_ZGN");
String id = request.getAttribute("appId").toString();//在这里还有值呢
AppContext appContext = ((AppContextFactory) SpringBeanFactory.getBean("Bean")).newAppContext(request);//传递到这里,调了一个工厂方法

public AppContext newAppContext(HttpServletRequest request) throws Exception {

String appId = request.getParameter("appId");//这里就取不到了
........
}
oO临时工Oo 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 stevenzxl 的回复:]

引用 3 楼 trocp 的回复:
在过滤器中用setAttribute
在Action中用getAttribute

注意看我问题,我set了,但是后面的request里面没有我set的内容
[/Quote]

我知道你用的setAttribute,但是在action中通过setter自动获取客户端参数用的是request.getParameter,而不是getAttribute,
所在的意思是你可以在action中自己写代码通过getAttribute获取值。
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 softroad 的回复:]
request, response要转发
[/Quote]
大哥说中文吧,小弟外语不好
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 langjian305 的回复:]
你可以在页面里放一个隐藏的文本框 然后再里面写这个id的值 用post方法传值啊
[/Quote]
注意看我问题,直接进action不走jsp
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 trocp 的回复:]
在过滤器中用setAttribute
在Action中用getAttribute
[/Quote]
注意看我问题,我set了,但是后面的request里面没有我set的内容
softroad 2011-08-16
  • 打赏
  • 举报
回复
request, response要转发
langjian305 2011-08-16
  • 打赏
  • 举报
回复
你可以在页面里放一个隐藏的文本框 然后再里面写这个id的值 用post方法传值啊
oO临时工Oo 2011-08-16
  • 打赏
  • 举报
回复
在过滤器中用setAttribute
在Action中用getAttribute
stevenzxl 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 softroad 的回复:]
rs.getRequestDispatcher("error.jsp").forward(rs, re);
[/Quote]
大哥你这是啥意思?
softroad 2011-08-16
  • 打赏
  • 举报
回复
rs.getRequestDispatcher("error.jsp").forward(rs, re);

81,094

社区成员

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

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