欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-25 20:52:13
...
用过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初始化过程仔细看看

相关标签: JSP Servlet