浏览 3735 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-30
比如 需要用session,cookie之类的,remoteAddr等等 一般怎么处理呢 HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); 这样既可得到request 但是ActionContext.getContext()里面一定有HTTP_REQUEST这个值对吗,不一定 简单说 ,如果Http请求没有使用Action请求,那么这个ActionContext.getContext(),其实是个Map,里面的key大概是6个,没有request,response,比如你某个请求是一个jsp,在jsp中使用了某个帮助类,比如CookieUtil来判断并获取cookie,这时候就出问题了 request.getCookies();就有问题了,debug发现request是null 不过如果把这个jsp写成一个没有Action类的action <action name="testCookie"> <result>testCookiePage.jsp</result> </action> 这样就可以得到正常的request,一切都正常 debug发现,这个时候ActionContext.getContext()的map中有27个key,包括request,response, 有时间还得把ActionContext初始化过程仔细看看 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-31
ServletActionContext.getRequest();
|
|
返回顶楼 | |
发表时间:2009-12-31
wangshare 写道 用过Struts2的兄弟们都知道,在action中不需要再使用 response ,request,因为架构设计中已经将Action和servlet解耦,可是如果一旦需要使用response,request等等的时候,怎么办?
比如 需要用session,cookie之类的,remoteAddr等等 一般怎么处理呢 HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); 这样既可得到request 但是ActionContext.getContext()里面一定有HTTP_REQUEST这个值对吗,不一定 简单说 ,如果Http请求没有使用Action请求,那么这个ActionContext.getContext(),其实是个Map,里面的key大概是6个,没有request,response,比如你某个请求是一个jsp,在jsp中使用了某个帮助类,比如CookieUtil来判断并获取cookie,这时候就出问题了 request.getCookies();就有问题了,debug发现request是null 不过如果把这个jsp写成一个没有Action类的action <action name="testCookie"> <result>testCookiePage.jsp</result> </action> 这样就可以得到正常的request,一切都正常 debug发现,这个时候ActionContext.getContext()的map中有27个key,包括request,response, 有时间还得把ActionContext初始化过程仔细看看 不知道你那里还需要这两个对象,完全是为了解耦才去掉的,cookie也有对应的发那个发,而你一定要的话,需要你的action实现servletRequestAware 或者 servletResponseAware接口就好了!! |
|
返回顶楼 | |
发表时间:2010-01-04
楼上正解!
|
|
返回顶楼 | |