在我的注销操作中,我想使 session 无效/清除 session ,我想知道这三种方法之间有什么区别以及哪种方法更好:
-> ActionContext.getContext().getSession().clear();
-> getHttpServletRequest().getSession().invalidate()//servlet api
-> ((org.apache.struts2.dispatcher.SessionMap) session).invalidate(); //Struts 2 SessionAware interface
此外,struts 2 的“action session”对象和 servlet http session 对象之间有什么区别吗?
最佳答案
首先是最后一个问题:是的,正如文档所示。
SessionMap 是一个薄外观,它实现了 Map 接口(interface)并允许直接访问一些底层实现(例如,invalidate)。
第一个问题:在后两个问题之间,第一个问题略有不同。
clear
只是删除条目,IIRC 它实际上不使 session 无效。我倾向于 SessionMap.invalidate() ,因为我试图避免直接与 servlet 规范绑定(bind),但在这种情况下我不认为它是一个大问题,特别是因为它只可能在少数地方被调用,例如注销。
关于java - 清除 session 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764049/