在Action中通过两种方式往session中存取数据的一个问题

在研究ServletActionContext.getRequest().getSession()和ActionContext.getcontext().getSession()两者的区别和联系时发现个问题,就是第10句的输出,这里还有test=testValue这个键值对,参考第15句的输出,这个地方该怎么理解呢?我感觉没完全想明白,还请各位给分析一下,先谢谢了。
xxxAction.java


1  Map session1 = ActionContext.getContext().getSession();
2  HttpSession session0 = ServletActionContext.getRequest().getSession();
3  session0.setAttribute("test", "testValue");

4  System.out.println("ServletActionContext.getRequest().getSession():" + session0);
5  System.out.println("ActionContext.getContext().getSession():" + session1);
6  System.out.println("session1.get(test):" + session1.get("test"));
7  System.out.println("session0.getAttribute(test):" + session0.getAttribute("test"));

8  ServletActionContext.getRequest().getSession().removeAttribute("test");
9  System.out.println("ServletActionContext.getRequest().getSession().removeAttribute(test) complete.");

10 System.out.println("ActionContext.getContext().getSession():" + session1);
11 System.out.println("session1.get(test)" + session1.get("test"));
12 System.out.println("session0.getAttribute(test):" + session0.getAttribute("test"));

13 session1.remove("test");
14 System.out.println("ActionContext.getContext.getSession.remove(test) complete.");
15 System.out.println("ActionContext.getContext().getSession():" + session1);

输出:

ServletActionContext.getRequest().getSession():org.apache.catalina.session.StandardSessionFacade@16023aaa
ActionContext.getContext().getSession():{test=testValue}
session1.get(test):testValue
session0.getAttribute(test):testValue

ServletActionContext.getRequest().getSession().removeAttribute(test) complete.
ActionContext.getContext().getSession():{test=testValue}
session1.get(test)null
session0.getAttribute(test):null

ActionContext.getContext.getSession.remove(test) complete.
ActionContext.getContext().getSession():{}
阅读 2.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题