struts2疑难之---ActionContext初始化问题

阅读更多
用过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

testCookiePage.jsp

这样就可以得到正常的request,一切都正常
debug发现,这个时候ActionContext.getContext()的map中有27个key,包括request,response,
有时间还得把ActionContext初始化过程仔细看看

你可能感兴趣的:(JSP,Servlet)